Project

General

Profile

script_1_291122.txt

Luc Tran Van, 11/29/2022 09:33 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
-- NEU LA TAM UNG NOI BO
153
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE='I'))
154
		BEGIN
155
			IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE) ='HS')
156
			BEGIN
157
				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) =''))
158
				BEGIN
159
					-- doanptt them note khi xac nhan
160
					IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
161
					BEGIN
162
						SET @p_PROCESS_NOTES = N'Trưởng đơn vị xác nhận phiếu';
163
					END
164

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

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

    
624
			-- KHOI TAI CHINH VA KHOI HO TRO
625
				IF(LEFT(@DEP_CODE_NEXT,5) ='06908' OR @DEP_CODE_NEXT ='0690605' OR @DEP_CODE_NEXT LIKE '06906%')
626
				BEGIN
627
					--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
628
					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'
629
					--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'
630
				END
631
			-- PHONG TRUYEN THONG THUONG HIEU
632
				ELSE IF( @DEP_CODE_NEXT ='0690405')
633
				BEGIN
634
					--LUCTV 29032021: KHOI TAI CHINH SE KHONG CO PTGD NUA, CHI CO GDK TAI CHINH
635
					INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <> 'GDK'
636
					--INSERT INTO @TMP_ROLE  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE,A.LIMIT_TYPE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
637
				END
638
			-- KHOI VAN HANH
639
				--ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
640
				ELSE IF(LEFT(@DEP_CODE_NEXT,5) ='06910')
641
				BEGIN
642
					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'
643
				END
644
			-- 
645
				ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06900') OR (LEFT(@DEP_CODE_NEXT,5)) ='06901' OR (LEFT(@DEP_CODE_NEXT,5))='06904'
646
				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')
647
				BEGIN
648
					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')
649
				END
650
			-- 
651
				ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06907') OR (LEFT(@DEP_CODE_NEXT,5)) ='06909' OR (LEFT(@DEP_CODE_NEXT,5))='06911'
652
				OR (LEFT(@DEP_CODE_NEXT,5))='06922' OR (LEFT(@DEP_CODE_NEXT,5))='06921'  OR (LEFT(@DEP_CODE_NEXT,5))='06920')
653
				BEGIN
654
					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'
655
				END
656
			-- CON LAI
657
				ELSE
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' ORDER BY LIMIT_VALUE
660
				END
661

    
662
				
663
				SET @BRANCH_ID_PROC= (SELECT TOP 1 BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
664
				IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@NEX_ROLE_STEP AND REQ_ID= @p_REQ_PAY_ID))
665
				BEGIN
666
					-- doanptt them note khi xac nhan
667
					IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
668
					BEGIN
669
						SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
670
					END
671
					--SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE LIMIT_VALUE >@t_REQ_AMT 
672
					SET @NEXT_ROLE =(	SELECT TOP 1 ROLE_ID 
673
										FROM @TMP_ROLE 
674
										WHERE 1 =1
675
										AND ROLE_ID NOT IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID) 
676
										AND LIMIT_TYPE ='ADV_PAY' ORDER BY LIMIT_VALUE)
677
					--print @NEXT_ROLE
678
					SET @BRANCH_ID_PROC= (SELECT TOP 1 BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
679
					SET @MESSAGE = (SELECT TOP 1 N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @NEXT_ROLE)
680
					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)
681
					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)
682
					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')
683
				END
684
				ELSE
685
				BEGIN
686
					-- doanptt them note khi xac nhan
687
					IF(@p_PROCESS_NOTES IS NULL OR @p_PROCESS_NOTES = '')
688
					BEGIN
689
						SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
690
					END
691
					ELSE
692
					BEGIN
693
						SET @p_PROCESS_NOTES = (SELECT TOP 1 ROLE_DESC + N': ' + @p_PROCESS_NOTES FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID);
694
					END
695

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

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

    
784
GO
785

    
786
ALTER   PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]
787
@p_REQ_PAY_ID	varchar(15)= NULL,
788
@p_REQ_PAY_CODE	varchar(50)	= NULL,
789
@p_REQ_DT VARCHAR(20)= NULL,
790
@p_BRANCH_ID	varchar(15)	= NULL,
791
@p_DEP_ID	varchar(15)	= NULL,
792
@p_REQ_REASON	nvarchar(MAX)	= NULL,
793
@p_REQ_TYPE	varchar(15)	= NULL,
794
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
795
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
796
@p_REF_ID	varchar(15)	= NULL,
797
@p_RECEIVER_PO	nvarchar(250)	= NULL,
798
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
799
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
800
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
801
@p_REQ_AMT	decimal(18, 0)	= NULL,
802
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
803
@p_MAKER_ID	varchar(15)	= NULL,
804
@p_CREATE_DT	varchar(25)	= NULL,
805
@p_EDITOR_ID	varchar(15)	= NULL,
806
@p_AUTH_STATUS	varchar(1)	= NULL,
807
@p_CHECKER_ID	varchar(15)	= NULL,
808
@p_APPROVE_DT	varchar(25)	= NULL,
809
@p_CREATE_DT_KT	varchar(25)	= NULL,
810
@p_MAKER_ID_KT	varchar(15)	= NULL,
811
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
812
@p_CHECKER_ID_KT	varchar(1)	= NULL,
813
@p_APPROVE_DT_KT  varchar(25)= null,
814
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
815
@p_BRANCH_CREATE	varchar(15)	= NULL,
816
@p_NOTES	varchar(15)	= NULL,
817
@p_RECORD_STATUS	varchar(1)	= NULL,
818
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
819
@p_TRANSFER_DT	varchar(25)	= NULL,
820
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
821
@p_PROCESS	varchar(15)	= NULL,
822
@p_PAY_PHASE VARCHAR(15)= NULL,
823
@p_DVDM_ID VARCHAR(15)= NULL,
824
@p_RATE DECIMAL(18,0) =0,
825
@p_RECIVER_MONEY VARCHAR(15)= NULL,
826
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
827
@p_IS_PERIOD VARCHAR(5) = NULL,
828
@p_PAY_AMT DECIMAL(18,0)= NULL,
829
--doanptt 19/01/2022
830
@p_XMP_TEMP XML = NULL,
831
@p_XMP_CUS XML = NULL,
832
@p_XMP_PAY_ATTACH XML = NULL,
833
@p_XMP_PAY_INVOICE XML = NULL,
834
@p_XMP_ADVANCE_DT_2 XML = NULL,
835
@p_XMP_PAY_SCHEDULE XML = NULL,
836
@p_XMP_PAY_PERIOD XML = NULL,
837
@p_XMP_PAY_METHOD XML = NULL,
838
@p_XMP_PAY_BUDGET XML = NULL,
839
@p_XMP_ADVANCE_DT XML = NULL
840
AS
841
-- Begin Validation update
842
	IF(@p_TYPE_FUNCTION <> 'SEND')
843
	BEGIN
844
		IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT where MAKER_ID = @p_MAKER_ID ))
845
		BEGIN
846
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
847
			RETURN '-1'
848
		END
849
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT where AUTH_STATUS = 'U' AND REQ_PAY_ID = @p_REQ_PAY_ID ))
850
		BEGIN
851
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
852
			RETURN '-1'
853
		END
854
		IF (@p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE ='')
855
		BEGIN
856
			SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được để trống' ErrorDesc
857
			RETURN '-1'
858
		END
859
		IF (EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID))
860
		BEGIN
861
			SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
862
			RETURN '-1'
863
		END
864
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <> 'E' AND AUTH_STATUS <> 'R' AND ISNULL(AUTH_STATUS, '') <> ''))
865
		BEGIN
866
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
867
			RETURN '-1'
868
		END
869
	END
870
	
871
-- End Validation update
872

    
873
/*
874
DECLARE @ERRORSYS NVARCHAR(15) = '' 
875
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
876
	 SET @ERRORSYS = ''
877
IF @ERRORSYS <> '' 
878
BEGIN
879
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
880
	RETURN '0'
881
END 
882
*/
883
	--Luanlt-2019/10/15 Disable Validation
884
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
885
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
886
	--BEGIN
887
	--	SET @ERRORSYS = 'ASSC-00005'
888
	--	SELECT ErrorCode Result, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
889
	--	RETURN '-1'
890
	--END
891

    
892
	DECLARE @BRANCH_TYPE_CR VARCHAR(15), @ROLE_KI_NHAY VARCHAR(50)
893
	--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
894
	--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
895
	--BEGIN
896
	--	SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
897
	--	RETURN '-1'
898
	--END
899
		SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
900
		IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
901
		BEGIN
902
		PRINT @ROLE_KI_NHAY
903
		END
904
		ELSE
905
		BEGIN
906
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
907
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
908
		BEGIN
909
				SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))
910
		END
911
		END
912
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
913
		IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD')  AND @p_REQ_TYPE <> 'I')
914
		BEGIN
915
			SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
916
			RETURN '-1'
917
		END
918
	SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
919
	DECLARE @ACC_NUM VARCHAR(15)
920
	SET @ACC_NUM = (SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)
921

    
922
------------------------------------------------------------------------------------ start validate phần master ------------------------------------------------------------------------------------------------------
923
	IF(@p_TYPE_FUNCTION = 'SEND')
924
	BEGIN
925
		IF (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='')
926
		BEGIN
927
			SELECT '-1' Result, '' REQ_PAY_ID, N'Đơn vị yêu cầu không được để trống' ErrorDesc
928
			RETURN '-1'
929
		END
930
		IF (@p_DEP_ID IS NULL OR @p_DEP_ID ='')
931
		BEGIN
932
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phòng ban đề nghị không được để trống' ErrorDesc
933
			RETURN '-1'
934
		END
935
		IF (@p_REQ_TYPE IS NULL OR @p_REQ_TYPE ='')
936
		BEGIN
937
			SELECT '-1' Result, '' REQ_PAY_ID, N'Loại phiếu yêu cầu không được để trống' ErrorDesc
938
			RETURN '-1'
939
		END
940
		IF (@p_REQ_REASON IS NULL OR @p_REQ_REASON ='')
941
		BEGIN
942
			SELECT '-1' Result, '' REQ_PAY_ID, N'Lý do tạm ứng không được để trống' ErrorDesc
943
			RETURN '-1'
944
		END
945
		IF (@p_REQ_AMT IS NULL OR @p_REQ_AMT = 0)
946
		BEGIN
947
			SELECT '-1' Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn không' ErrorDesc
948
			RETURN '-1'
949
		END
950
		IF (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='')
951
		BEGIN
952
			SELECT '-1' Result, '' REQ_PAY_ID, N'Đơn vị không được để trống' ErrorDesc
953
			RETURN '-1'
954
		END
955

    
956
		
957
		IF (@p_RECIVER_MONEY IS NOT NULL AND @p_RECIVER_MONEY ='' AND @p_REQ_TYPE = 'D')
958
		BEGIN
959
			SELECT '-1' Result, '' REQ_PAY_ID, N'Người nhận tiền tạm ứng không được để trống' ErrorDesc
960
			RETURN '-1'
961
		END
962

    
963
		IF(@p_REQ_TYPE='I')
964
		BEGIN
965
			IF((@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT = ''))
966
			BEGIN
967
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản người đề nghị tạm ứng không được để trống'  ErrorDesc
968
						RETURN '-1'
969
			END
970
			IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID =  @p_REF_ID))
971
			BEGIN
972
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng số '+ @p_RECEIVER_DEBIT + N' không phải tài khoản của user: '+@p_REF_ID  ErrorDesc
973
						RETURN '-1'
974
			END
975
			IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15)
976
			BEGIN
977
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng này không được vượt quá 15 kí tự' ErrorDesc
978
						RETURN '-1'
979
			END
980
		END
981
	END
982
------------------------------------------------------------------------------------ end validate phần master ------------------------------------------------------------------------------------------------------
983

    
984

    
985
-- doanptt 19/01/2022 Khai báo lưới danh sách 
986
	DECLARE @hdocCus INT, @hdocPayAtach INT, @hdocPO INT, @hdocSchedule INT, @hdocRecurring INT, @hdocPeriod INT, @hdocPayMethod INT, @hdocPayBudget INT
987

    
988
		-- THONG TIN KHACH HANG
989
		EXEC sp_xml_preparedocument @hdocCus OUTPUT, @p_XMP_CUS;
990
		-- HOP DONG, CHUNG TU DINH KEM
991
		EXEC sp_xml_preparedocument @hdocPayAtach OUTPUT, @p_XMP_PAY_ATTACH;
992
		-- THONG TIN PO/ HOP DONG
993
		EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_ADVANCE_DT_2;
994
		-- DANH SACH CAC DOT THANH TOAN PO/ HOP DONG
995
		EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_PAY_SCHEDULE;
996
		-- THONG TIN HOP DONG DINH KY
997
		EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT;
998
		-- THONG TIN DINH KY TAM UNG
999
		EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_PAY_PERIOD;
1000
		-- THONG TIN PHUONG THUC THANH TOAN
1001
		EXEC sp_xml_preparedocument @hdocPayMethod OUTPUT, @p_XMP_PAY_METHOD;
1002
		-- THONG TIN HANG MUC NGAN SACH VA CHI PHI
1003
		EXEC sp_xml_preparedocument @hdocPayBudget OUTPUT, @p_XMP_PAY_BUDGET;
1004

    
1005
		-------------------------------------------------------------- start validate các lưới -----------------------------------------------------------------------
1006
-- BEGIN VALIDATE CAC DANH SACH
1007
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='N' AND NOT EXISTS(SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2) WITH(REQ_PAY_ID varchar(15))))
1008
		BEGIN
1009
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách PO/ hợp đồng không được để trống' ErrorDesc
1010
			RETURN '-1'
1011
		END
1012
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='N' AND NOT EXISTS(SELECT * FROM OPENXML(@hdocSchedule, '/Root/XmlDataSchedule', 2) WITH(REQ_PAY_ID varchar(15))))
1013
		BEGIN
1014
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin chi tiết lịch thanh toán PO/ hợp đồng không được để trống' ErrorDesc
1015
			RETURN '-1'
1016
		END
1017

    
1018
		IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='Y' OR @p_IS_PERIOD IS NULL) AND NOT EXISTS(SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2) WITH(REQ_PAY_ID varchar(15))))
1019
		BEGIN
1020
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin hợp đồng định kì không được phép để trống' ErrorDesc
1021
			RETURN '-1'
1022
		END
1023

    
1024
		IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='Y' OR @p_IS_PERIOD IS NULL) AND NOT EXISTS(SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2) WITH(REQ_PAY_ID varchar(15))))
1025
		BEGIN
1026
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin định kỳ tạm ứng không được phép để trống' ErrorDesc
1027
			RETURN '-1'
1028
		END
1029

    
1030
		IF(@p_REQ_TYPE = 'D' AND NOT EXISTS(SELECT * FROM OPENXML(@hdocCus, '/Root/XmlDataCus', 2) WITH(CONTRACT_ID varchar(15))))
1031
		BEGIN
1032
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách khách hàng không được để trống' ErrorDesc
1033
			RETURN '-1'
1034
		END
1035
-- END VALIDATE CAC DANH SACH
1036
		-------------------------------------------------------------- end validate các lưới -----------------------------------------------------------------------
1037
	
1038
	-- 19-11-2019 LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU KHI UAT
1039
	-- NEU TAM UNG CHO NHA CUNG CAP THI DOT THANH TOAN KHONG DUOC PHEP NULL
1040
	-- SO TIEN THANH TOÁN PHAI LON HON KHONG
1041
		IF(@p_REQ_AMT <=0)
1042
		BEGIN	
1043
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
1044
			RETURN '-1'
1045
		END
1046
	 -- END VALIDATE TRONG QUA TRINH TEST UAT
1047
		BEGIN TRANSACTION
1048
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
1049
		--BEGIN
1050
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
1051
		--END
1052
		UPDATE TR_REQ_ADVANCE_PAYMENT SET 
1053
		REF_ID = @p_REF_ID,
1054
		DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,
1055
		REQ_AMT = @p_REQ_AMT,
1056
		NOTES= @p_NOTES,
1057
		REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO =@p_RECEIVER_PO, RECEIVER_DEBIT= @p_RECEIVER_DEBIT,
1058
		REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID,REQ_PAY_CODE = @p_REQ_PAY_CODE, PAY_PHASE =@p_PAY_PHASE,
1059
		AUTH_STATUS='E', DVDM_ID=@p_DVDM_ID, RATE =@p_RATE,REQ_TYPE_CURRENCY =@p_REQ_TYPE_CURRENCY, RECIVER_MONEY= @p_RECIVER_MONEY, 
1060
		TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE,IS_PERIOD =@p_IS_PERIOD, PAY_AMT = @p_PAY_AMT
1061
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1062
		IF @@Error <> 0 GOTO ABORT
1063
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
1064
			
1065
			-- KIEM TRA NEU TAM UNG THANH TOAN
1066
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
1067
			BEGIN
1068
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID=@p_REQ_PAY_ID
1069
				DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID=@p_REQ_PAY_ID
1070
				DECLARE @PO_ID varchar(15),@TERM_PAY varchar(15),@AMT_PAY_SCHEDULE decimal(18,0),@REQ_ADV_ID_SCHE VARCHAR(15),@AMT_ADVANCE_SCHEDULE decimal(18,0),@AMT_PAY_DO decimal(18,2),
1071
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
1072
				@REF_ID VARCHAR(15),@REQ_PAY_DESC NVARCHAR(500), @REQ_PAY_ENTRIES NVARCHAR(250),@CURRENCY VARCHAR(15),@RATE DECIMAL(18,0),@CUST_ID VARCHAR(15),
1073
				@EMP_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2),@CHECK_IN VARCHAR(15),@IS_CLOSED VARCHAR(1)= NULL,@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15)
1074
				DECLARE @TYPE_COST VARCHAR(25), @FR_LEVEL INT ,@TO_LEVEL INT
1075
				DECLARE XmlDataPO CURSOR FOR
1076
				SELECT *
1077
				FROM
1078
				OPENXML(@hdocPO, '/Root/XmlDataPO', 2)--Thông tin PO/ hợp đồng
1079
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
1080
				OPEN XmlDataPO;
1081
				DECLARE @INDEX_PO INT =0
1082
				SET @INDEX_PO = 0
1083
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1084
				WHILE @@fetch_status=0 
1085
				BEGIN
1086
					SET @INDEX_PO = @INDEX_PO +1
1087
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1088
					IF(@p_TYPE_FUNCTION ='SEND')
1089
					BEGIN
1090
					
1091
					
1092
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1093
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
1094
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1095
					BEGIN
1096
						ROLLBACK TRANSACTION
1097
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO/ hợp đồng số '+
1098
						(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1099
						RETURN '-1'
1100
					END
1101
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1102
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
1103
					BEGIN
1104
						ROLLBACK TRANSACTION
1105
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1106
						(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1107
						RETURN '-1'
1108
					END
1109
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1110
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
1111
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1112
					BEGIN
1113
						ROLLBACK TRANSACTION
1114
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1115
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1116
						RETURN '-1'
1117
					END
1118
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1119
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
1120
					BEGIN
1121
						ROLLBACK TRANSACTION
1122
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1123
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1124
						RETURN '-1'
1125
					END
1126
					--- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA
1127
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED ='Y' )))
1128
					BEGIN
1129
						ROLLBACK TRANSACTION
1130
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1131
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán. Vui lòng hủy bản nháp!' ErrorDesc
1132
						RETURN '-1'
1133
					END
1134
					END
1135
					DECLARE @REQ_PAYDTID VARCHAR(15);
1136
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
1137
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
1138
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
1139
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,'P')
1140
				IF @@error<>0 GOTO ABORT;
1141
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1142
				END
1143
				CLOSE XmlDataPO;
1144
				DEALLOCATE XmlDataPO;
1145
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
1146
				DECLARE XmlDataSchedule CURSOR FOR
1147
				SELECT *
1148
				FROM
1149
				OPENXML(@hdocSchedule, '/Root/XmlDataSchedule',2)
1150
				WITH(PO_ID varchar(15),TERM_PAY varchar(15),AMT_PAY_SCHEDULE decimal(18,0),REQ_ADV_ID varchar(15),AMT_ADVANCE_SCHEDULE decimal(18,0), AMT_PAY_DO decimal(18,2),
1151
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
1152
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
1153
				OPEN XmlDataSchedule
1154
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
1155
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
1156
				WHILE @@fetch_status=0 
1157
				BEGIN
1158
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
1159
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
1160
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
1161
					INSERT INTO TR_REQ_PAY_SCHEDULE(
1162
					SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
1163
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
1164
					VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID,@AMT_PAY_SCHEDULE,@TERM_PAY,@p_REQ_PAY_ID,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,@AMT_REMAIN_SCHEDULE,
1165
					GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),NULL,@p_MAKER_ID,GETDATE(),'U','','ADV_PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL)
1166
				--- END KHAI BAO CURSOR
1167
				IF @@error<>0 GOTO ABORT;
1168
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
1169
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
1170
				END
1171
				CLOSE XmlDataSchedule;
1172
				DEALLOCATE XmlDataSchedule;
1173
			END
1174
		--- END TẠM ỨNG THANH TOÁN
1175
		---- TẠM ỨNG HĐ ĐỊNH KÌ
1176
			IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
1177
			BEGIN
1178
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1179
				DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1180
				DECLARE @END_DT VARCHAR(20)
1181
				DECLARE XmlDataRecurring CURSOR FOR
1182
				SELECT *
1183
				FROM
1184
				OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2)
1185
				WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15), END_DT VARCHAR(20))
1186
				OPEN XmlDataRecurring;
1187
				SET @INDEX_PO = 0
1188
				FETCH NEXT FROM XmlDataRecurring INTO @REF_ID,@IS_CLOSED,@REF_TYPE, @END_DT
1189
				WHILE @@fetch_status=0 
1190
				BEGIN
1191
					SET @INDEX_PO = @INDEX_PO +1
1192
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
1193
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
1194
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
1195
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE, END_DT) 
1196
					VALUES(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,'C', CONVERT(DATE,@END_DT,103))
1197
				IF @@error<>0 GOTO ABORT;
1198
				FETCH NEXT FROM XmlDataRecurring INTO @REF_ID,@IS_CLOSED,@REF_TYPE, @END_DT
1199
				END
1200
				CLOSE XmlDataRecurring;
1201
				DEALLOCATE XmlDataRecurring;
1202
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
1203
			----------------------------
1204
			--INSERT FROM PERIOD	
1205
				DECLARE XmlDataPeriod CURSOR FOR
1206
				SELECT *
1207
				FROM
1208
				OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
1209
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
1210
				OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), RATE DECIMAL(18,0), FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000), END_DT VARCHAR(20) )
1211
				OPEN XmlDataPeriod;
1212
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5), @OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),
1213
				@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@PAY_PHASE NVARCHAR(250), @REASON_TTDK NVARCHAR(2000)
1214
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK, @END_DT
1215
				WHILE @@fetch_status=0 
1216
				BEGIN
1217
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1218
					IF(@p_TYPE_FUNCTION ='SEND')
1219
					BEGIN
1220
					
1221
					--IF(EXISTS(SELECT CONTRACT_ID 
1222
					--FROM TR_CONTRACT 
1223
					--WHERE CONTRACT_ID = @REF_ID AND CONVERT(DATE,END_DT,103) < CONVERT(DATE,GETDATE(),103) AND END_DT IS NOT NULL AND CONT_TYPE ='DK' AND CONT_TYPE IS NOT NULL AND  CONT_TYPE <>''))
1224
					
1225
					----AND IS_CLOSED='Y' ))
1226
					--BEGIN
1227
					--	ROLLBACK TRANSACTION
1228
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
1229
					--	RETURN '-1'
1230
					--END
1231

    
1232
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0)
1233
					BEGIN
1234
						ROLLBACK TRANSACTION
1235
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
1236
						RETURN '-1'
1237
					END
1238
					-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
1239
						IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
1240
						BEGIN
1241
							ROLLBACK TRANSACTION
1242
							SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
1243
							RETURN '-1'
1244
						END
1245
					-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
1246
						IF(@CONTRACT_ID IS NOT NULL AND  @CONTRACT_ID <> '' )
1247
						BEGIN
1248
							IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
1249
							BEGIN
1250
								ROLLBACK TRANSACTION
1251
								SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
1252
								RETURN '-1'
1253
							END
1254
						END
1255
					END
1256
					DECLARE @PERIOD_ID VARCHAR(15);
1257
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
1258
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
1259
					INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE, 
1260
					TO_DATE,AD_PAY_ID,PROCESS,PAY_PHASE, REASON)
1261
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103), @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',
1262
					@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@p_REQ_PAY_ID,'0',@PAY_PHASE,@REASON_TTDK)
1263
				IF @@error<>0 GOTO ABORT;
1264
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE , @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE, @TO_DATE,@PAY_PHASE,@REASON_TTDK, @END_DT
1265
			END
1266
			CLOSE XmlDataPeriod;
1267
			DEALLOCATE XmlDataPeriod;
1268
			-- VALIDATE SO TIEN
1269
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
1270
			--BEGIN
1271
			--	ROLLBACK TRANSACTION
1272
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
1273
			--	RETURN '-1'
1274
			--END
1275
			----
1276
			END
1277
		---- END TẠM ỨNG HĐ ĐỊNH KÌ
1278
		--- INSERT PHƯƠNG THỨC THANH TOÁN
1279
		----MethodCursor
1280
			DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1281
			DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2),@REQ_PAY_TYPE varchar(1),
1282
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(250), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),
1283
					@TYPE_TRANSFER VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY VARCHAR(250), @RECEIVER_DEBIT VARCHAR(20)
1284
			DECLARE @INDEX_PAY_METHOD DECIMAL(18,0) = 0;
1285
			DECLARE XmlDataMethod CURSOR FOR
1286
			SELECT *
1287
			FROM
1288
			OPENXML(@hdocPayMethod, '/Root/XmlDataMethod',2)
1289
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
1290
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), ACC_NAME NVARCHAR(250), 
1291
			ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15),
1292
			TYPE_TRANSFER VARCHAR(15), BANKCODE_NAPAS VARCHAR(20), BANKCODE VARCHAR(20), BANKNAME NVARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT NVARCHAR(20))
1293
			OPEN XmlDataMethod
1294
			FETCH NEXT FROM XmlDataMethod 
1295
			INTO  @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME,@ISSED_BY,@ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT 
1296
			WHILE @@fetch_status=0 
1297
			BEGIN
1298
				SET @INDEX_PAY_METHOD = @INDEX_PAY_METHOD + 1;
1299
					---------------------------start validate ------------------------------
1300
					IF(@p_TYPE_FUNCTION ='SEND')
1301
					BEGIN
1302
						IF(@ACC_NO IS NULL OR @ACC_NO = '')
1303
						BEGIN
1304
							ROLLBACK TRANSACTION
1305
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Phương thức thanh toán: Dòng ' + CAST(@INDEX_PAY_METHOD AS NVARCHAR(255)) + N': Số tài khoản/ CMND không được để trống'  ErrorDesc
1306
							RETURN '-1'
1307
						END
1308

    
1309
						IF((@BANKCODE IS NULL OR @BANKCODE = '') AND @CHECK_IN = 'O')
1310
						BEGIN
1311
							ROLLBACK TRANSACTION
1312
							SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_PAY_METHOD)+N': Loại tài khoản là ngoài hệ thống! Vui lòng chọn lại Tên ngân hàng/nơi cấp CMND từ danh sách!' ErrorDesc
1313
							RETURN '-1'
1314
						END
1315

    
1316
						IF(@ACC_NAME IS NULL OR @ACC_NAME = '')
1317
						BEGIN
1318
							ROLLBACK TRANSACTION
1319
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Phương thức thanh toán: Dòng ' + CAST(@INDEX_PAY_METHOD AS NVARCHAR(255)) + N': Tên tài khoản/ người nhận không được để trống'  ErrorDesc
1320
							RETURN '-1'
1321
						END
1322
						IF(@ISSED_BY IS NULL OR @ISSED_BY = '')
1323
						BEGIN
1324
							ROLLBACK TRANSACTION
1325
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Phương thức thanh toán: Dòng ' + CAST(@INDEX_PAY_METHOD AS NVARCHAR(255)) + N': Ngân hàng/ nơi cấp CMND không được để trống'  ErrorDesc
1326
							RETURN '-1'
1327
						END
1328
						IF(@REQ_PAY_REASON IS NULL OR @REQ_PAY_REASON = '')
1329
						BEGIN
1330
							ROLLBACK TRANSACTION
1331
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Phương thức thanh toán: Dòng ' + CAST(@INDEX_PAY_METHOD AS NVARCHAR(255)) + N': Nội dung thanh toán không được để trống'  ErrorDesc
1332
							RETURN '-1'
1333
						END
1334
						IF(@TOTAL_AMT_METHOD IS NULL OR @TOTAL_AMT_METHOD = 0)
1335
						BEGIN
1336
							ROLLBACK TRANSACTION
1337
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Phương thức thanh toán: Dòng ' + CAST(@INDEX_PAY_METHOD AS NVARCHAR(255)) + N': Số tiền thanh toán phải lớn hơn 0'  ErrorDesc
1338
							RETURN '-1'
1339
						END
1340
						IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT IS NULL OR @ISSUED_DT = ''))
1341
						BEGIN
1342
							ROLLBACK TRANSACTION
1343
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Phương thức thanh toán, dòng ' + CAST(@INDEX_PAY_METHOD AS NVARCHAR(255)) + N': Ngày cấp CMND không được để trống nếu phương thức thanh toán là bằng tiền mặt'  ErrorDesc
1344
							RETURN '-1'
1345
						END
1346
						
1347
					END
1348
					-----------------------------end validate ----------------------------
1349
				IF(@REQ_PAY_TYPE<>'1')
1350
				BEGIN
1351
					SET @ISSUED_DT = NULL
1352
				END
1353
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
1354
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
1355
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
1356
				INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID,REQ_PAY_ID,EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES, TEMP,MAKER_ID,
1357
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT)
1358
				VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',
1359
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT)
1360
			IF @@error<>0 GOTO ABORT;
1361
			FETCH NEXT FROM XmlDataMethod 
1362
			INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO,@ACC_NAME , @ISSED_BY , @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
1363
			END
1364
			CLOSE XmlDataMethod;
1365
			DEALLOCATE XmlDataMethod
1366
		----END INSERT PHƯƠNG THỨC THANH TOÁN
1367
		----INSERT VAO BANG DS KHACH HANG
1368
			DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1369
			DECLARE XmlDataCus CURSOR FOR
1370
			SELECT *
1371
			FROM
1372
			OPENXML(@hdocCus, '/Root/XmlDataCus', 2)
1373
			WITH(CUST_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO decimal(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
1374
			OPEN XmlDataCus;
1375

    
1376
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1377
				WHILE @@fetch_status=0 
1378
				BEGIN		
1379
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
1380
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
1381
				--- END KHAI BAO CURSOR
1382
				IF @@error<>0 GOTO ABORT;
1383
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1384
				END
1385
				CLOSE XmlDataCus;
1386
				DEALLOCATE XmlDataCus;
1387
		----END
1388
		-- HANG MUC CHI PHI VA NGAN SACH
1389
			DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1390
			DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15),@AMT_APP decimal(18,2),@AMT_DO decimal(18,2),@AMT_EXE decimal(18,2),@AMT_REMAIN_GD decimal(18,2), @INDEX_NS INT =0
1391
			DECLARE XmlDataGood CURSOR LOCAL FOR
1392
			SELECT *
1393
			FROM
1394
			OPENXML(@hdocPayBudget, '/Root/XmlDataGood',2) 
1395
			WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2), AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000),TYPE_COST VARCHAR(25) , FR_LEVEL INT  ,TO_LEVEL INT)
1396
			OPEN XmlDataGood
1397
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL  ,@TO_LEVEL
1398
			WHILE @@fetch_status=0 BEGIN
1399
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1400
				SET @INDEX_NS = @INDEX_NS +1
1401
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1402
				--IF(@p_TYPE_FUNCTION ='SEND')
1403
				--BEGIN
1404
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
1405
				--BEGIN
1406
				--		ROLLBACK TRANSACTION
1407
				--		SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
1408
				--		RETURN '-1'
1409
				--END	
1410
				--END
1411
				IF(@p_TYPE_FUNCTION ='SEND')
1412
				BEGIN
1413
				IF(ISNULL(@AMT_EXE,0) =0)
1414
				BEGIN
1415
						ROLLBACK TRANSACTION
1416
						CLOSE XmlDataGood;
1417
						DEALLOCATE XmlDataGood;
1418
						SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID,@p_REQ_PAY_CODE  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế phải lớn hơn 0.' ErrorDesc
1419
						RETURN '-1'
1420
				END
1421
				--		ROLLBACK TRANSACTION
1422
				--		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
1423
				--		RETURN '-1'
1424
				--END		
1425
			END
1426
				DECLARE @p_BUDGET_ID VARCHAR(15);
1427
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
1428
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
1429
				INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL  ,TO_LEVEL) 
1430
				VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL  ,@TO_LEVEL)
1431
			IF @@error<>0 GOTO ABORT;
1432
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST , @FR_LEVEL  ,@TO_LEVEL
1433
			END;
1434
		CLOSE XmlDataGood;
1435
		DEALLOCATE XmlDataGood;
1436
		--- END INSERT NGAN SACH
1437
		DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1438
		DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000),@CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20),@NOTES_ATT NVARCHAR(1000), @LICENSE_DT VARCHAR(20)
1439
		DECLARE XmlAttach CURSOR FOR
1440
		SELECT *
1441
		FROM
1442
		OPENXML(@hdocPayAtach, '/Root/XmlAttach',2) 
1443
		WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000),CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(20))
1444
		OPEN XmlAttach
1445
		--INSERT CHUNG TU DINH KEM
1446
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
1447
				WHILE @@fetch_status=0 
1448
				BEGIN
1449
					IF (@REF_DT='')
1450
					BEGIN
1451
						SET @REF_DT = NULL
1452
					END
1453
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
1454
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
1455
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT, LICENSE_DT) VALUES
1456
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103), CONVERT(DATE, @LICENSE_DT,103))
1457
				IF @@error<>0 GOTO ABORT;
1458
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
1459
				END
1460
				CLOSE XmlAttach;
1461
				DEALLOCATE XmlAttach;
1462
		----END
1463
		--- BAT DAU VALIDATE
1464
		IF(@p_TYPE_FUNCTION ='SEND')
1465
		BEGIN
1466
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
1467
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1468
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
1469
			BEGIN
1470
				SET @SUM_LICH_TT =(SELECT SUM(AMT_PAY_REAL* ISNULL(RATE,1)) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1471
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
1472
				BEGIN
1473
					ROLLBACK TRANSACTION
1474
					SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tổng số tiền lịch thanh toán PO và hợp đồng liên quan đến khách hàng xử lý nợ phải bằng số tiền tạm ứng' ErrorDesc
1475
					RETURN '-1'
1476
				END
1477
			END
1478
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1479
			BEGIN
1480
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1481
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_NS,0))
1482
				BEGIN
1483
					ROLLBACK TRANSACTION
1484
					SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tổng số tiền sử dụng ngân sách và chi phí phải bằng số tiền tạm ứng' ErrorDesc
1485
					RETURN '-1'
1486
				END
1487
			END
1488
			ELSE
1489
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
1490
			BEGIN
1491
				ROLLBACK TRANSACTION
1492
				SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tổng số tiền phương thức thanh toán phải bằng số tiền tạm ứng' ErrorDesc
1493
				RETURN '-1'
1494
			END
1495
			
1496
		END
1497
		----END
1498
		IF(@p_REQ_TYPE ='I')
1499
			BEGIN
1500
				DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID
1501
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT decimal(18,2))
1502
		-- BEGIN SELECT CAC CAP PHE DUYET --
1503
		-- HOI SO
1504
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
1505
				BEGIN
1506
				-- KHOI TAI CHINH
1507
					IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06908%' OR DEP_CODE ='0690605') AND DEP_ID =@p_DEP_ID) --- LUCTV 14.10.22 BO SUNG THEM PHONG BAN
1508
					BEGIN
1509
						-- KHOI TAI CHINH SE KHONG CO PTGD NUA MA CHI CO GDK - LUCTV 29032021
1510
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <> 'PTGD'
1511
						--INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
1512
						--INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK' ORDER BY LIMIT_VALUE ASC
1513
					END
1514
				-- KHOI HO TRO
1515
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE'06906%') AND DEP_ID =@p_DEP_ID) --- DOANPTT 261022 BO SUNG HAN MUC GDK HO TRO, DO GDK HO TRO CO HAN MUC RIENG KHAC VOI CAC GDK KHAC
1516
					BEGIN
1517
						-- KHOI HO TRO SE KHONG CO PTGD NUA MA CHI CO KDK - LUCTV 29032021
1518
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID, 1000000000 FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID = 'GDK'
1519
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('PTGD', 'GDK')
1520
					END
1521
				-- PHONG TRUYEN THONG VA THUONG HIEU
1522
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE ='0690405' AND DEP_ID =@p_DEP_ID) 
1523
					BEGIN
1524
							-- KHOI TAI CHINH SE KHONG CO PTGD NUA MA CHI CO KDK - LUCTV 29032021
1525
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
1526
						--INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK'
1527
						--INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK' ORDER BY LIMIT_VALUE ASC
1528
					END
1529
				-- KHOI VAN HANH
1530
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
1531
					BEGIN
1532
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'GDK' ORDER BY LIMIT_VALUE ASC
1533
					END
1534
				-- KHONG CO TGD VA PTGD
1535
					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)
1536
					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) 
1537
					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)
1538
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%799%' AND DEP_ID =@p_DEP_ID)
1539
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%899%' AND DEP_ID =@p_DEP_ID))
1540
					BEGIN
1541
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID NOT IN ('GDK','PTGD') ORDER BY LIMIT_VALUE ASC
1542
					END
1543
				-- KHOI QUAN LY RUI RO, KHOI CNTT,...
1544
					ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) -- KHOI QUAN LY RUI RO
1545
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID) -- KHOI CNTT
1546
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) -- KHOI THAM DINH TIN DUNG
1547
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID) -- KHOI KHCN - KHACH HANG CA NHAN
1548
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID)) -- KHOI KHOI KHDN & DINH CHE
1549
					BEGIN
1550
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' AND A.ROLE_ID <>'PTGD' ORDER BY LIMIT_VALUE ASC
1551
					END
1552
				-- CON LAI
1553
					ELSE
1554
					BEGIN
1555
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001' ORDER BY LIMIT_VALUE ASC
1556
					END
1557
				END
1558
		-- CN & PGD
1559
				ELSE
1560
				BEGIN
1561
				-- ROLE GDDV HOAC KIEM NHIEM GDDV
1562
					IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
1563
					BEGIN
1564
							--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
1565
							INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='GDDV' 
1566
							--INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
1567
					END
1568
				-- ROLE TPGD HOAC KIEM NHIEM TPGD
1569
					ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
1570
					BEGIN
1571
							INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='TPGD'
1572
							--BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
1573
							--INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'AND BRANCH_ID ='DV0001'
1574
					END
1575
				END
1576
		-- END SELECT CAC CAP PHE DUYET --
1577

    
1578
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
1579
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
1580
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
1581
		-- BEGIN THEM CAC CAP PHE DUYET VAO TABLE PL_REQUEST_PROCESS --
1582
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A ORDER BY A.AMT ASC -- SAP XEP LAI CAC CAP DUYET THEO HAN MUC PHE DUYET
1583
				OPEN CUR_PR
1584
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1585
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
1586
				BEGIN
1587
					-- DOANPTT 261022: DONG NHAT PROCESS GIUA DON VI VA HOI SO
1588
				-- HOI SO
1589
					IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
1590
					BEGIN
1591
						SET @INDEX= @INDEX+1
1592

    
1593
						IF @INDEX = @SL_ROLE
1594
						SET @ISLEAF = 'Y'
1595
						ELSE
1596
						SET @ISLEAF = 'N'
1597
						SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
1598

    
1599
						IF(@INDEX=1 )
1600
						BEGIN		
1601
							SET @PARENT_ID = NULL
1602
							SET @STATUS = 'C'							
1603
						END				
1604
						ELSE 
1605
						BEGIN
1606
							SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
1607
							SET @STATUS = 'U'
1608
						END
1609
					END
1610
				-- CN & PGD
1611
					ELSE
1612
					BEGIN
1613
						SET @INDEX= 0
1614
						IF @INDEX = @SL_ROLE - 1
1615
						SET @ISLEAF = 'Y'
1616
						ELSE
1617
						SET @ISLEAF = 'N'
1618
						SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
1619

    
1620
						IF(@INDEX = 0 )
1621
						BEGIN		
1622
							SET @PARENT_ID = NULL
1623
							SET @STATUS = 'C'							
1624
						END				
1625
						ELSE 
1626
						BEGIN
1627
							SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
1628
							SET @STATUS = 'U'
1629
						END
1630
					END
1631
					/*
1632
					IF(@ROLE_ID = 'TKTGD')
1633
					BEGIN
1634
						SET @INDEX = 3
1635
					END
1636
					*/
1637
					IF(@LIMIT_VALUE >= @p_REQ_AMT)
1638
					BEGIN
1639
						INSERT INTO dbo.PL_REQUEST_PROCESS(
1640
						REQ_ID,
1641
						PROCESS_ID,
1642
						STATUS,
1643
						ROLE_USER,
1644
						BRANCH_ID,
1645
						CHECKER_ID,
1646
						APPROVE_DT,
1647
						PARENT_PROCESS_ID,
1648
						IS_LEAF, COST_ID, DVDM_ID, NOTES
1649
						)
1650
						VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
1651
						--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y','')
1652
						IF(@ROLE_ID <> 'TKTGD' AND @ROLE_ID <> 'TKHDQT')
1653
						BEGIN
1654
							BREAK;
1655
						END
1656
					END
1657
					ELSE
1658
					BEGIN
1659
						INSERT INTO PL_REQUEST_PROCESS (
1660
						REQ_ID,
1661
						PROCESS_ID,
1662
						STATUS,
1663
						ROLE_USER,
1664
						BRANCH_ID,
1665
						CHECKER_ID,
1666
						APPROVE_DT,
1667
						PARENT_PROCESS_ID,
1668
						IS_LEAF, COST_ID, DVDM_ID, NOTES
1669
						) 
1670
						VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
1671
					END
1672
					
1673
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1674
				END
1675
				CLOSE CUR_PR
1676
				DEALLOCATE CUR_PR
1677
			END
1678
COMMIT TRANSACTION
1679
-- BEIGN VALIDATE SEND APPROVE
1680
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
1681
		BEGIN
1682
			IF(@p_MAKER_ID <> (SELECT TOP 1 MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID))
1683
			BEGIN
1684
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Gửi phê duyệt thất bại! Bạn không được quyền gửi phê duyệt phiếu đề nghị tạm ứng của người khác tạo'  ErrorDesc
1685
				RETURN '-1'
1686
			END
1687
			IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT where MAKER_ID = @p_MAKER_ID ))
1688
			BEGIN
1689
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
1690
				RETURN '-1'
1691
			END
1692
			IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT where AUTH_STATUS = 'U' AND REQ_PAY_ID = @p_REQ_PAY_ID ))
1693
			BEGIN
1694
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
1695
				RETURN '-1'
1696
			END
1697
			IF (@p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE ='')
1698
			BEGIN
1699
				SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được để trống' ErrorDesc
1700
				RETURN '-1'
1701
			END
1702
			IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <> 'E' AND ISNULL(AUTH_STATUS, '') <> ''))
1703
			BEGIN
1704
				SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
1705
				RETURN '-1'
1706
			END
1707
			--ROLLBACK TRANSACTION
1708
			-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1709
			IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID ) AND @BRANCH_TYPE_CR ='HS'  AND @p_REQ_TYPE ='I')
1710
			BEGIN
1711
				DECLARE @USER_TP VARCHAR(15) =''
1712
				--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID 
1713
				--		AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
1714
				IF(@USER_TP IS NULL OR @USER_TP ='')
1715
				BEGIN
1716
					SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID 
1717
						AND (RoleName IN ('TBP','PP')))
1718
				END
1719
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1720
			END
1721
			DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
1722
			IF (@p_REQ_TYPE ='I')
1723
			BEGIN
1724
				SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) 
1725
				FROM TR_REQ_ADVANCE_PAYMENT WHERE  REF_ID =@p_REF_ID AND AUTH_STATUS ='A' AND  REQ_TYPE ='I')
1726
				SET  @SUM_PAY = (SELECT SUM (ISNULL(PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID  AND AUTH_STATUS_KT ='A' AND REQ_TYPE ='I')
1727
				UPDATE TR_REQ_ADVANCE_PAYMENT SET REQ_TEMP_AMT =ISNULL(@SUM_TEMP_PAY,0) -ISNULL(@SUM_PAY,0) WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1728
			END
1729
			DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0
1730
			SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1731
			SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1732
			IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
1733
			BEGIN
1734
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN')  ErrorDesc
1735
				RETURN '-1'
1736
			END
1737
			IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE <>'' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD' AND @p_REQ_TYPE <>'I')
1738
			BEGIN
1739
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Ở cấp độ phòng giao dịch. Vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
1740
				RETURN '-1'
1741
			END
1742

    
1743
				
1744
			--IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND @p_REQ_TYPE='P' AND (@p_IS_PERIOD IS NULL OR @p_IS_PERIOD ='' OR @p_IS_PERIOD ='N')))
1745
			--BEGIN
1746
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
1747
			--	RETURN '-1'
1748
			--END
1749
			UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U',CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1750
			UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='GDDV' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PGD'
1751
			UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='TPGD' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PPGD'
1752
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1753
			VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu tạm ứng và gửi phê duyệt')
1754
			IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
1755
			BEGIN
1756
				SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
1757
				RETURN '4'
1758
			END
1759
			ELSE
1760
			BEGIN
1761
				SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị tạm ứng số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
1762
				RETURN '4'
1763
			END
1764
			--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
1765
			--RETURN '4'
1766
		END
1767
		-- FIX PHONG HO LOI LIEN QUAN DEN VIEC TAI KHOAN TAM UNG BI SAI
1768
		----DECLARE  @REQ_PAY_ID varchar(15), @l_REF_ID varchar(15)
1769
		----DECLARE cursorProduct CURSOR LOCAL FOR
1770
		----SELECT REQ_PAY_ID,REF_ID FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_TYPE ='I'
1771
		----Open cursorProduct
1772
		----FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
1773
		----WHILE @@FETCH_STATUS = 0
1774
		----BEGIN
1775
		----   UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@l_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE REQ_PAY_ID =@REQ_PAY_ID
1776
		----FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID, @l_REF_ID
1777
		----END
1778
-- END VALIDATE SEND APPROVE
1779

    
1780
	SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
1781
	RETURN '0'
1782
ABORT:
1783
BEGIN
1784
		ROLLBACK TRANSACTION
1785
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
1786
		RETURN '-1'
1787
End
1788

    
1789
GO
1790

    
1791
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Upd]
1792
@p_REQ_PAY_ID	varchar(15)= NULL,
1793
@p_REQ_PAY_CODE	varchar(50)	= NULL,
1794
@p_REQ_DT VARCHAR(20)= NULL,
1795
@p_BRANCH_ID	varchar(15)	= NULL,
1796
@p_DEP_ID	varchar(15)	= NULL,
1797
@p_REQ_REASON	nvarchar(MAX)	= NULL,
1798
@p_REQ_TYPE	varchar(15)	= NULL,
1799
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
1800
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
1801
@p_REF_ID	varchar(15)	= NULL,
1802
@p_RECEIVER_PO	nvarchar(250)	= NULL,
1803
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
1804
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
1805
@p_REQ_AMT	decimal(18, 2)	= NULL,
1806
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
1807
@p_MAKER_ID	varchar(15)	= NULL,
1808
@p_CREATE_DT	varchar(25)	= NULL,
1809
@p_EDITOR_ID	varchar(15)	= NULL,
1810
@p_AUTH_STATUS	varchar(1)	= NULL,
1811
@p_CHECKER_ID	varchar(15)	= NULL,
1812
@p_APPROVE_DT	varchar(25)	= NULL,
1813
@p_CREATE_DT_KT	varchar(25)	= NULL,
1814
@p_MAKER_ID_KT	varchar(15)	= NULL,
1815
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
1816
@p_CHECKER_ID_KT	varchar(1)	= NULL,
1817
@p_APPROVE_DT_KT  varchar(25)= null,
1818
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
1819
@p_BRANCH_CREATE	varchar(15)	= NULL,
1820
@p_NOTES	varchar(15)	= NULL,
1821
@p_RECORD_STATUS	varchar(1)	= NULL,
1822
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
1823
@p_TRANSFER_DT	varchar(25)	= NULL,
1824
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
1825
@p_PROCESS	varchar(15)	= NULL,
1826
@p_PAY_PHASE NVARCHAR(255) = NULL,
1827
@p_RATE	DECIMAL(18,2) = 0,
1828
@p_IS_PERIOD VARCHAR(5) = NULL,
1829
@p_AMT_PAY decimal(18, 0) = NULL,
1830
@p_XMP_TEMP XML = NULL,
1831
@p_XMP_TEMP_2 XML = NULL,
1832
@p_XMP_TEMP_METHOD XML = NULL,
1833
@p_XMP_TEMP_BUDGET XML = NULL,
1834
@p_XMP_TEMP_SERVICE XML = NULL,
1835
@p_XMP_TEMP_ATTACH XML = NULL,
1836
@p_XMP_TEMP_INVOICE XML = NULL,
1837
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
1838
@p_XMP_TEMP_PO XML = NULL,
1839
@p_XMP_TEMP_SCHEDULE XML = NULL,
1840
@p_XMP_TEMP_PERIOD XML = NULL,
1841
@p_XMP_ADVANCE_DT XML = NULL,
1842
--doanptt 15/02/2022
1843
@p_XMP_TEMP_PAY_JOB XML = NULL,
1844
@p_XMP_TEMP_PAY_JOB_DT XML = NULL,
1845
--doanptt 17/02/2022
1846
@p_XMP_TEMP_PAY_DRIVE XML = NULL,
1847
@p_XMP_TEMP_PAY_DRIVE_DT XML = NULL
1848

    
1849
AS
1850
-- BEGIN VALIDATE UPDATE
1851
	IF(@p_TYPE_FUNCTION <> 'SEND')
1852
	BEGIN
1853
		IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID ))
1854
		BEGIN
1855
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị thanh toán này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
1856
			RETURN '-1'
1857
		END
1858
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U'))
1859
		BEGIN
1860
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc
1861
			RETURN '-1'
1862
		END
1863
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND  PROCESS IS NOT NULL AND PROCESS <>''))
1864
		BEGIN
1865
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
1866
			RETURN '-1'
1867
		END
1868
		IF (@p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE ='')
1869
		BEGIN
1870
			SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được phép để trống' ErrorDesc
1871
			RETURN '-1'
1872
		END
1873
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <> 'E' AND AUTH_STATUS <> 'R' AND ISNULL(AUTH_STATUS, '') <> ''))
1874
		BEGIN
1875
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
1876
			RETURN '-1'
1877
		END
1878
	END
1879
	IF(@p_TYPE_FUNCTION = 'SEND')
1880
	BEGIN
1881
		IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID ))
1882
		BEGIN
1883
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
1884
			RETURN '-1'
1885
		END
1886
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U'))
1887
		BEGIN
1888
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc
1889
			RETURN '-1'
1890
		END
1891
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS = 'A'))
1892
		BEGIN
1893
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc
1894
			RETURN '-1'
1895
		END
1896
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
1897
		BEGIN
1898
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kiểm soát viên phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc
1899
			RETURN '-1'
1900
		END
1901
		IF (ISNULL(@p_REQ_PAY_CODE, '')='' OR ISNULL(@p_REQ_TYPE, '')='' OR ISNULL(@p_MAKER_ID, '')='' OR ISNULL(@p_BRANCH_ID, '')='' OR ISNULL(@p_DEP_ID, '')='' OR ISNULL(@p_REQ_REASON, '')='')
1902
		BEGIN
1903
			SELECT '-1' Result, '' REQ_PAY_ID, N'Các trường dữ liệu không được phép để trống: mã số phiếu, loại thanh toán, người đề nghị thanh toán, đơn vị đề nghị thanh toán, phòng ban đề nghị, số tiền thanh toán, lý do thanh toán. Vui lòng kiểm tra lại thông tin' ErrorDesc
1904
			RETURN '-1'
1905
		END
1906
		IF(@p_MAKER_ID <> (SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID))
1907
		BEGIN
1908
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Gửi phê duyệt thất bại! Bạn không được quyền gửi phê duyệt phiếu đề nghị thanh toán của người khác'  ErrorDesc
1909
			RETURN '-1'
1910
		END
1911
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
1912
		BEGIN
1913
			--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
1914
			DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1915
			DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1916
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
1917
			RETURN '-1'
1918
		END
1919
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT where AUTH_STATUS <> 'E' AND ISNULL(AUTH_STATUS, '') <> '' AND REQ_PAY_ID = @p_REQ_PAY_ID ))
1920
		BEGIN
1921
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó hoặc đang bị từ chối! Vui lòng kiểm tra lại thông tin' ErrorDesc
1922
			RETURN '-1'
1923
		END
1924
	END
1925
	
1926
-- END VALIDATE UPDATE
1927

    
1928
		--IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
1929
		--BEGIN
1930
		--	SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
1931
		--	RETURN '-1'
1932
		--END
1933
	-- doanppt 
1934
	IF(@p_REQ_TYPE = 'D')
1935
	BEGIN
1936
		DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1937
		DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1938
		DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1939
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
1940
	END
1941
	IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
1942
	BEGIN
1943
		DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1944
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
1945
		DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1946
	END
1947
	IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='N' OR @p_IS_PERIOD IS NULL))
1948
	BEGIN
1949
		DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1950
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
1951
		DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1952
	END
1953
	DECLARE @ROLE_KI_NHAY VARCHAR(50)
1954
	SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1955
	IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
1956
	BEGIN
1957
		PRINT @ROLE_KI_NHAY
1958
	END
1959
	ELSE
1960
	BEGIN
1961
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1962
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
1963
		BEGIN
1964
				SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))
1965
		END
1966
	END
1967
	--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1968
	IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD'))
1969
	BEGIN
1970
		SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
1971
		RETURN '-1'
1972
	END
1973

    
1974
	BEGIN TRANSACTION
1975
	-- DECLARE
1976
		DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50) = NULL,@INVOICE_NO nvarchar(50) = NULL,
1977
		@INVOICE_DT VARCHAR(20) = NULL, @SELLER nvarchar(500) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL, @PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,
1978
		@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE DECIMAL(18,0),@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(15)= NULL,@RATE DECIMAL(18,2), 
1979
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @PDN_TT_LIST_INVOICE VARCHAR(1000), @PAY_ADV_ID VARCHAR(15),@TYPE_TRANSFER VARCHAR(15),@REQ_PAY_ADV_CODE VARCHAR(15),@REASON NVARCHAR(1000),
1980
		@REF_TYPE VARCHAR(15), @TRN_DATE VARCHAR(15), @AMT_ADVANCED DECIMAL(18,0),@AMT_DO DECIMAL(18,0), @AMT_REMAIN DECIMAL(18,0),@AMT_PAY DECIMAL(18,0),@AMT_USE DECIMAL(18,2),@AMT_REVERT DECIMAL(18,2), 
1981
		@AMT_ADD DECIMAL(18,2), @TOTAL_SCHEDULE_AMT DECIMAL(18,0) =0
1982
		DECLARE @INDEX_AD INT =0, @INDEX_SV INT =0,@INDEX INT =0, @INDEX_IV INT =0, @INDEX_NS INT =0, @INDEX_INVOICE INT = 0, @INDEX_METHOD INT = 0
1983
		DECLARE @hdoc INT, @hDoc2 INT, @hDocMeThod INT, @hdocBudget INT, @hdocService INT, @hdocAttach INT, @hdocInvoice INT, @hdocPO INT, @hdocSchedule INT, @hdocPeriod INT, @hdocRecurring INT, @hdocJob INT, 
1984
		@hdocJobDT INT, @hdocDrive INT, @hdocDriveDT INT
1985
	-- EXEC XMP
1986
		EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
1987
		EXEC sp_xml_preparedocument @hDoc2 OUTPUT, @p_XMP_TEMP_2;
1988
		EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_TEMP_METHOD;
1989
		EXEC sp_xml_preparedocument @hdocBudget OUTPUT, @p_XMP_TEMP_BUDGET;
1990
		EXEC sp_xml_preparedocument @hdocService OUTPUT, @p_XMP_TEMP_SERVICE;
1991
		EXEC sp_xml_preparedocument @hdocAttach OUTPUT, @p_XMP_TEMP_ATTACH;
1992
		EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
1993
		EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_TEMP_PO;
1994
		EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_TEMP_SCHEDULE;
1995
		EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_TEMP_PERIOD;
1996
		EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT;
1997
		--doanptt 15/02/2022
1998
		EXEC sp_xml_preparedocument @hdocJob OUTPUT, @p_XMP_TEMP_PAY_JOB;
1999
		EXEC sp_xml_preparedocument @hdocJobDT OUTPUT, @p_XMP_TEMP_PAY_JOB_DT;
2000
		--doanptt 17/02/2022
2001
		EXEC sp_xml_preparedocument @hdocDrive OUTPUT, @p_XMP_TEMP_PAY_DRIVE;
2002
		EXEC sp_xml_preparedocument @hdocDriveDT OUTPUT, @p_XMP_TEMP_PAY_DRIVE_DT;
2003
		
2004
-- BEGIN VALIDATE CAC DANH SACH
2005
		/*
2006
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='N' AND NOT EXISTS(SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2) WITH(REQ_PAY_ID varchar(15))))
2007
		BEGIN
2008
			ROLLBACK TRANSACTION
2009
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách PO/ hợp đồng không được để trống' ErrorDesc
2010
			RETURN '-1'
2011
		END
2012
		
2013
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='N' AND NOT EXISTS(SELECT * FROM OPENXML(@hdocSchedule, '/Root/XmlDataSchedule', 2) WITH(REQ_PAY_ID varchar(15))))
2014
		BEGIN
2015
			ROLLBACK TRANSACTION
2016
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin chi tiết lịch thanh toán PO/ hợp đồng không được để trống' ErrorDesc
2017
			RETURN '-1'
2018
		END
2019

    
2020
		IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='Y' OR @p_IS_PERIOD IS NULL) AND NOT EXISTS(SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2) WITH(REQ_PAY_ID varchar(15))))
2021
		BEGIN
2022
			ROLLBACK TRANSACTION
2023
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin hợp đồng định kì không được phép để trống' ErrorDesc
2024
			RETURN '-1'
2025
		END
2026

    
2027
		IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='Y' OR @p_IS_PERIOD IS NULL) AND NOT EXISTS(SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2) WITH(REQ_PAY_ID varchar(15))))
2028
		BEGIN
2029
			ROLLBACK TRANSACTION
2030
			SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin định kỳ tạm ứng không được phép để trống' ErrorDesc
2031
			RETURN '-1'
2032
		END
2033
		*/
2034
-- END VALIDATE CAC DANH SACH
2035

    
2036
-- BEGIN THONG TIN LUOI MASTER
2037
		UPDATE TR_REQ_PAYMENT 
2038
		SET REF_ID = @p_REF_ID, DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,REQ_AMT = @p_REQ_AMT, NOTES= @p_NOTES, REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,
2039
		RECEIVER_PO = @p_RECEIVER_PO,TRANSFER_MAKER =@p_TRANSFER_MAKER, REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID, 
2040
		AUTH_STATUS='E', IS_PERIOD =@p_IS_PERIOD, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE, RATE = @p_RATE, AMT_PAY = @p_AMT_PAY, AUTH_STATUS_KT = NULL, REQ_TYPE_CURRENCY = @p_REQ_TYPE_CURRENCY
2041
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2042
		-- BUA DOAN NAY DE XU LY LOI KHONG TIM DUOC NHA CUNG CAP
2043
		UPDATE CM_SUPPLIER SET ACC_NUM ='' WHERE ACC_NUM IS NULL
2044
		UPDATE CM_SUPPLIER SET ACC_NUM_OUT ='' WHERE ACC_NUM_OUT IS NULL
2045
		--
2046
		UPDATE TR_REQ_PAY_SERVICE 
2047
		SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
2048
		WHERE REQ_PAY_ID NOT IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE IN ('I','D'))
2049
		--
2050
		UPDATE TR_REQ_PAY_SCHEDULE 
2051
		SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
2052
		WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE ='P' AND IS_PERIOD IS NOT NULL AND IS_PERIOD <>'' AND IS_PERIOD='Y') AND TRN_TYPE ='PAY' AND REQ_PAY_ID =@p_REQ_PAY_ID
2053
		IF @@Error <> 0 GOTO ABORT
2054
-- END THONG TIN LUOI MASTER
2055

    
2056
-- BEGIN THONG TIN HOA DON DINH KEM
2057
		DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2058
		DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2)
2059
		WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(500),TAX_NO nvarchar(15), 
2060
		GOODS_NAME nvarchar(500), PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15))
2061
		OPEN XmlData;
2062
		FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
2063
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
2064
		WHILE @@fetch_status=0 
2065
		BEGIN
2066
		-- SET
2067
			SET @INDEX_IV = @INDEX_IV +1
2068
		-- BEGIN VALIDATE
2069
			IF(@p_TYPE_FUNCTION ='SEND') 
2070
			BEGIN
2071
				IF(LEN(@INVOICE_NO) < 1)
2072
				BEGIN
2073
					ROLLBACK TRANSACTION
2074
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được để trống' ErrorDesc
2075
					RETURN '-1'
2076
				END	
2077

    
2078
				IF(LEN(@INVOICE_NO) > 8)
2079
				BEGIN
2080
					ROLLBACK TRANSACTION
2081
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải bé hơn 9 ký tự' ErrorDesc
2082
					RETURN '-1'
2083
				END	
2084

    
2085
				IF(EXISTS( SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND AUTH_STATUS <>'D'
2086
				AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D'))))
2087
				BEGIN
2088
					--SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
2089
					--(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX 
2090
					--AND AUTH_STATUS <>'D'
2091
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))
2092
					--FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
2093

    
2094
					--ROLLBACK TRANSACTION
2095
					--SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
2096
					--RETURN '-1'
2097
					---- 19.10.2022 LUCTV DIEU CHINH TAI VI TRI VALIDATE SO HOA DON
2098
					SET @PDN_TT_LIST_INVOICE = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN 
2099
					(SELECT REQ_PAY_ID FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX 
2100
					AND AUTH_STATUS <>'D'
2101
					AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U')))
2102
					FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
2103
					BEGIN
2104
						ROLLBACK TRANSACTION
2105
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Danh sách những phiếu đề nghị thanh toán đã sử dụng: '+ ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc
2106
						RETURN '-1'
2107
					END		
2108
				END	
2109
				
2110
				IF(@GOODS_NAME IS NULL OR @GOODS_NAME ='')
2111
				BEGIN
2112
					ROLLBACK TRANSACTION
2113
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Tên mặt hàng trong lưới hóa đơn không được để trống' ErrorDesc
2114
					RETURN '-1'
2115
				END
2116
				-- TÊN NGƯỜI BÀN
2117
				IF(@SELLER IS NULL OR @SELLER ='')
2118
				BEGIN
2119
					ROLLBACK TRANSACTION
2120
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Người bán trong lưới hóa đơn không được để trống' ErrorDesc
2121
					RETURN '-1'
2122
				END
2123

    
2124
				IF(@TAX_NO IS NULL OR @TAX_NO ='')
2125
				BEGIN
2126
					ROLLBACK TRANSACTION
2127
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Mã số thuế trong lưới hóa đơn không được để trống' ErrorDesc
2128
					RETURN '-1'
2129
				END
2130
				-- NGÀY HÓA ĐƠN
2131
				IF(@INVOICE_DT IS NULL OR @INVOICE_DT ='')
2132
				BEGIN
2133
					ROLLBACK TRANSACTION
2134
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Ngày hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2135
					RETURN '-1'
2136
				END
2137
				-- SỐ HÓA ĐƠN
2138
				IF(@INVOICE_NO IS NULL OR @INVOICE_NO ='')
2139
				BEGIN
2140
					ROLLBACK TRANSACTION
2141
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2142
					RETURN '-1'
2143
				END
2144
				-- KÍ HIỆU HÓA ĐƠN
2145
				IF(@INVOICE_NO_SIGN IS NULL OR @INVOICE_NO_SIGN ='')
2146
				BEGIN
2147
					ROLLBACK TRANSACTION
2148
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2149
					RETURN '-1'
2150
				END
2151
				-- KÍ HIỆU HÓA ĐƠN
2152
				IF(@PRICE IS NULL OR @PRICE =0)
2153
				BEGIN
2154
					ROLLBACK TRANSACTION
2155
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số tiền hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
2156
					RETURN '-1'
2157
				END
2158
			END
2159
		-- END VALIDATE
2160

    
2161
			DECLARE @p_REQ_INV_ID VARCHAR(15);
2162
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
2163
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
2164
			INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,
2165
			CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
2166
			VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , NULL  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,UPPER(([dbo].[RemoveVietNamese](@SELLER))),@TAX_NO ,UPPER(([dbo].[RemoveVietNamese](@GOODS_NAME))) ,
2167
			@PRICE ,@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, 'VND' , 1,@PRICE,@VAT,@PRICE+@VAT,@TYPE_VAT,@TYPE_FUNC)
2168
		IF @@error<>0 GOTO ABORT;
2169
		FETCH NEXT FROM XmlData
2170
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
2171
		END;
2172
		CLOSE XmlData;
2173
		DEALLOCATE XmlData;
2174
-- END THONG TIN HOA DON DINH KEM
2175

    
2176
-- BEGIN THONG TIN HANG MUC NGAN SACH VA CHI PHI
2177
	-- DELETE
2178
		DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID=@p_REQ_PAY_ID
2179
	-- DECLARE
2180
		DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15), @GD_CODE varchar(15), @AMT_APP decimal(18,2),@AMT_EXE decimal(18,2), @AMT_REMAIN_GD decimal(18,2),@TYPE_COST VARCHAR(15), @FR_LEVEL INT ,
2181
		@TO_LEVEL INT, @MONTH_RATE VARCHAR(4), @YEAR_RATE VARCHAR(4), @BUDGET_TYPE VARCHAR(20), @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @MONTH VARCHAR(20), @YEAR VARCHAR(20)
2182
	-- DECLARE CURSOR
2183
		DECLARE XmlDataGood CURSOR FOR SELECT * FROM OPENXML(@hdocBudget, 'Root/XmlDataGood',2) 
2184
		WITH(TRADE_ID varchar(15),GD_ID varchar(15),GD_CODE varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2), AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), 
2185
		REASON NVARCHAR(1000),TYPE_COST VARCHAR(15), FR_LEVEL INT ,TO_LEVEL INT, MONTH_RATE VARCHAR(4), YEAR_RATE VARCHAR(4), BUDGET_TYPE VARCHAR(20),  BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), MONTH VARCHAR(20), YEAR VARCHAR(20))
2186
	-- BEGIN CURSOR THONG TIN HANG MUC NGAN SACH VA CHI PHI
2187
		OPEN XmlDataGood		
2188
		FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
2189
		@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR
2190
		WHILE @@fetch_status=0 BEGIN
2191
		-- SET
2192
			SET @INDEX_NS = @INDEX_NS +1
2193

    
2194
		-- BEGIN VALIDATE
2195
			IF(@p_TYPE_FUNCTION ='SEND')
2196
			BEGIN
2197
				IF(ISNULL(@AMT_EXE,0) =0)
2198
				BEGIN
2199
					ROLLBACK TRANSACTION
2200
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
2201
					RETURN '-1'
2202
				END
2203
				IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
2204
				BEGIN
2205
						ROLLBACK TRANSACTION
2206
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
2207
						RETURN '-1'
2208
				END
2209
				IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
2210
				AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
2211
				BEGIN
2212
					ROLLBACK TRANSACTION
2213
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
2214
					RETURN '-1'
2215
				END
2216

    
2217
				--doanptt 180622 ghi log NSCP
2218
			-- BEGIN CHECK HAN MUC CHI PHI THEO NAM
2219
				IF(@BUDGET_TYPE = 'nam')
2220
				BEGIN
2221
					SET @MONTH_RATE = 'M' + CONVERT(VARCHAR(20), MONTH(GETDATE()));
2222

    
2223
					IF(@MONTH_RATE = 'M1')
2224
					BEGIN
2225
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2226
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2227
					END
2228
					IF(@MONTH_RATE = 'M2')
2229
					BEGIN
2230
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2231
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2232
					END
2233
					IF(@MONTH_RATE = 'M3')
2234
					BEGIN
2235
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2236
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2237
					END
2238
					IF(@MONTH_RATE = 'M4')
2239
					BEGIN
2240
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2241
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2242
					END
2243
					IF(@MONTH_RATE = 'M5')
2244
					BEGIN
2245
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2246
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2247
					END
2248
					IF(@MONTH_RATE = 'M6')
2249
					BEGIN
2250
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID,		 GD_ID , BRANCH_ID,  DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5,	 M6,   M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2251
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID,	@YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1',			'A',		NULL,			NULL )
2252
					END
2253
					IF(@MONTH_RATE = 'M7')
2254
					BEGIN
2255
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2256
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2257
					END
2258
					IF(@MONTH_RATE = 'M8')
2259
					BEGIN
2260
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2261
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2262
					END
2263
					IF(@MONTH_RATE = 'M9')
2264
					BEGIN
2265
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2266
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2267
					END
2268
					IF(@MONTH_RATE = 'M10')
2269
					BEGIN
2270
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2271
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2272
					END
2273
					IF(@MONTH_RATE = 'M11')
2274
					BEGIN
2275
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2276
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2277
					END
2278
					IF(@MONTH_RATE = 'M12')
2279
					BEGIN
2280
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2281
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2282
					END
2283

    
2284
					-- CHECK HẠN MỨC
2285
					DECLARE @l_HAVE_BUDGET_LIMIT_YEAR decimal(18,0), @l_BUDGET_LIMIT_CURRENT_YEAR decimal(18,0) =0, @l_BUDGET_USED_CURRENT_YEAR decimal(18,0) =0 , @l_BRANCH_TYPE_YEAR VARCHAR(20) = '';
2286
					exec TR_BUDGET_CHECK_LIMIT_YEAR_Byid @GD_ID, @GD_CODE ,@BRANCH_ID, @DEP_ID, @MONTH_RATE, @YEAR_RATE, @l_BUDGET_LIMIT_CURRENT_YEAR out, @l_BUDGET_USED_CURRENT_YEAR out
2287
					IF(@l_BUDGET_LIMIT_CURRENT_YEAR < @l_BUDGET_USED_CURRENT_YEAR)
2288
					BEGIN
2289
						ROLLBACK TRANSACTION
2290
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT_YEAR,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT_YEAR,'#,#', 'vi-VN')  ErrorDesc
2291
						RETURN '-1'
2292
					END
2293
				END-- END CHECK HAN MUC NGAN SACH CHI PHI THEO NAM
2294
				ELSE IF(@BUDGET_TYPE = 'thang')
2295
				BEGIN	-- BEGIN CHECK HAN MUC NGAN SACH CHI PHI THEO THANG
2296
				-- BEGIN KIỂM TRA HẠN MỨC
2297
					DECLARE @l_HAVE_BUDGET_LIMIT decimal(18,0), @l_BUDGET_LIMIT_CURRENT decimal(18,0) =0, @l_BUDGET_USED_CURRENT decimal(18,0) =0 , @l_BRANCH_TYPE VARCHAR(20) = '';
2298
					-- lấy loại đơn vị
2299
					SET @l_BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)
2300
					IF(@l_BRANCH_TYPE = 'HS')
2301
					BEGIN
2302
						SET @l_BRANCH_TYPE = 'ho'
2303
					END
2304
					ELSE
2305
					BEGIN
2306
						SET @l_BRANCH_TYPE = 'dvkd'
2307
					END
2308
					IF(@MONTH_RATE = '' OR @MONTH_RATE IS NULL)
2309
					BEGIN
2310
						ROLLBACK TRANSACTION
2311
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Tháng định mức không được để trống' ErrorDesc
2312
						RETURN '-1'
2313
					END
2314
					IF(@YEAR_RATE = '' OR @YEAR_RATE IS NULL)
2315
					BEGIN
2316
						ROLLBACK TRANSACTION
2317
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Năm định mức không được để trống' ErrorDesc
2318
						RETURN '-1'
2319
					END
2320
				-- END KIỂM TRA HẠN MỨC
2321
				-- BEGIN VALIDATE
2322
					IF(@MONTH_RATE = 'M1')
2323
					BEGIN
2324
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2325
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2326
					END
2327
					IF(@MONTH_RATE = 'M2')
2328
					BEGIN
2329
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2330
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2331
					END
2332
					IF(@MONTH_RATE = 'M3')
2333
					BEGIN
2334
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2335
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2336
					END
2337
					IF(@MONTH_RATE = 'M4')
2338
					BEGIN
2339
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2340
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2341
					END
2342
					IF(@MONTH_RATE = 'M5')
2343
					BEGIN
2344
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2345
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2346
					END
2347
					IF(@MONTH_RATE = 'M6')
2348
					BEGIN
2349
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID,		 GD_ID , BRANCH_ID,  DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5,	 M6,   M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2350
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID,	@YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1',			'A',		NULL,			NULL )
2351
					END
2352
					IF(@MONTH_RATE = 'M7')
2353
					BEGIN
2354
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2355
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2356
					END
2357
					IF(@MONTH_RATE = 'M8')
2358
					BEGIN
2359
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2360
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2361
					END
2362
					IF(@MONTH_RATE = 'M9')
2363
					BEGIN
2364
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2365
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2366
					END
2367
					IF(@MONTH_RATE = 'M10')
2368
					BEGIN
2369
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2370
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2371
					END
2372
					IF(@MONTH_RATE = 'M11')
2373
					BEGIN
2374
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2375
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2376
					END
2377
					IF(@MONTH_RATE = 'M12')
2378
					BEGIN
2379
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT)
2380
						VALUES(@p_REQ_PAY_ID, @GD_ID, @BRANCH_ID, @DEP_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL )
2381
					END
2382
				-- END VALIDATE
2383
					
2384
				-- CHECK HẠN MỨC
2385
					EXEC TR_BUDGET_CHECK_LIMIT_MONTH_Byid @GD_ID, @GD_CODE ,@l_BRANCH_TYPE, @YEAR_RATE , @MONTH_RATE, @l_BUDGET_LIMIT_CURRENT out, @l_BUDGET_USED_CURRENT out
2386
					IF(@l_BUDGET_LIMIT_CURRENT < @l_BUDGET_USED_CURRENT)
2387
					BEGIN
2388
						ROLLBACK TRANSACTION
2389
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT,'#,#', 'vi-VN')  ErrorDesc
2390
						RETURN '-1'
2391
					END
2392
				END
2393
			 --END CHECK HAN MUC NGAN SACH CHI PHI THEO THANG
2394
			END
2395
		-- END VALIDATE
2396

    
2397
			DECLARE @p_BUDGET_ID VARCHAR(15);
2398
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
2399
			IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
2400
			INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL  ,TO_LEVEL, MONTH_RATE, YEAR_RATE, BUDGET_TYPE, BRANCH_ID ,DEP_ID) 
2401
			VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(), @p_REQ_TYPE_CURRENCY , @p_RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL,  @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID, @DEP_ID)
2402
		IF @@error<>0 GOTO ABORT;
2403
		FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
2404
		@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR
2405
		END;
2406
		CLOSE XmlDataGood;
2407
		DEALLOCATE XmlDataGood;
2408
-- END THONG TIN HAMG MUC NGAN SACH VA CHI PHI
2409

    
2410

    
2411
-- BEGIN THONG TIN PHUONG THUC THANH TOAN
2412
	-- DELETE
2413
		DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2414
	--DECLARE
2415
		DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2), @REQ_PAY_TYPE varchar(1),@REQ_PAY_DESC nvarchar(MAX),
2416
		@REQ_PAY_ENTRIES nvarchar(MAX),@CHECK_IN VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20)
2417
	-- SET
2418
		SET @INDEX = 0
2419
	-- DECLARE CURSOR
2420
		DECLARE XmlDataMethod CURSOR FOR SELECT * FROM OPENXML(@hdocMethod, 'Root/XmlDataMethod',2)
2421
		WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2), REQ_PAY_TYPE varchar(1),REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),
2422
		ACC_NO VARCHAR(250), ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15), 
2423
		BANKCODE_NAPAS VARCHAR(20), BANKCODE VARCHAR(20), BANKNAME NVARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT NVARCHAR(20))
2424
	-- BEGIN CURSOR THONG TIN PHUONG THUC THANH TOAN
2425
		OPEN XmlDataMethod
2426
		FETCH NEXT FROM XmlDataMethod INTO  @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,
2427
		@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
2428
		WHILE @@fetch_status=0 
2429
		BEGIN
2430
		-- SET
2431
			SET @INDEX_METHOD = @INDEX_METHOD+1
2432
		-- BEGIN VALIDATE
2433
			IF(@p_TYPE_FUNCTION ='SEND')
2434
			BEGIN
2435

    
2436
				IF(@ACC_NO IS NULL OR @ACC_NO = '')
2437
				BEGIN
2438
					ROLLBACK TRANSACTION
2439
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': số tài khoản '+ N' không được để trống' ErrorDesc
2440
					RETURN '-1'
2441
				END
2442

    
2443
				IF((@BANKCODE IS NULL OR @BANKCODE = '') AND @CHECK_IN = 'O')
2444
				BEGIN
2445
					ROLLBACK TRANSACTION
2446
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Loại tài khoản là ngoài hệ thống! Vui lòng chọn lại Tên ngân hàng/nơi cấp CMND từ danh sách!' ErrorDesc
2447
					RETURN '-1'
2448
				END
2449

    
2450
				IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT = '' OR @ISSUED_DT IS NULL))
2451
				BEGIN
2452
					ROLLBACK TRANSACTION
2453
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Ngày cấp CMND '+ N' không được để trống nếu phương thức thanh toán là bằng tiền mặt' ErrorDesc
2454
					RETURN '-1'
2455
				END
2456

    
2457
				IF(@ISSUED_BY = '' OR @ISSUED_BY IS NULL)
2458
				BEGIN
2459
					ROLLBACK TRANSACTION
2460
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Tên ngân hàng/nơi cấp CMND '+ N' không được để trống' ErrorDesc
2461
					RETURN '-1'
2462
				END
2463

    
2464
				IF(@ACC_NAME = '' OR @ACC_NAME IS NULL)
2465
				BEGIN
2466
					ROLLBACK TRANSACTION
2467
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Tên tài khoản/người nhận '+ N' không được để trống' ErrorDesc
2468
					RETURN '-1'
2469
				END
2470
			END
2471
		-- END VALIDATE
2472
			IF(@REQ_PAY_TYPE<>'1')
2473
			BEGIN
2474
				SET @ISSUED_DT = NULL
2475
			END
2476
			IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='')
2477
			BEGIN
2478
				SET @TYPE_TRANSFER = 'A'
2479
			END
2480

    
2481
			DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
2482
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
2483
			IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
2484
			INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID, REQ_PAY_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT)
2485
			VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), @p_REQ_TYPE_CURRENCY , @p_RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT)
2486
		IF @@error<>0 GOTO ABORT;
2487
		FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,
2488
		@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
2489
		END
2490
		CLOSE XmlDataMethod;
2491
		DEALLOCATE XmlDataMethod;
2492
	-- END CURSOR THONG TIN PHUONG THUC THANH TOAN
2493
-- END THONG TIN PHUONG THUC THANH TOAN
2494

    
2495
-- BEGIN THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM
2496
	-- DELETE
2497
		DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2498
	-- DECLARE
2499
		DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000), @CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20), @LICENSE_DT VARCHAR(15)
2500
	-- DECLARE CURSOR
2501
		DECLARE XmlAttach CURSOR FOR SELECT * FROM OPENXML(@hdocAttach, 'Root/XmlAttach',2) 
2502
		WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000), CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(15))
2503
	-- BEGIN CURSOR THONG TIN CHUNG TU KHAC DINH KEM
2504
		OPEN XmlAttach
2505
		FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
2506
			WHILE @@fetch_status=0 
2507
			BEGIN
2508
				
2509
				IF (@REF_DT='')
2510
				BEGIN
2511
					SET @REF_DT = NULL
2512
				END
2513
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
2514
				IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
2515
				INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],[AMT],REF_DT, LICENSE_DT) VALUES
2516
				(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,CONVERT(DATE,@REF_DT,103) ,CONVERT(DATE, @LICENSE_DT,103))
2517
			IF @@error<>0 GOTO ABORT;
2518
			FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
2519
			END
2520
		CLOSE XmlAttach;
2521
		DEALLOCATE XmlAttach;    
2522
-- END THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM
2523

    
2524
		------------------------
2525
	-- NEU LA THANH TOAN HOAN TAM UNG
2526
		IF(@p_REQ_TYPE = 'I')
2527
		BEGIN
2528
		-- DELETE
2529
			DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
2530

    
2531
			DECLARE XmlDataPay CURSOR FOR SELECT * FROM OPENXML(@hDoc2, '/Root/XmlDataPay', 2)
2532
			WITH(PAY_ADV_ID nvarchar(50),AMT_ADVANCED decimal(18, 0),AMT_DO decimal(18,2),
2533
			AMT_REMAIN decimal(18,2),AMT_PAY decimal(18,2),AMT_USE decimal(18,2),AMT_REVERT DECIMAL(18,0),AMT_ADD DECIMAL(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), TRN_DATE VARCHAR(15))
2534
		-- BEGIN CURSOR THONG TIN PHIEU DE NGHI TAM UNG
2535
			OPEN XmlDataPay; 
2536
			FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
2537
			WHILE @@fetch_status=0 
2538
			BEGIN
2539
				SET @INDEX_AD = @INDEX_AD +1
2540
				SET @REQ_PAY_ADV_CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID)
2541
		-- BEGIN VALIDATE
2542
				IF(@p_TYPE_FUNCTION ='SEND') 
2543
				BEGIN
2544
					-- KIEM TRA XEM CO PHIEU NAO DANG DUOC THANH TOAN HOAN TAM UNG MA CHUA DUYET HAY CHUA
2545
					--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS_KT <>'A' OR AUTH_STATUS_KT IS NULL)) AND PAY_ID <> @p_REQ_PAY_ID))
2546
					IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS ='A' AND ISNULL(AUTH_STATUS_KT,'') <> 'A')) AND PAY_ID <> @p_REQ_PAY_ID))
2547
					BEGIN
2548
						ROLLBACK TRANSACTION
2549
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng số '+@REQ_PAY_ADV_CODE+ N' đang được thanh toán hoàn tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2550
						RETURN '-1'
2551
					END
2552
					
2553
					-- KIEM TRA NEU SO TIEN DE NGHI HOAN TAM ƯNG LON HON SO TIEN CON LAI CAN PHAI TAM UNG
2554
					IF(@AMT_REVERT>(@AMT_REMAIN -@AMT_USE) AND @AMT_REVERT >0)
2555
					BEGIN
2556
						ROLLBACK TRANSACTION
2557
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Số tiền hoàn ứng không được vượt quá '+FORMAT((@AMT_REMAIN -@AMT_USE),'#,#', 'vi-VN') ErrorDesc
2558
						RETURN '-1'
2559
					END
2560
					--KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
2561
					IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADV_ID)<=0)
2562
					BEGIN
2563
						ROLLBACK TRANSACTION
2564
						SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc
2565
						RETURN '-1'
2566
					END
2567
					
2568
				END
2569
		-- END VALIDATE
2570
				DECLARE @p_REQ_PAYDT_ID VARCHAR(15);
2571
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_DT', @p_REQ_PAYDT_ID OUT;
2572
				IF @p_REQ_PAYDT_ID='' OR @p_REQ_PAYDT_ID IS NULL GOTO ABORT;
2573
				INSERT INTO TR_REQ_PAYMENT_DT
2574
				VALUES (@p_REQ_PAYDT_ID,@PAY_ADV_ID,@p_REQ_PAY_ID , ISNULL(@AMT_ADVANCED,0) ,ISNULL(@AMT_DO,0),ISNULL(@AMT_REMAIN,0),
2575
				ISNULL(ISNULL(@AMT_USE,0) + ISNULL(@AMT_REVERT,0) - ISNULL(@AMT_ADD,0),0) ,ISNULL(@AMT_USE,0) ,ISNULL(@AMT_REVERT,0), ISNULL(@AMT_ADD,0), CONVERT(DATE,@TRN_DATE,103)  ,@p_MAKER_ID ,GETDATE() ,NULL ,NULL,'U' ,NULL ,NULL ,NULL ,NULL,NULL, @p_REQ_TYPE_CURRENCY , @p_RATE)
2576
			IF @@error<>0 GOTO ABORT;
2577
			FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
2578
			END
2579
			CLOSE XmlDataPay;
2580
			DEALLOCATE XmlDataPay;
2581
		--END CURSOR THONG TIN PHIEU DE NGHI TAM UNG
2582
		--------------------------------------------------------------------------------------------------------------------
2583
		--INSERT FROM CatCursor
2584
		--DELETE
2585
			DELETE FROM TR_REQ_PAY_CAT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2586
			--CatCursor
2587
			DECLARE @REQ_ADV_ID varchar(15),@CAT_NAME nvarchar(100),@TOTAL_AMT_CAT decimal(18,2), @DEPT_ID VARCHAR(15)
2588
			DECLARE XmlDataCat CURSOR FOR
2589
			SELECT * FROM OPENXML(@hdoc, 'Root/XmlDataCat',2) 
2590
			WITH(REQ_ADV_ID VARCHAR(15),CAT_NAME nvarchar(100),TOTAL_AMT decimal(18,2), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
2591
			OPEN XmlDataCat
2592
			FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
2593
			WHILE @@fetch_status=0 
2594
			BEGIN
2595
				SET @INDEX = @INDEX +1
2596
				DECLARE @p_REQ_PAY_CAT_ID VARCHAR(15);
2597
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_CAT', @p_REQ_PAY_CAT_ID OUT;
2598
				IF @p_REQ_PAY_CAT_ID='' OR @p_REQ_PAY_CAT_ID IS NULL GOTO ABORT;
2599
				INSERT INTO TR_REQ_PAY_CAT
2600
				VALUES (@p_REQ_PAY_CAT_ID,@p_REQ_PAY_ID,@REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@p_MAKER_ID,GETDATE(), @p_REQ_TYPE_CURRENCY , @p_RATE)
2601
			IF @@error<>0 GOTO ABORT;
2602
			FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
2603
			END
2604
			CLOSE XmlDataCat;
2605
			DEALLOCATE XmlDataCat;
2606
		END
2607
	-- NEU LA THANH TOAN KHAC
2608
		IF(@p_REQ_TYPE = 'D' OR @p_REQ_TYPE ='I')
2609
		BEGIN
2610
		-- DELETE
2611
			DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2612
		-- DECLARE
2613
			DECLARE @SUM_TTCT_LINK DECIMAL(18,0), @SUM_TT_CT DECIMAL(18,0), @SUM_KUY_KE_TT DECIMAL(18,0),@SUM_PYCMS_LINK DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(250), @PDNTT_CODE_LIST VARCHAR(250)
2614
			DECLARE @REQ_PAY_SERVICE_NAME nvarchar(100),@RECEIVE_ID_SERVICE varchar(15),@RECEIVE_NAME_SERVICE nvarchar(100),@REQ_PAY_REASON_SERVICE nvarchar(MAX), @TOTAL_AMT_SERVICE decimal(18,2),
2615
			@REQ_PAY_TYPE_SERVICE varchar(1),@REQ_PAY_DESC_SERVICE nvarchar(MAX),@REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),@DEPT_ID_SRV VARCHAR(15)
2616
		-- SET
2617
			SET @SUM_KUY_KE_TT=0
2618
			SET @INDEX = 0
2619
		-- DECLARE CURSOR
2620
			DECLARE XmlDataService CURSOR FOR SELECT * FROM OPENXML(@hdocService, 'Root/XmlDataService',2)
2621
			WITH(REQ_PAY_SERVICE_NAME nvarchar(100),RECEIVE_ID_SERVICE varchar(15),RECEIVE_NAME_SERVICE nvarchar(100),REQ_PAY_REASON_SERVICE nvarchar(MAX),
2622
			TOTAL_AMT_SERVICE decimal(18,2),REQ_PAY_TYPE_SERVICE varchar(1),REQ_PAY_DESC_SERVICE nvarchar(MAX),REQ_PAY_ENTRIES_SERVICE nvarchar(MAX), 
2623
			DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
2624
		-- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN
2625
			OPEN XmlDataService
2626
			FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
2627
			@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
2628
			WHILE @@fetch_status=0 
2629
			BEGIN
2630
				SET @INDEX = @INDEX +1
2631
				SET @SUM_TTCT_LINK =(SELECT SUM(TOTAL_AMT*ISNULL(RATE,1)) FROM TR_REQ_PAY_SERVICE WHERE
2632
						REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND EMP_ID =@RECEIVE_ID_SERVICE)
2633
				SET @SUM_PYCMS_LINK =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE),0)
2634
				SET @SUM_TT_CT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)
2635
				SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE
2636
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
2637
				SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE) AND REQ_PAY_ID <> @p_REQ_PAY_ID
2638
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
2639
			--------------- BEGIN VALIDATE --------------
2640
				IF(@p_TYPE_FUNCTION ='SEND')
2641
				BEGIN
2642
					IF(@DEPT_ID_SRV IS NULL OR @DEPT_ID_SRV ='')
2643
					BEGIN
2644
						ROLLBACK TRANSACTION
2645
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban chịu chi phí không được để trống' ErrorDesc
2646
						RETURN '-1'
2647
					END	
2648
				
2649
					IF(@TOTAL_AMT_SERVICE IS NULL)
2650
					BEGIN
2651
						ROLLBACK TRANSACTION
2652
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không được để trống' ErrorDesc
2653
						RETURN '-1'
2654
					END
2655
				
2656
					IF(@TOTAL_AMT_SERVICE < 0)
2657
					BEGIN
2658
						ROLLBACK TRANSACTION
2659
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không thể nhỏ hơn 0' ErrorDesc
2660
						RETURN '-1'
2661
					END
2662

    
2663
					IF(((ISNULL(@SUM_TTCT_LINK,0) +ISNULL(@SUM_PYCMS_LINK,0) + ISNULL(@TOTAL_AMT_SERVICE,0)) > ISNULL(@SUM_TT_CT,0)) AND @RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
2664
					BEGIN
2665
						ROLLBACK TRANSACTION
2666
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,
2667
						N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+N': Thông tin chi tiết về hạn mức sử dụng của tờ trình số: '+(SELECT TOP 1 ISNULL(REQ_CODE,'') FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)+N' như sau:'
2668
						+ CHAR(10) + N'* Số tiền các phiếu yêu cầu mua sắm số:'+ISNULL(@PYCMS_CODE_LIST,'')+N' đã sử dụng: '+FORMAT(ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'+
2669
						+ CHAR(10) +N'* Số tiền ở các phiếu thanh toán số: '+ISNULL(@PDNTT_CODE_LIST,'')+N' đã sử dụng: '+ FORMAT(ISNULL(@SUM_TTCT_LINK,0),'#,#', 'vi-VN') +' VND'
2670
						+ CHAR(10) +N'* Bạn đang thanh toán cho phiếu này với số tiền: '+ FORMAT(ISNULL(@TOTAL_AMT_SERVICE,0),'#,#', 'vi-VN') +' VND'
2671
						+ CHAR(10) +N'* Số tiền còn lại được phép thanh toán là: '+FORMAT(ISNULL(@SUM_TT_CT,0) -ISNULL(@SUM_TTCT_LINK,0) -ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'  ErrorDesc
2672
						RETURN '-1'
2673
					END
2674
				END
2675
			--------------- END VALIDATE ----------------
2676
				--IF(@RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
2677
				--BEGIN
2678
				--	SET @SUM_PYCMS_LINK = @SUM_PYCMS_LINK +@TOTAL_AMT_SERVICE
2679
				--END
2680
				--SET @SUM_KUY_KE_TT = @SUM_KUY_KE_TT + @TOTAL_AMT_SERVICE
2681
				
2682
				DECLARE @p_REQ_PAY_SERVICE_ID VARCHAR(15);
2683
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SERVICE', @p_REQ_PAY_SERVICE_ID OUT;
2684
				IF @p_REQ_PAY_SERVICE_ID='' OR @p_REQ_PAY_SERVICE_ID IS NULL GOTO ABORT;
2685
				INSERT INTO TR_REQ_PAY_SERVICE(SERVICE_ID,REQ_PAY_ID,[SERVICE_NAME],EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES,MAKER_ID,CREATE_DT,DEPT_ID,CURRENCY,RATE)
2686
				VALUES (@p_REQ_PAY_SERVICE_ID,@p_REQ_PAY_ID,@REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
2687
				@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@p_MAKER_ID,GETDATE(),@DEPT_ID_SRV, @p_REQ_TYPE_CURRENCY , @p_RATE)
2688
			IF @@error<>0 GOTO ABORT;
2689
			FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,@REQ_PAY_TYPE_SERVICE,
2690
			@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
2691
			END
2692
			CLOSE XmlDataService;
2693
			DEALLOCATE XmlDataService;
2694
		-- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN
2695
		END
2696
		IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR (@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE ='I')
2697
		BEGIN
2698
			DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
2699
			DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
2700
		END
2701
	-- NEU LA THANH TOAN PO HOP DONG
2702
		IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE ='I')
2703
		BEGIN
2704
		-- DELETE
2705
			--DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
2706
			/*
2707
			IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL))
2708
			BEGIN
2709
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
2710
			END
2711
			*/
2712
		-- DECLARE
2713
			DECLARE @INDEX_PO INT, @REF_ID VARCHAR(15),@IS_CLOSED VARCHAR(1)
2714
		--SET
2715
			SET @INDEX_PO = 0
2716
		-- DECLARE CURSOR
2717
			DECLARE XmlDataPO CURSOR FOR SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2)
2718
			WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
2719
		-- BEGIN CURSOR THÔNG TIN PO/ HOP DONG
2720
			OPEN XmlDataPO;
2721
			FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
2722
			WHILE @@fetch_status=0 
2723
			BEGIN
2724
			-- SET
2725
				SET @INDEX_PO = @INDEX_PO +1
2726
			-- BEGIN VALIDATE
2727
				IF(@p_TYPE_FUNCTION ='SEND') 
2728
				BEGIN
2729
					DECLARE @PDN_TAMUNG_LIST VARCHAR(4000) --- LUCTV 19.10.2022
2730
					-- KIEM TRA PO DUOC DUYET HAY CHUA
2731
					--IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
2732
					--BEGIN
2733
					--ROLLBACK TRANSACTION
2734
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2735
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
2736
					--	RETURN '-1'
2737
					--END
2738
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2739
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' 
2740
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
2741
					--BEGIN
2742
					--	ROLLBACK TRANSACTION
2743
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
2744
					--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2745
					--	RETURN '-1'
2746
					--END
2747
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2748
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C'
2749
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
2750
					--BEGIN
2751
					--	ROLLBACK TRANSACTION
2752
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
2753
					--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2754
					--	RETURN '-1'
2755
					--END
2756
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2757
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' 
2758
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
2759
					--BEGIN
2760
					--	ROLLBACK TRANSACTION
2761
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
2762
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2763
					--	RETURN '-1'
2764
					--END
2765
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2766
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
2767
					--BEGIN
2768
					--	ROLLBACK TRANSACTION
2769
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2770
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
2771
					--	RETURN '-1'
2772
					--END
2773
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2774
						--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID 
2775
						--IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
2776
						--BEGIN
2777
						--	ROLLBACK TRANSACTION
2778
						--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
2779
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2780
						--	RETURN '-1'
2781
						--END
2782
						---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2783
						--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
2784
						--BEGIN
2785
						--	ROLLBACK TRANSACTION
2786
						--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
2787
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2788
						--	RETURN '-1'
2789
						--END
2790
						--IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID =@REF_ID AND PAY_ID =@PAY_ID AND 
2791
						--			REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
2792
						--BEGIN
2793
						--	ROLLBACK TRANSACTION
2794
						--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
2795
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2796
						--	RETURN '-1'
2797
						--END
2798
						-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2799
						SET @PDN_TAMUNG_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN 
2800
						(SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P') AND ISNULL(AUTH_STATUS_KT,'') NOT IN ('A','E','R')
2801
						FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
2802
						--- VALIDATE PO DANG TRONG QUA TRINH TAM UNG
2803
						IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID 
2804
						IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
2805
						BEGIN
2806
							ROLLBACK TRANSACTION
2807
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
2808
							(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất.Danh sách phiếu tạm ứng đang sử dụng: '+ ISNULL(@PDN_TAMUNG_LIST,'') ErrorDesc
2809
							RETURN '-1'
2810
						END
2811
						-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2812
						IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
2813
						BEGIN
2814
							ROLLBACK TRANSACTION
2815
							SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2816
							(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
2817
							RETURN '-1'
2818
						END
2819
				END
2820
			-- END VALIDATE
2821
				DECLARE @REQ_PAYDTID VARCHAR(15);
2822
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
2823
				IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
2824
				IF(LEFT(@REF_ID, 3) = 'TRC')
2825
				BEGIN
2826
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) 
2827
					VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'C')
2828
				END
2829
				ELSE
2830
				BEGIN
2831
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) 
2832
					VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'P')
2833
				END
2834
				
2835
			IF @@error<>0 GOTO ABORT;
2836
			FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
2837
			END
2838
			CLOSE XmlDataPO;
2839
			DEALLOCATE XmlDataPO;
2840
		-- END CURSOR THÔNG TIN PO/ HOP DONG
2841

    
2842
		-- DELETE
2843
			DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2844
		-- DECLARE
2845
			DECLARE @PO_ID VARCHAR(15), @PAY_PHASE NVARCHAR(250), @AMT_ADVANCE DECIMAL(18,2),
2846
			@REQ_AD_DT VARCHAR(20),@PROCESS VARCHAR(15),@PAY_ID VARCHAR(15),@AMT_PAY_DO DECIMAL(18,2),@AMT_PAY_REAL DECIMAL(18,2)
2847
		-- DECLARE CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG
2848
			DECLARE XmlDataSchedule CURSOR FOR SELECT * FROM OPENXML(@hdocSchedule, 'Root/XmlDataSchedule',2)
2849
			WITH(PO_ID VARCHAR(15),PAY_PHASE VARCHAR(15),AMT_PAY DECIMAL(18,2),REQ_ADV_ID VARCHAR(15), AMT_ADVANCE DECIMAL(18,2),
2850
			AMT_REMAIN DECIMAL(18,2),REQ_AD_DT VARCHAR(20),PROCESS VARCHAR(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),REQ_PAY_DESC NVARCHAR(250),
2851
			REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),AMT_PAY_DO DECIMAL(18,2),AMT_PAY_REAL DECIMAL(18,2))
2852
		-- BEGIN CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG 
2853
			OPEN XmlDataSchedule
2854
			SET @INDEX_PO = 0
2855
			FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@PAY_PHASE,@AMT_PAY, @REQ_ADV_ID,@AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT,
2856
			@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
2857
			WHILE @@fetch_status=0 
2858
			BEGIN
2859
				--IF(@AMT_REMAIN =0)
2860
				--BEGIN
2861
				--	SET @PROCESS ='3'
2862
				--END
2863
				--IF(@PROCESS <>'2')
2864
				--BEGIN
2865
				--	SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +@AMT_REMAIN
2866
				--END
2867
				SET @INDEX_PO = @INDEX_PO +1
2868
				SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +(@AMT_PAY - @AMT_ADVANCE -@AMT_PAY_DO)
2869
			-- BEGIN VALIDATE
2870
				IF(@p_TYPE_FUNCTION ='SEND' AND @p_REQ_TYPE ='P')
2871
				BEGIN
2872
					IF(ISNULL(@AMT_PAY_REAL,0) < ISNULL(@AMT_ADVANCE ,0))
2873
					BEGIN
2874
						ROLLBACK TRANSACTION
2875
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Số tiền thanh toán thực tế tối thiểu phải bằng số tiền đã tạm ứng : ' +FORMAT(SUM(@AMT_ADVANCE),'#,#', 'vi-VN')  ErrorDesc
2876
						RETURN '-1'
2877
					END
2878
				END
2879
			-- END VALIDATE
2880
				DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
2881
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
2882
				IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
2883

    
2884
				INSERT INTO TR_REQ_PAY_SCHEDULE (SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
2885
				CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
2886
				VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID, @AMT_PAY, @PAY_PHASE, @REQ_ADV_ID, @AMT_ADVANCE, @AMT_PAY_DO, @AMT_REMAIN,
2887
				--IIF(@PROCESS<>'2',(@AMT_PAY-@AMT_ADVANCE),0),
2888
				GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),@PROCESS,@p_MAKER_ID,GETDATE(),'U','','PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES, @p_REQ_TYPE_CURRENCY , @p_RATE,@AMT_PAY_REAL)
2889
			IF @@error<>0 GOTO ABORT;
2890
			FETCH NEXT FROM XmlDataSchedule INTO @PO_ID, @PAY_PHASE, @AMT_PAY, @REQ_ADV_ID, @AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT,
2891
			@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
2892
			END
2893
			CLOSE XmlDataSchedule;
2894
			DEALLOCATE XmlDataSchedule;
2895
		-- END CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG 
2896
			---- VALIDATE SO TIEN
2897
			--IF(@p_REQ_AMT > ISNULL(@TOTAL_SCHEDULE_AMT,0))
2898
			--BEGIN
2899
			--	ROLLBACK TRANSACTION
2900
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+  FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
2901
			--	RETURN '-1'
2902
			--END
2903
	     ------
2904
		END
2905
	-- NEU LA THANH TOAN CAC HOP DONG DINH KY
2906
		IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE='I')
2907
		BEGIN
2908
		-- DELETE
2909
			--DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
2910
			/*
2911
			IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y')
2912
			BEGIN
2913
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
2914
			END
2915
			*/
2916
		-- DECLARE
2917
			DECLARE @INDEX_PERIOD INT, @CONTRACT_PERIOD_ID VARCHAR(15),@IS_PERIOD_CLOSED VARCHAR(1), @DELIVERY_DT VARCHAR(20)
2918
		-- SET
2919
			SET @INDEX_PERIOD = 0
2920
		--DECLARE CURSOR THONG TIN HOP DONG DINH KY
2921
			DECLARE XmlDataRecurring CURSOR FOR SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2)
2922
			WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15), DELIVERY_DT VARCHAR(20))
2923
		-- BEGIN CURSOR THONG TIN HOP DONG DINH KY
2924
			OPEN XmlDataRecurring;
2925
			FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT
2926
			WHILE @@fetch_status = 0 
2927
			BEGIN
2928
			-- SET
2929
				SET @INDEX_PO = @INDEX_PO +1
2930
			-- BEGIN VALIDATE
2931
				IF(@p_TYPE_FUNCTION ='SEND') 
2932
				BEGIN
2933
					IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
2934
					BEGIN
2935
						ROLLBACK TRANSACTION
2936
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2937
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
2938
						RETURN '-1'
2939
					END
2940

    
2941
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID 
2942
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
2943
					BEGIN
2944
						ROLLBACK TRANSACTION
2945
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
2946
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
2947
						RETURN '-1'
2948
					END
2949

    
2950
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2951
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
2952
					BEGIN
2953
						ROLLBACK TRANSACTION
2954
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2955
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
2956
						RETURN '-1'
2957
					END
2958
				END
2959
			-- END VALIDATE
2960
				DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
2961
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
2962
				IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
2963
				INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE, DELIVERY_DT) 
2964
				VALUES(@REQ_PAYDTID_PERIOD,@p_REQ_PAY_ID,@CONTRACT_PERIOD_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_PERIOD_CLOSED,'C', CONVERT(DATE,@DELIVERY_DT,103))
2965

    
2966
			IF @@error<>0 GOTO ABORT;
2967
			FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT
2968
			END
2969
			CLOSE XmlDataRecurring;
2970
			DEALLOCATE XmlDataRecurring;
2971
		-- END CURSOR THONG TIN HOP DONG DINH KY
2972

    
2973
		-- DELETE
2974
			DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2975
		-- DECLARE
2976
			DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5), @OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2), @FROM_DATE VARCHAR(20),
2977
			@TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15),  @_PROCESS VARCHAR(15),@PARENT_ID VARCHAR(15),@REASON_TTDK NVARCHAR(2000)
2978
		-- DECLARE CURSOR
2979
			DECLARE XmlDataPeriod CURSOR FOR SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
2980
			WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5), OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), 
2981
			RATE DECIMAL(18,0),FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20), AD_PAY_ID VARCHAR(15), PROCESS VARCHAR(5),PARENT_ID VARCHAR(15),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000))
2982
		-- BEGIN CURSOR THONG TIN THANH TOAN HOP DONG DINH KY
2983
			OPEN XmlDataPeriod;
2984
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, 
2985
			@PAY_PHASE, @REASON_TTDK
2986
			WHILE @@fetch_status=0 
2987
			BEGIN
2988
			-- BEGIN VALIDATE
2989
				IF(@p_TYPE_FUNCTION ='SEND') 
2990
				BEGIN
2991
					IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) )
2992
					BEGIN
2993
						ROLLBACK TRANSACTION
2994
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
2995
						RETURN '-1'
2996
					END
2997
					-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
2998
					IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
2999
					BEGIN
3000
						ROLLBACK TRANSACTION
3001
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
3002
						RETURN '-1'
3003
					END
3004
					-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
3005
					IF(@CONTRACT_ID IS NOT NULL AND  @CONTRACT_ID <> '' )
3006
					BEGIN
3007
						IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
3008
						BEGIN
3009
							ROLLBACK TRANSACTION
3010
							SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
3011
							RETURN '-1'
3012
						END
3013
					END
3014
				END
3015
			-- END VALIDATE
3016

    
3017
				--IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
3018
				--	BEGIN
3019
				--		ROLLBACK TRANSACTION
3020
				--		SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Cột Số hợp đồng không được phép để trống' ErrorDesc
3021
				--		RETURN '-1'
3022
				--END
3023
				DECLARE @PERIOD_ID VARCHAR(15);
3024
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
3025
				IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
3026
				INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE,
3027
				TO_DATE,AD_PAY_ID,PROCESS,PARENT_ID,PAY_PHASE,REASON)
3028
				VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103), @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U', @p_REQ_TYPE_CURRENCY , @p_RATE,
3029
				CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK)
3030
			IF @@error<>0 GOTO ABORT;
3031
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, 
3032
			@PAY_PHASE, @REASON_TTDK
3033
			END
3034
			CLOSE XmlDataPeriod;
3035
			DEALLOCATE XmlDataPeriod;
3036
		END	
3037
	-- END CURSOR THONG TIN THANH TOAN HOP DONG DINH KY
3038
	
3039
--doanptt 15/02/2022		
3040
-- INSERT JOB
3041
-- DS PHIEU YEU CAU CONG TAC
3042
				DELETE FROM TR_REQ_PAY_JOB WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3043
				DECLARE @REQ_PAY_JOB_ID varchar(15) ,@REQ_PAY_ID varchar(15),@REQ_ID varchar(15), @REQ_CODE varchar(15), @MAKER_ID varchar(15),
3044
				@CREATE_DT varchar(15), @PAY_TYPE_J VARCHAR(5), @PAY_PHASE_J NVARCHAR(250), @PAY_AMT DECIMAL(18,0), @PAY_DESC NVARCHAR(1000)
3045
				, @AUTH_STATUS VARCHAR(1), @AUTH_STATUS_KT VARCHAR(1)
3046
				DECLARE XmlDataJob CURSOR LOCAL FOR
3047
				SELECT * FROM OPENXML(@hdocJob, 'Root/XmlDataJob',2) 
3048
				WITH(REQ_PAY_JOB_ID varchar(15) ,REQ_PAY_ID varchar(15),REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), 
3049
				PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1))
3050
				OPEN XmlDataJob
3051

    
3052
--- INSERT PHIEU YEU CAU CONG TAC
3053
				FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J , 
3054
				@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT
3055
				WHILE @@fetch_status=0 
3056
				BEGIN
3057
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
3058
					SET @INDEX_NS = @INDEX_NS +1
3059
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
3060
					IF(@p_TYPE_FUNCTION ='SEND')
3061
					BEGIN
3062
						IF(ISNULL(@AMT_EXE,0) =0)
3063
						BEGIN
3064
							ROLLBACK TRANSACTION
3065
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
3066
								RETURN '-1'
3067
						END
3068
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
3069
						BEGIN
3070
								ROLLBACK TRANSACTION
3071
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
3072
								RETURN '-1'
3073
						END		
3074
					END
3075
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
3076
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
3077
					BEGIN
3078
								ROLLBACK TRANSACTION
3079
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
3080
								RETURN '-1'
3081
					END*/
3082

    
3083
					DECLARE @p_REQ_JOB_ID VARCHAR(15);
3084
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB', @p_REQ_JOB_ID OUT;
3085
					IF @p_REQ_JOB_ID='' OR @p_REQ_JOB_ID IS NULL GOTO ABORT;
3086
					INSERT INTO TR_REQ_PAY_JOB(REQ_PAY_JOB_ID ,REQ_PAY_ID ,REQ_ID , REQ_CODE, MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT)
3087
					VALUES (@p_REQ_JOB_ID ,@p_REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , GETDATE() , @PAY_TYPE_J , @PAY_PHASE_J , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT)
3088
					IF @@error<>0 GOTO ABORT;
3089
					FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT
3090
				END;
3091
				CLOSE XmlDataJob;
3092
				DEALLOCATE XmlDataJob;
3093
--- END INSERT PHIEU YEU CAU CONG TAC
3094

    
3095
-- INSERT JOB DT 
3096
-- DS CHI TIET PHIEU YEU CAU CONG TAC
3097
				DELETE FROM TR_REQ_PAY_JOB_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3098
				DECLARE @REQ_PAY_JOB_DT_ID varchar(15) , @REQ_PAY_ID_DT varchar(15), @REQ_ID_DT varchar(15), @REQ_CODE_DT varchar(15), @MAKER_ID_DT varchar(15),
3099
				@CREATE_DT_DT varchar(15), @FULLNAME_DT NVARCHAR(250), @TLNAME_DT VARCHAR(15), @JOB_PLACE_DT VARCHAR(15), @FRMDATE_DT VARCHAR(15), @TODATE_DT VARCHAR(15),
3100
				@NUMBER_DAY_DT decimal(18,0), @DAY_RATE_DT decimal(18,0), @JOB_COST_DT decimal(18,0), @TYPE_TRANS_DT varchar(250), @COST_MOVE_DT decimal(18,0), 
3101
				@COST_RESIDENCE_DT decimal(18,0), @COST_OTHER_DT decimal(18,0), @COST_AMT_DT decimal(18,0), @AUTH_STATUS_DT VARCHAR(1), @AUTH_STATUS_KT_DT VARCHAR(1)
3102
				DECLARE XmlDataJobDT CURSOR LOCAL FOR
3103
				SELECT * FROM OPENXML(@hdocJobDT, 'Root/XmlDataJobDT',2) 
3104
				WITH(REQ_PAY_JOB_DT_ID varchar(15), REQ_PAY_ID varchar(15), REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), 
3105
				FULLNAME nvarchar(250), TLNAME_DT VARCHAR(15), JOB_PLACE varchar(15), FRMDATE varchar(15), TODATE varchar(15),NUMBER_DAY decimal(18,0), DAY_RATE decimal(18,0), 
3106
				JOB_COST decimal(18,0), TYPE_TRANS varchar(15), COST_MOVE decimal(18,0), COST_RESIDENCE decimal(18,0), COST_OTHER decimal(18,0), COST_AMT decimal(18,0) , 
3107
				AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) 
3108
				OPEN XmlDataJobDT
3109

    
3110
--- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC
3111
				FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
3112
				@CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT ,
3113
				@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
3114
				@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT
3115
				WHILE @@fetch_status=0 
3116
				BEGIN
3117
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
3118
					SET @INDEX_NS = @INDEX_NS +1
3119
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
3120
					IF(@p_TYPE_FUNCTION ='SEND')
3121
					BEGIN
3122
						IF(ISNULL(@AMT_EXE,0) =0)
3123
						BEGIN
3124
							ROLLBACK TRANSACTION
3125
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
3126
								RETURN '-1'
3127
						END
3128
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
3129
						BEGIN
3130
								ROLLBACK TRANSACTION
3131
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
3132
								RETURN '-1'
3133
						END		
3134
					END
3135
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
3136
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
3137
					BEGIN
3138
								ROLLBACK TRANSACTION
3139
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
3140
								RETURN '-1'
3141
					END*/
3142

    
3143
					DECLARE @p_REQ_JOB_DT_ID VARCHAR(15);
3144
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB_DT', @p_REQ_JOB_DT_ID OUT;
3145
					IF @p_REQ_JOB_DT_ID='' OR @p_REQ_JOB_DT_ID IS NULL GOTO ABORT;
3146
					INSERT INTO TR_REQ_PAY_JOB_DT(REQ_PAY_JOB_DT_ID , REQ_PAY_ID , REQ_ID , REQ_CODE, MAKER_ID , CREATE_DT , FULLNAME, TLNAME, JOB_PLACE , FRMDATE , TODATE ,NUMBER_DAY , DAY_RATE , 
3147
													JOB_COST , TYPE_TRANS , COST_MOVE , COST_RESIDENCE , COST_OTHER , COST_AMT , AUTH_STATUS, AUTH_STATUS_KT)
3148
					VALUES (@p_REQ_JOB_DT_ID , @p_REQ_PAY_ID, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
3149
							GETDATE() , @FULLNAME_DT ,@TLNAME_DT, @JOB_PLACE_DT , CONVERT(DATE,@FRMDATE_DT,103) , CONVERT(DATE,@TODATE_DT,103) ,
3150
							@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
3151
							@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT)
3152
					IF @@error<>0 GOTO ABORT;
3153
					FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
3154
									@CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT ,
3155
									@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
3156
									@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT
3157
				END;
3158
				CLOSE XmlDataJobDT;
3159
				DEALLOCATE XmlDataJobDT;
3160
--- END INSERT CHI TIET PHIEU YEU CAU CONG TAC
3161

    
3162

    
3163
--doanptt 17/02/2022		
3164
-- INSERT DRIVE
3165
-- DS PHIEU YEU CAU CONG TAC
3166
				DELETE FROM TR_REQ_PAY_DRIVE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3167
				DECLARE @REQ_PAY_DRIVE_ID varchar(15), @CAR_ID varchar(15), @CAR_PLATE varchar(15), @RATE_GAS_100KM decimal(18,0), @CAR_TYPE VARCHAR(15)
3168
				DECLARE XmlDataDrive CURSOR LOCAL FOR
3169
				SELECT * FROM OPENXML(@hdocDrive, 'Root/XmlDataDrive',2) 
3170
				WITH(REQ_PAY_DRIVE_ID varchar(15) ,REQ_PAY_ID varchar(15), CAR_ID varchar(15), CAR_PLATE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), 
3171
				PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1), 
3172
				RATE_GAS_100KM decimal(18,0), CAR_TYPE VARCHAR(15))
3173
				OPEN XmlDataDrive
3174

    
3175
--- INSERT PHIEU YEU CAU CONG TAC
3176
				FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, 
3177
				@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE
3178
				WHILE @@fetch_status=0 
3179
				BEGIN
3180
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
3181
					SET @INDEX_NS = @INDEX_NS +1
3182
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
3183
					IF(@p_TYPE_FUNCTION ='SEND')
3184
					BEGIN
3185
						IF(ISNULL(@AMT_EXE,0) =0)
3186
						BEGIN
3187
							ROLLBACK TRANSACTION
3188
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
3189
								RETURN '-1'
3190
						END
3191
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
3192
						BEGIN
3193
								ROLLBACK TRANSACTION
3194
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
3195
								RETURN '-1'
3196
						END		
3197
					END
3198
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
3199
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
3200
					BEGIN
3201
								ROLLBACK TRANSACTION
3202
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
3203
								RETURN '-1'
3204
					END*/
3205

    
3206
					DECLARE @p_REQ_DRIVE_ID VARCHAR(15);
3207
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE', @p_REQ_DRIVE_ID OUT;
3208
					IF @p_REQ_DRIVE_ID='' OR @p_REQ_DRIVE_ID IS NULL GOTO ABORT;
3209
					INSERT INTO TR_REQ_PAY_DRIVE(REQ_PAY_DRIVE_ID ,REQ_PAY_ID ,CAR_ID , CAR_PLATE , MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT, RATE_GAS_100KM, CAR_TYPE)
3210
					VALUES (@p_REQ_DRIVE_ID ,@p_REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , GETDATE() , @PAY_TYPE , @PAY_PHASE , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE)
3211
					IF @@error<>0 GOTO ABORT;
3212
					FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, 
3213
					@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE
3214
				END;
3215
				CLOSE XmlDataDrive;
3216
				DEALLOCATE XmlDataDrive;
3217
--- END INSERT PHIEU YEU CAU CONG TAC
3218

    
3219
-- INSERT DRIVE DT 
3220
-- DS CHI TIET PHIEU YEU CAU CONG TAC
3221
				DELETE FROM TR_REQ_PAY_DRIVE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3222
				DECLARE @REQ_PAY_DRIVE_DT_ID varchar(15), @FULLNAME NVARCHAR(250), @BRANCH_REQ VARCHAR(15), 
3223
				@KM_START decimal(18,0), @KM_END varchar(250), @KM_USED decimal(18,0), 
3224
				@RATE_GAS decimal(18,0), @REAL_GAS decimal(18,0), @REDUNDANCY_GAS decimal(18,0), @INVENTORY_GAS decimal(18,0), @COST_INCURRED decimal(18,0),
3225
				@CREATE_SCHEDULE NVARCHAR(250), @TRUONGDONVI VARCHAR(15)
3226
				DECLARE XmlDataDriveDT CURSOR LOCAL FOR
3227
				SELECT * FROM OPENXML(@hdocDriveDT, 'Root/XmlDataDriveDT',2) 
3228
				WITH(REQ_PAY_DRIVE_ID varchar(15), REQ_PAY_ID varchar(15), CAR_ID varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), 
3229
				BRANCH_REQ varchar(15), PAY_PHASE NVARCHAR(250), CAR_TYPE Nvarchar(250), CAR_PLATE varchar(15),RATE_GAS_100KM decimal(18,0), KM_START decimal(18,0), 
3230
				KM_END decimal(18,0), KM_USED varchar(15), RATE_GAS decimal(18,0), REAL_GAS decimal(18,0), REDUNDANCY_GAS decimal(18,0), INVENTORY_GAS decimal(18,0), 
3231
				NOTES NVARCHAR(MAX), COST_INCURRED decimal(18,0), CREATE_SCHEDULE NVARCHAR(250), TRUONGDONVI VARCHAR(15) , 
3232
				AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) 
3233
				OPEN XmlDataDriveDT
3234

    
3235
--- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC
3236
				FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
3237
				@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE,
3238
				@TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT
3239
				WHILE @@fetch_status=0 
3240
				BEGIN
3241
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
3242
					SET @INDEX_NS = @INDEX_NS +1
3243
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
3244
					IF(@p_TYPE_FUNCTION ='SEND')
3245
					BEGIN
3246
						IF(ISNULL(@AMT_EXE,0) =0)
3247
						BEGIN
3248
							ROLLBACK TRANSACTION
3249
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
3250
								RETURN '-1'
3251
						END
3252
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
3253
						BEGIN
3254
								ROLLBACK TRANSACTION
3255
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
3256
								RETURN '-1'
3257
						END		
3258
					END
3259
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
3260
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
3261
					BEGIN
3262
								ROLLBACK TRANSACTION
3263
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
3264
								RETURN '-1'
3265
					END*/
3266

    
3267
					DECLARE @p_REQ_DRIVE_DT_ID VARCHAR(15);
3268
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE_DT', @p_REQ_DRIVE_DT_ID OUT;
3269
					IF @p_REQ_DRIVE_DT_ID='' OR @p_REQ_DRIVE_DT_ID IS NULL GOTO ABORT;
3270
					INSERT INTO TR_REQ_PAY_DRIVE_DT(REQ_PAY_DRIVE_DT_ID, REQ_PAY_ID, CAR_ID, MAKER_ID, CREATE_DT, BRANCH_REQ, PAY_PHASE, CAR_TYPE, CAR_PLATE,
3271
					RATE_GAS_100KM, KM_START, KM_END, KM_USED, RATE_GAS, REAL_GAS, REDUNDANCY_GAS, INVENTORY_GAS, COST_INCURRED, NOTES, CREATE_SCHEDULE, TRUONGDONVI,
3272
					AUTH_STATUS, AUTH_STATUS_KT)
3273
					VALUES (@p_REQ_DRIVE_DT_ID , @p_REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
3274
					@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @COST_INCURRED, @NOTES,
3275
					@CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT)
3276
					IF @@error<>0 GOTO ABORT;
3277
					FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
3278
					@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE,
3279
					@TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT
3280
				END;
3281
				CLOSE XmlDataDriveDT;
3282
				DEALLOCATE XmlDataDriveDT;
3283
--- END INSERT CHI TIET PHIEU YEU CAU CONG TAC
3284
COMMIT TRANSACTION
3285
-- BEIGN VALIDATE SEND APPROVE
3286
	IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
3287
	BEGIN
3288

    
3289
	-- DECLARE
3290
		DECLARE @BRANCH_TYPE_CR VARCHAR(15)
3291
		DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0, @SUM_NGAN_SACH DECIMAL(18,2) =0, @SUM_USE_REAL DECIMAL(18,2), @SUM_SERVICE DECIMAL(18,0),
3292
		@SUM_SCHEDULE DECIMAL(18,0), @SUM_PERIOD DECIMAL(18,0), @SUM_PAY_BACK DECIMAL(18,0) =0, @SUM_ADD DECIMAL(18,0)
3293
	-- SET
3294
		SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
3295
		SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3296
		SET @SUM_PHUONG_THUC =ABS((SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
3297
		AND (TYPE_TRANSFER ='A' OR TYPE_TRANSFER IS NULL OR TYPE_TRANSFER ='')) - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
3298
		AND TYPE_TRANSFER ='R'))
3299
		SET @SUM_NGAN_SACH =(SELECT ISNULL(SUM(AMT_EXE * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3300
		SET @SUM_SERVICE =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3301
		SET @SUM_PERIOD =(SELECT ISNULL(SUM(AMT_PAY * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3302
		SET @SUM_SCHEDULE =(SELECT ISNULL(SUM(AMT_PAY_REAL * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3303

    
3304
		IF(@p_REQ_TYPE ='I')
3305
		BEGIN
3306
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_USE*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
3307
			SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_REVERT*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
3308
			SET @SUM_ADD =(SELECT ISNULL(SUM(AMT_ADD*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
3309
			SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='A') -
3310
			(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R')
3311
		END
3312
		IF(@p_REQ_TYPE ='P' AND @p_IS_PERIOD ='Y' AND @p_IS_PERIOD <>'' AND @p_IS_PERIOD IS NOT NULL)
3313
		BEGIN
3314
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3315
			--SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS <> '0')
3316
					
3317
		END
3318
		IF(@p_REQ_TYPE ='P' AND (@p_IS_PERIOD ='N' OR (@p_IS_PERIOD ='' OR @p_IS_PERIOD IS NULL)))
3319
		BEGIN
3320
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)	
3321
			SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_ADVANCE*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3322
		END
3323
		IF(@p_REQ_TYPE ='D')
3324
		BEGIN
3325
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
3326
		END
3327
		IF(@p_REQ_TYPE = 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_THANH_TOAN,0))
3328
		BEGIN
3329
			--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3330
			DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3331
			DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3332
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') + 'ss  ' + FORMAT(SUM(@SUM_NGAN_SACH),'#,#', 'vi-VN') ErrorDesc
3333
			RETURN '-1'
3334
		END
3335
		IF(@p_REQ_TYPE <> 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
3336
		BEGIN
3337
			--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3338
			DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3339
			DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3340
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn sử dụng thực tế là: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')  ErrorDesc
3341
			RETURN '-1'
3342
		END
3343
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD')
3344
		BEGIN
3345
			--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3346
			DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3347
			DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3348
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Cấp độ phòng giao dịch vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
3349
			RETURN '-1'
3350
		END
3351
		IF(@p_REQ_TYPE <> 'I')
3352
		BEGIN
3353
			IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID  =@p_REQ_PAY_ID))
3354
			BEGIN
3355
				--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3356
				DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3357
				DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3358
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
3359
				RETURN '-1'
3360
			END
3361
			--IF(ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0) <> @SUM_PHUONG_THUC)
3362
			--BEGIN
3363
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán tương ứng với số tiền thanh toán trừ số tiền hoàn tạm ứng: ' + FORMAT((ISNULL(@SUM_USE_REAL,0) - ISNULL(@SUM_PAY_BACK,0)),'#,#', 'vi-VN')  ErrorDesc
3364
			--	RETURN '-1'
3365
			--END
3366
			IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
3367
			BEGIN
3368
				--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3369
				DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3370
				DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3371
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: '  ErrorDesc
3372
				RETURN '-1'
3373
			END
3374
		END
3375
		ELSE
3376
		BEGIN
3377
			IF(ISNULL(@SUM_USE_REAL,0) >0)
3378
			BEGIN
3379
				IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID  =@p_REQ_PAY_ID))
3380
				BEGIN
3381
					--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3382
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3383
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3384
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
3385
					RETURN '-1'	
3386
				END
3387
				IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
3388
				BEGIN
3389
					--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3390
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3391
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3392
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')  ErrorDesc
3393
					RETURN '-1'
3394
				END
3395
				IF(ISNULL(@SUM_USE_REAL,0) <> (ISNULL(@SUM_SERVICE,0) + ISNULL(@SUM_PERIOD,0) + ISNULL(@SUM_SCHEDULE,0)))
3396
				BEGIN
3397
					--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3398
					DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3399
					DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3400
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng số tiền thanh toán dịch vụ, thanh toán nhà cung cấp, thanh toán định kì phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc
3401
					RETURN '-1'
3402
				END
3403
			END
3404
			--IF(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
3405
			IF(((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
3406
			BEGIN
3407
				--doanptt 300622 XOA CAC DONG DINH MUC KHI DUYET LUOI NSCP
3408
				DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3409
				DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID = @p_REQ_PAY_ID
3410
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán (hiệu số thanh toán và trích từ tai khoản) tương ứng với số tiền chi bổ sung trừ số tiền hoàn tạm ứng: ' + FORMAT(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))),'#,#', 'vi-VN') + ' ' + CAST(@SUM_PHUONG_THUC as nvarchar)  ErrorDesc
3411
				RETURN '-1'
3412
			END
3413
		END
3414
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
3415
		IF(ISNULL(@p_TRASFER_USER_RECIVE, '') <> '')
3416
		BEGIN
3417
			UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='W', PROCESS = NULL,CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
3418
		END
3419
		ELSE
3420
		BEGIN
3421
			UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL,CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
3422
		END
3423
		
3424
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
3425
				
3426
		VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu thanh toán và gửi phê duyệt')
3427
		--- Luu log chinh sua
3428
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
3429
		-----
3430
		UPDATE TR_REQ_PAY_SCHEDULE SET AMT_REMAIN =0.00 WHERE AMT_REMAIN <0
3431
		UPDATE TR_REQ_PAY_BUDGET SET AMT_APP= ROUND(AMT_APP,0), AMT_REMAIN = ROUND(AMT_REMAIN,0)
3432
				
3433
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
3434
		BEGIN
3435
			SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
3436
			RETURN '4'
3437
		END
3438
		ELSE
3439
		BEGIN
3440
			SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
3441
			RETURN '4'
3442
		END
3443
	END
3444
-- END VALIDATE SEND APPROVE	
3445

    
3446

    
3447
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
3448
RETURN '0'
3449
ABORT:
3450
BEGIN
3451
		ROLLBACK TRANSACTION
3452
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
3453
		RETURN '-1'
3454
End
3455

    
3456
GO
3457

    
3458
ALTER   PROCEDURE [dbo].[TR_ROLE_NOTIFI_ID]
3459
@PO_ID	varchar(500),
3460
@TYPE VARCHAR(100)
3461
AS
3462
	PRINT @TYPE
3463

    
3464
	DECLARE 
3465
		@BRANCH_CREATE VARCHAR(15),
3466
		@DEP_CREATE VARCHAR(15),
3467
		@BRANCH_TYPE VARCHAR(15),
3468
		@FATHER_ID VARCHAR(15),
3469
		--@FLAG VARCHAR(1), -- FLAG = 1: THANH TOÁN / TẠM ỨNG
3470
		---------BAODNQ 26/10/2022 : TĂNG KÍCH THƯỚC BIẾN @FLAG
3471
		@FLAG VARCHAR(5), -- FLAG = 1: THANH TOÁN / TẠM ỨNG
3472
		@AUTH_STATUS VARCHAR(10),
3473
		@PROCESS VARCHAR(10),
3474
		@MAKER_ID VARCHAR(15),
3475
		@DEP_CODE VARCHAR(15),
3476
		@NV_XL_MS VARCHAR(15)
3477
	DECLARE @ROLE_CURRENT VARCHAR(15), @USER_RECIVE_MAIL VARCHAR(15), @REQ_TYPE VARCHAR(15)
3478
	DECLARE @SYS_PREFIX VARCHAR(15),@PAGE NVARCHAR(200)
3479
	DECLARE @l_LST_REQ_ID TABLE (
3480
	[ID] [int] IDENTITY(1,1) NOT NULL,
3481
	[REQ_PAY_ID] [VARCHAR](50) NULL)
3482
	INSERT INTO @l_LST_REQ_ID SELECT VALUE FROM WSISPLIT(@PO_ID,',')
3483
	DECLARE @LST_POID TABLE(ID VARCHAR(15))
3484
	DECLARE @LST_USER_RECIVE TABLE (TLNAME VARCHAR(10))
3485
	--- DECLARE TABLE NHAN DU LIEU LA USER NAME DANG O BUOC PHE DUYET HIEN TAI
3486
	DECLARE @PL_PROCESS_CURRENT_SEARCH_TEMP TABLE
3487
	(
3488
	REQ_ID varchar(15),
3489
	PROCESS_ID varchar(10),
3490
	DVDM_NAME nvarchar(500),
3491
	TLNAME nvarchar(255),
3492
	TLFullName nvarchar(255),
3493
	NOTES nvarchar(500)
3494
	)
3495
	-----BAODNQ 5/1/2021 : Thêm gửi mail cho GDDV, TP, PP----------
3496
	DECLARE @p_MAKER_ID VARCHAR(15), @p_ROLE_ID VARCHAR(15), @p_ROLE_NAME VARCHAR(15) 
3497
	DECLARE @LST_ROLE TABLE(ROLE_ID VARCHAR(15), ROLE_NAME VARCHAR(15))
3498
	---------BAODNQ 2/11/2022 : Lấy mã code phòng ban tạo-------------
3499
	DECLARE @p_DEP_CREATE_CODE VARCHAR(15)
3500
	--------------------------
3501
	IF @TYPE = 'PO'
3502
	BEGIN
3503
		INSERT INTO @LST_POID VALUES(@PO_ID)
3504
		SET @FLAG = 0
3505
	END ELSE
3506
	IF @TYPE = 'USE'
3507
	BEGIN
3508
		INSERT INTO @LST_POID SELECT B.PO_ID 
3509
		FROM ASS_MASTER_PO B WHERE B.ASSET_ID = (SELECT A.ASSET_ID FROM ASS_USE A WHERE A.USE_ID = @PO_ID)
3510
		SET @FLAG = 0
3511
	END ELSE
3512
	IF @TYPE = 'USE_MUILT'
3513
	BEGIN
3514
		INSERT INTO @LST_POID SELECT B.PO_ID 
3515
		FROM ASS_MASTER_PO B WHERE B.ASSET_ID IN (SELECT A.ASSET_ID FROM ASS_USE_MULTI_DT A WHERE A.USER_MASTER_ID = @PO_ID)
3516
		GROUP BY B.PO_ID
3517
		SET @FLAG = 0
3518
	END ELSE
3519
	IF @TYPE = 'USE_ADDNEW'
3520
	BEGIN
3521
		INSERT INTO @LST_POID SELECT B.PO_ID 
3522
		FROM ASS_ADDNEW_PO B WHERE B.ADDNEW_ID = @PO_ID
3523
		SET @FLAG = 0
3524
	END 	
3525
	-- Tạm ứng 
3526
	ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_SEND_APR')
3527
	BEGIN
3528
		SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
3529
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <>'')))
3530
			BEGIN
3531
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
3532
				(SELECT TRASFER_USER_RECIVE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
3533
			END
3534
			ELSE
3535
			BEGIN
3536
				SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
3537
				SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3538
				SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3539
				SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
3540
				SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
3541
				IF(@BRANCH_TYPE = 'PGD' )
3542
				BEGIN
3543
					INSERT INTO @LST_USER_RECIVE (TLNAME) 
3544
					SELECT TLNANME FROM TL_USER 
3545
					WHERE 1=1
3546
					AND TLSUBBRID = @FATHER_ID
3547
					AND (	RoleName IN ('TPGD','PP') 
3548
									OR RoleName IN (	SELECT ROLE_OLD 
3549
														FROM TL_SYS_ROLE_MAPPING 
3550
														WHERE ROLE_NEW IN ('TPGD','PP')
3551
														AND RECORD_STATUS = 1
3552
														AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3553
														AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')
3554
													)
3555
						)
3556
				
3557
				END
3558
				ELSE IF(@BRANCH_TYPE = 'CN' )
3559
				BEGIN
3560
				
3561
					INSERT INTO @LST_USER_RECIVE (TLNAME) 
3562
					SELECT TLNANME FROM TL_USER 
3563
					WHERE 1=1
3564
					AND TLSUBBRID = @BRANCH_CREATE 
3565
					AND (RoleName IN ('GDDV','PGD') OR RoleName IN (	SELECT ROLE_OLD 
3566
																		FROM TL_SYS_ROLE_MAPPING 
3567
																		WHERE ROLE_NEW IN ('GDDV','PGD')
3568
																		AND RECORD_STATUS = 1
3569
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3570
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')
3571
																	)
3572
						)
3573
					
3574
				END
3575
				ELSE IF(@BRANCH_TYPE = 'HS' )
3576
				BEGIN
3577
						INSERT INTO @LST_USER_RECIVE (TLNAME) 
3578
						SELECT TLNANME FROM TL_USER
3579
						WHERE 1=1
3580
						AND TLSUBBRID = @BRANCH_CREATE
3581
						AND SECUR_CODE = @DEP_CREATE
3582
						AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD
3583
																		FROM TL_SYS_ROLE_MAPPING 
3584
																		WHERE ROLE_NEW IN ('GDDV','PP') 
3585
																		AND RECORD_STATUS = 1
3586
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3587
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')
3588
																		)
3589
							)
3590
				END
3591
			END
3592
	SET @FLAG = 1
3593
	END 
3594
	ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_CONFIRM')
3595
	BEGIN
3596
		SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
3597
		SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3598
		SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3599
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
3600
		SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
3601
		SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@PO_ID)
3602
		SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_CREATE)
3603
		IF(@BRANCH_TYPE = 'PGD' )
3604
		BEGIN
3605
			IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000015')) -- KHOI HO TRO
3606
			BEGIN
3607
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tunt')
3608
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3609
			END
3610
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000016')) -- KHOI QUAN LY RUI RO
3611
			BEGIN
3612
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='linhvtk')
3613
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3614
			END
3615
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000017')) -- KHOI TAI CHINH
3616
			BEGIN
3617
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhalc')
3618
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3619
			END
3620
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000018')) -- KHOI CNTT
3621
			BEGIN
3622
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='haipv')
3623
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3624
			END
3625
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000020')) -- KHOI CNTT
3626
			BEGIN
3627
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tuvm')
3628
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3629
			END
3630
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN
3631
			BEGIN
3632
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='sangnm1')
3633
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3634
			END
3635
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN
3636
			BEGIN
3637
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhannt')
3638
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3639
			END
3640
			-- PTGD
3641
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019')) -- KHOI VAN HANH
3642
			BEGIN
3643
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb')
3644
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3645
			END
3646
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000014')) -- KHOI TRUC THUOC TGD
3647
			BEGIN
3648
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa')
3649
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3650
			END
3651
			ELSE
3652
			BEGIN
3653
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
3654
				SELECT TLNANME FROM TL_USER 
3655
				WHERE 1=1
3656
				AND TLSUBBRID = @FATHER_ID
3657
				AND (RoleName IN ('TPGD','PP') OR RoleName IN (SELECT ROLE_OLD 
3658
																FROM TL_SYS_ROLE_MAPPING 
3659
																WHERE ROLE_NEW IN ('TPGD','PP') AND RECORD_STATUS = 1
3660
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3661
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
3662
			END
3663
			
3664
		END
3665
		ELSE IF(@BRANCH_TYPE = 'CN' )
3666
		BEGIN
3667
			IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000015')) -- KHOI HO TRO
3668
			BEGIN
3669
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tunt')
3670
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3671
			END
3672
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000016')) -- KHOI QUAN LY RUI RO
3673
			BEGIN
3674
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='linhvtk')
3675
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3676
			END
3677
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000017')) -- KHOI TAI CHINH
3678
			BEGIN
3679
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhalc')
3680
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3681
			END
3682
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000018')) -- KHOI CNTT
3683
			BEGIN
3684
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='haipv')
3685
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3686
			END
3687
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000020')) -- KHOI CNTT
3688
			BEGIN
3689
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='tuvm')
3690
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3691
			END
3692
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN
3693
			BEGIN
3694
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='sangnm1')
3695
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3696
			END
3697
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000022')) -- KHOI KHCN - KHACH HANG CA NHAN
3698
			BEGIN
3699
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE TLNANME ='nhannt')
3700
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3701
			END
3702
			-- PTGD
3703
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019')) -- KHOI VAN HANH
3704
			BEGIN
3705
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb')
3706
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3707
			END
3708
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000014')) -- KHOI TRUC THUOC TGD
3709
			BEGIN
3710
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa')
3711
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3712
			END
3713
			ELSE
3714
			BEGIN
3715
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
3716
				SELECT TLNANME FROM TL_USER 
3717
				WHERE 1=1
3718
				AND TLSUBBRID = @BRANCH_CREATE 
3719
				AND (RoleName IN ('GDDV','PGD') OR RoleName IN (SELECT ROLE_OLD 
3720
																FROM TL_SYS_ROLE_MAPPING 
3721
																WHERE ROLE_NEW IN ('GDDV','PGD') AND RECORD_STATUS = 1
3722
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3723
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
3724
			END
3725
		END
3726
		ELSE IF(@BRANCH_TYPE = 'HS' )
3727
		BEGIN
3728
			IF(EXISTS(SELECT PROCESS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (PROCESS ='' OR PROCESS IS NULL)))
3729
			BEGIN
3730
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
3731
				SELECT TLNANME FROM TL_USER
3732
				WHERE 1=1
3733
				AND TLSUBBRID = @BRANCH_CREATE
3734
				AND SECUR_CODE = @DEP_CREATE
3735
				AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD 
3736
																FROM TL_SYS_ROLE_MAPPING 
3737
																WHERE ROLE_NEW IN ('GDDV','PP') AND RECORD_STATUS = 1
3738
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3739
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
3740
			END
3741
			ELSE
3742
			BEGIN
3743
				
3744
				IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I'))
3745
				BEGIN
3746
					IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
3747
					BEGIN
3748
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='tunt')
3749
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3750
					END
3751
					ELSE IF((@DEP_CODE LIKE'%06907%'))
3752
					BEGIN
3753
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='linhvtk')
3754
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3755
					END
3756
					ELSE IF((@DEP_CODE LIKE'%06908%'))
3757
					BEGIN
3758
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='nhalc')
3759
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3760
					END
3761
					ELSE IF((@DEP_CODE LIKE'%06909%'))
3762
					BEGIN
3763
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='haipv')
3764
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3765
					END
3766
					ELSE IF((@DEP_CODE LIKE'%06921%'))
3767
					BEGIN
3768
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='sangnm1')
3769
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3770
					END
3771
				END
3772
				-- NEU CAP TIEP THEO LA PTGD
3773
				ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I'))
3774
				BEGIN
3775
					/*
3776
					IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
3777
					BEGIN
3778
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='hantt')
3779
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3780
					END
3781
					*/
3782
					IF(@DEP_CODE ='0690405')
3783
					BEGIN
3784
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa')
3785
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3786
					END
3787
					---- LUCTV 24.11.2022 BO SUNG GUI MAIL PTGD KHOI VAN HANH
3788
					IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019') 
3789
					OR EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I'))
3790
					BEGIN
3791
						SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb')
3792
						INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3793
					END
3794
				END
3795
				-- NEU CAP TIEP THEO LA TKTGD
3796
				ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKTGD' AND @REQ_TYPE ='I'))
3797
				BEGIN
3798
					INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD'
3799
				END
3800
				-- NEU CAP TIEP THEO LA TKHDQT
3801
				ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKHDQT' AND @REQ_TYPE ='I'))
3802
				BEGIN
3803
					INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'
3804
				END
3805
				-- NEU CAP TIEP THEO LA TGD
3806
				ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TGD' AND @REQ_TYPE ='I'))
3807
				BEGIN
3808
					INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TGD'
3809
				END
3810
				-- NEU CAP TIEP THEO LA HDQT
3811
				ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='HDQT' AND @REQ_TYPE ='I'))
3812
				BEGIN
3813
					INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='HDQT'
3814
				END
3815
			END
3816
		END
3817
		SET @FLAG = 1
3818
	END 
3819
	ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_APR')
3820
	BEGIN
3821
		SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@PO_ID)
3822
		--SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
3823
		SET @BRANCH_CREATE = (SELECT TOP 1 BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3824
		SET @DEP_CREATE = (SELECT TOP 1 DEP_ID FROM TR_REQ_ADVANCE_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3825
		SET @DEP_CODE =(SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@DEP_CREATE)
3826
		 /*
3827
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKTGD' AND @REQ_TYPE ='I'))
3828
		BEGIN
3829
			INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKTGD'
3830
		END
3831
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TKHDQT' AND @REQ_TYPE ='I'))
3832
		BEGIN
3833
			INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'
3834
		END
3835
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='TGD' AND @REQ_TYPE ='I'))
3836
		BEGIN
3837
			--SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='TGD')
3838
			--INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3839
			INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='TGD'
3840
		END
3841
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='HDQT' AND @REQ_TYPE ='I'))
3842
		BEGIN
3843
			--SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='TGD')
3844
			--INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3845
			INSERT INTO @LST_USER_RECIVE SELECT TLNANME FROM TL_USER WHERE RoleName ='HDQT'
3846
		END
3847
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='GDK' AND @REQ_TYPE ='I'))
3848
		BEGIN
3849
			IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
3850
				BEGIN
3851
					SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='tunt')
3852
					INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3853
				END
3854
				ELSE IF((@DEP_CODE LIKE'%06907%'))
3855
				BEGIN
3856
					SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='linhvtk')
3857
					INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3858
				END
3859
				ELSE IF((@DEP_CODE LIKE'%06908%'))
3860
				BEGIN
3861
					SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='nhalc')
3862
					INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3863
				END
3864
				ELSE IF((@DEP_CODE LIKE'%06909%'))
3865
				BEGIN
3866
					SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='haipv')
3867
					INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3868
				END
3869
				ELSE IF((@DEP_CODE LIKE'%06921%'))
3870
				BEGIN
3871
					SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='GDK' AND TLNANME ='sangnm1')
3872
					INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3873
				END
3874
		END
3875
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I'))
3876
		BEGIN
3877
			/*
3878
			IF(@DEP_CREATE ='DEP000000000014' OR (@DEP_CODE LIKE'%06906%' AND @DEP_CODE <> '0690605'))
3879
			BEGIN
3880
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='hantt')
3881
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3882
			END
3883
			*/
3884
			IF( @DEP_CODE ='0690405')
3885
			BEGIN
3886
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='tupa')
3887
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3888
			END
3889
			---- LUCTV 24.11.2022 BO SUNG GUI MAIL PTGD KHOI VAN HANH
3890
			ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I' AND DVDM_ID ='DM0000000000019') 
3891
			OR EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@PO_ID AND STATUS ='C' AND ROLE_USER ='PTGD' AND @REQ_TYPE ='I') )
3892
			BEGIN
3893
				SET @USER_RECIVE_MAIL =(SELECT TOP 1 TLNANME FROM TL_USER WHERE RoleName ='PTGD' AND TLNANME ='muoilvb')
3894
				INSERT INTO @LST_USER_RECIVE (TLNAME)  VALUES (@USER_RECIVE_MAIL)
3895
			END
3896
		END
3897
		*/
3898
		
3899
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND AUTH_STATUS ='A'))
3900
		BEGIN
3901
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
3902
			SELECT TOP 1 MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID 
3903

    
3904
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
3905
			SELECT TLNANME FROM TL_USER 
3906
			WHERE 1=1
3907
			AND (RoleName = 'KSV' AND TLSUBBRID = 'DV0001' AND SECUR_CODE ='DEP000000000022')
3908
			--OR TLNANME IN (SELECT TLNAME FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='KSV' AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL) AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL) AND RECORD_STATUS = 1)
3909
		END
3910
		SET @FLAG = 1
3911
	END
3912
	-- Điều phối tạm ứng/ thanh toán PL_REQUEST_PROCESS_CHILD
3913
	ELSE IF (@TYPE = 'TR_REQ_PAYMENT_TRANSFER')
3914
	BEGIN
3915
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
3916
		SELECT TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID IN (SELECT REQ_PAY_ID FROM @l_LST_REQ_ID) AND TYPE_JOB = 'XL' AND STATUS_JOB ='C'
3917
		SET @FLAG = 1
3918
	END
3919
	-- 
3920
	ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_APR')
3921
	BEGIN
3922
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
3923
		SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS'
3924
		SET @FLAG = 1
3925
	END
3926
	ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_SEND_SUG')
3927
	BEGIN
3928
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
3929
		SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS'
3930
		SET @FLAG = 1
3931
	END
3932
	ELSE IF (@TYPE = 'TR_REQ_ADVANCE_PAYMENT_KT_APPR')
3933
	BEGIN
3934
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
3935
		SELECT TOP 1 MAKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID 
3936
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
3937
		SELECT TOP 1 MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @PO_ID 
3938
		SET @FLAG = 1
3939
	END
3940
	-- Thanh toán
3941
	ELSE IF (@TYPE = 'TR_REQ_PAYMENT_SEND_APR')
3942
	BEGIN
3943
		SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
3944
			IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@PO_ID AND (TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <>'')))
3945
			BEGIN
3946
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
3947
				(SELECT TRASFER_USER_RECIVE FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID)
3948
			END
3949
			ELSE
3950
			BEGIN
3951
				SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
3952
				SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3953
				SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
3954
				SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
3955
				SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
3956
				IF(@BRANCH_TYPE = 'PGD' )
3957
				BEGIN
3958
					INSERT INTO @LST_USER_RECIVE (TLNAME) 
3959
					SELECT TLNANME FROM TL_USER 
3960
					WHERE 1=1
3961
					AND TLSUBBRID = @BRANCH_CREATE
3962
					AND (RoleName IN ('TPGD','PP') OR RoleName IN (SELECT ROLE_OLD 
3963
																	FROM TL_SYS_ROLE_MAPPING 
3964
																	WHERE ROLE_NEW IN ('TPGD','PP') AND RECORD_STATUS = 1
3965
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3966
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
3967
				END
3968
				ELSE IF(@BRANCH_TYPE = 'CN' )
3969
				BEGIN
3970
					INSERT INTO @LST_USER_RECIVE (TLNAME) 
3971
					SELECT TLNANME FROM TL_USER 
3972
					WHERE 1=1
3973
					AND TLSUBBRID = @BRANCH_CREATE 
3974
					AND (RoleName IN ('GDDV','PGD') OR RoleName IN (SELECT ROLE_OLD 
3975
																	FROM TL_SYS_ROLE_MAPPING 
3976
																	WHERE ROLE_NEW IN ('GDDV','PGD') AND RECORD_STATUS = 1
3977
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3978
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
3979
				END
3980
				ELSE IF(@BRANCH_TYPE = 'HS' )
3981
				BEGIN
3982
					INSERT INTO @LST_USER_RECIVE (TLNAME) 
3983
					SELECT TLNANME FROM TL_USER
3984
					WHERE 1=1
3985
					AND TLSUBBRID = @BRANCH_CREATE
3986
					AND SECUR_CODE = @DEP_CREATE
3987
					AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD 
3988
																	FROM TL_SYS_ROLE_MAPPING 
3989
																	WHERE ROLE_NEW IN ('GDDV','PP') AND RECORD_STATUS = 1
3990
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
3991
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
3992
				END
3993
			END
3994
			SET @FLAG = 1
3995
	END 
3996
	ELSE IF(@TYPE = 'TR_REQ_PAYMENT_APR')
3997
	BEGIN
3998
		SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
3999
		IF(@AUTH_STATUS  = 'A')
4000
		BEGIN
4001
			SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
4002
			SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
4003
			SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
4004
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4005
			SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4006

    
4007
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
4008
			SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID 
4009

    
4010
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
4011
			SELECT TLNANME FROM TL_USER 
4012
			WHERE 1=1 
4013
			AND (RoleName = 'KSV' OR RoleName IN (SELECT ROLE_OLD 
4014
												FROM TL_SYS_ROLE_MAPPING 
4015
												WHERE ROLE_NEW = 'KSV' AND RECORD_STATUS = 1
4016
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4017
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
4018
			AND TLSUBBRID = 'DV0001' AND SECUR_CODE ='DEP000000000022'
4019

    
4020
			SET @FLAG = 1
4021
		END
4022
	END
4023
	ELSE IF(@TYPE = 'TR_REQ_PAYMENT_CONFIRM')
4024
	BEGIN
4025
		SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
4026
		SET @PROCESS = ( SELECT TOP 1 PROCESS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
4027
		IF(@AUTH_STATUS  = 'U' AND @PROCESS = '0')
4028
		BEGIN
4029
			SET @AUTH_STATUS =( SELECT TOP 1 AUTH_STATUS FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =  @PO_ID)
4030
			SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQ_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
4031
			SET @DEP_CREATE = (SELECT DEP_ID FROM TR_REQ_PAYMENT  WHERE REQ_PAY_ID =  @PO_ID)
4032
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4033
			SET @FATHER_ID = (SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4034
			IF(@BRANCH_TYPE = 'PGD' )
4035
			BEGIN
4036
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
4037
				SELECT TLNANME FROM TL_USER 
4038
				WHERE 1=1
4039
				AND TLSUBBRID = @BRANCH_CREATE
4040
				AND (RoleName IN ('TPGD','PP') OR RoleName IN (SELECT ROLE_OLD 
4041
																FROM TL_SYS_ROLE_MAPPING 
4042
																WHERE ROLE_NEW IN ('TPGD','PP') AND RECORD_STATUS = 1
4043
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4044
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
4045
				
4046
			END
4047
			ELSE IF(@BRANCH_TYPE = 'CN' )
4048
			BEGIN
4049
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
4050
				SELECT TLNANME FROM TL_USER 
4051
				WHERE 1=1
4052
				AND TLSUBBRID = @BRANCH_CREATE 
4053
				AND (RoleName IN ('GDDV','PGD') OR RoleName IN (SELECT ROLE_OLD 
4054
																FROM TL_SYS_ROLE_MAPPING 
4055
																WHERE ROLE_NEW IN ('GDDV','PGD') AND RECORD_STATUS = 1
4056
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4057
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
4058
			END
4059
			ELSE IF(@BRANCH_TYPE = 'HS' )
4060
			BEGIN
4061
				INSERT INTO @LST_USER_RECIVE (TLNAME) 
4062
				SELECT TLNANME FROM TL_USER
4063
				WHERE 1=1
4064
				AND TLSUBBRID = @BRANCH_CREATE
4065
				AND SECUR_CODE = @DEP_CREATE
4066
				AND (RoleName IN ('GDDV','PP') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW IN ('GDDV','PP') AND RECORD_STATUS = 1
4067
																		AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4068
																		AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE ='')))
4069
			END
4070
			SET @FLAG = 1
4071
		END
4072
	END
4073
	ELSE IF(@TYPE = 'TR_REQ_PAYMENT_KT_SEND_APR')
4074
	BEGIN
4075
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
4076
		SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS'
4077
		SET @FLAG = 1
4078
	END
4079
	ELSE IF (@TYPE = 'TR_REQ_PAYMENT_KT_SEND_SUG')
4080
	BEGIN
4081
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
4082
		SELECT TOP 1 TLNAME FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @PO_ID AND TYPE_JOB = 'KS'
4083
		SET @FLAG = 1
4084
	END
4085
	ELSE IF(@TYPE = 'TR_REQ_PAYMENT_KT_APR')
4086
	BEGIN
4087
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
4088
		SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID 
4089
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
4090
		SELECT TOP 1 MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @PO_ID 
4091
		SET @FLAG = 1
4092
	END
4093
	-- Tờ trình chủ trương
4094
	ELSE IF(@TYPE = 'PL_SEND_APP' OR @TYPE ='PL_REQUEST_DOC_App'  OR @TYPE ='REQ_PROCESS_CHILD_Upd' OR @TYPE='REQ_PROCESS_CHILD_App')
4095
	BEGIN
4096
		SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4097
		INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4098
		EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
4099
		SET @FLAG = 2
4100
	END
4101
	ELSE IF(@TYPE='PL_REQ_PROCESS_CHILD_Ins')
4102
	BEGIN
4103
		DECLARE @PLREQ_ID VARCHAR(15)
4104
		WHILE((SELECT COUNT(*) FROM @l_LST_REQ_ID) >0)
4105
		BEGIN
4106
			SET @PLREQ_ID =(SELECT TOP 1 REQ_PAY_ID FROM @l_LST_REQ_ID)
4107
			SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4108
			INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4109
			EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PLREQ_ID,@MAKER_ID,'TTCT-DVKD'
4110
			DELETE FROM @l_LST_REQ_ID WHERE REQ_PAY_ID =@PLREQ_ID
4111
		END
4112
		SET @FLAG = 2
4113
	END
4114
	ELSE IF(@TYPE='REQUEST_DOC_PROCESS_Approve')
4115
	BEGIN
4116
		IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE'))
4117
		BEGIN
4118
			IF(NOT EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD'))
4119
			BEGIN
4120
				SET @FLAG = 2
4121
				--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4122
				INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4123
				EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
4124
			END
4125
			ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD'))
4126
			BEGIN
4127
				SET @FLAG = 2
4128
				--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4129
				INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4130
				EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
4131
				--INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TGD'
4132
			END
4133
			ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='HDQT'))
4134
			BEGIN
4135
				SET @FLAG = 2
4136
				--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4137
				INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4138
				EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'TTCT-DVKD'
4139
				--INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKTGD'
4140
			END
4141
		END
4142
		ELSE
4143
		BEGIN
4144
			SET @FLAG = 3
4145
			SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4146
			--INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4147
			--EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @REQ_ID,@MAKER_ID,'TTCT-DVKD'
4148
		END
4149
	END
4150
	ELSE IF(@TYPE='RESEND_REQUEST_DOC_PROCESS_Approve') --- LUCTV 28.11.2022 BO SUNG THEM 1 TYPE DE ANH BAOTQ GUI MAIL VE THU KY TGD DE THU KY TGD COPY LINK GUI CEO TRONG TRUONG HOP CEO MISS MAIL
4151
	BEGIN
4152
		IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='TGD'))
4153
			BEGIN
4154
				SET @FLAG = 2
4155
				INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKTGD'
4156
			END
4157
		ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='HDQT'))
4158
			BEGIN
4159
				SET @FLAG = 2
4160
				INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP (REQ_ID,TLNAME) SELECT @PO_ID, TLNANME FROM TL_USER WHERE RoleName ='TKHDQT'
4161
		END
4162
	END --- LUCTV 28.11.2022
4163
	-------------------------------------------------------------------------------------------------------
4164
	----- PHIẾU YÊU CẦU MUA SẮM --------------
4165
	ELSE IF(@TYPE = 'TR_REQUEST_DOC_SendApp' OR @TYPE ='TR_REQUEST_DOC_App' OR @TYPE ='TR_REQ_PROCESS_CHILD_App' OR @TYPE ='TR_REQ_PROCESS_CHILD_Upd' OR @TYPE='REQ_PROCESS_CHILD_App')
4166
	BEGIN
4167
		-------------------Nếu PYCMS chưa hoàn tất-------------------
4168
		IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE'))
4169
		BEGIN
4170
			SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4171
			INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4172
			EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD'
4173
			SET @FLAG = 2
4174
		END
4175
		-------------------Nếu PYCMS hoàn tất-------------------
4176
		ELSE
4177
		BEGIN
4178
			SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4179
			SET @NV_XL_MS =(SELECT TOP 1 USER_DVMS FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4180
			SET @FLAG = 4
4181
		END
4182
	END
4183
	ELSE IF(@TYPE='TR_REQ_PROCESS_CHILD_Ins')
4184
	BEGIN
4185
		
4186
		DECLARE @REQ_DOC_ID VARCHAR(15)
4187
		WHILE((SELECT COUNT(*) FROM @l_LST_REQ_ID) >0)
4188
		BEGIN
4189
			SET @REQ_DOC_ID =(SELECT TOP 1 REQ_PAY_ID FROM @l_LST_REQ_ID)
4190
			SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4191
			INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4192
			EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @REQ_DOC_ID,@MAKER_ID,'PYCMS-DVKD'
4193
			DELETE FROM @l_LST_REQ_ID WHERE REQ_PAY_ID =@REQ_DOC_ID
4194
		END
4195
		SET @FLAG = 2
4196
	END
4197
	ELSE IF(@TYPE='TR_REQUEST_DOC_PROCESS_Approve')
4198
	BEGIN
4199
		IF(NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID AND PROCESS_ID ='APPROVE'))
4200
		BEGIN
4201
			--SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4202
			INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4203
			EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD'
4204
			SET @FLAG = 3
4205
		END
4206
		ELSE
4207
		BEGIN
4208
			SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4209
			SET @NV_XL_MS =(SELECT TOP 1 USER_DVMS FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4210
			SET @FLAG = 4
4211
		END
4212
	END
4213
	----------------BAODNQ 20/10/2022 ; LẮP MAIL GỬI KHI CHUYỂN PYCMS CHO DVCM-----------------
4214
	ELSE IF(@TYPE = 'TR_REQUEST_DOC_MOVE_DVCM')
4215
	BEGIN
4216
		SET @MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@PO_ID)
4217
		INSERT INTO @PL_PROCESS_CURRENT_SEARCH_TEMP
4218
		EXEC [dbo].[PL_PROCESS_CURRENT_SEARCH] @PO_ID,@MAKER_ID,'PYCMS-DVKD'
4219
		SET @FLAG = 2
4220
	END
4221
	---------------ENDBAODNQ-----------------------------
4222

    
4223
	------BAODNQ 4/1/2022: --------------
4224
	-----Khai báo DTSD nội bộ - gửi YC phê duyệt-------
4225
	ELSE IF @TYPE='BUD_CONTRACT_MASTER_SEND_APPROVE'
4226
	BEGIN
4227
		-----Có cấp phê duyệt trung gian-------
4228
		IF (EXISTS (SELECT*FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID AND SIGN_USER IS NOT NULL))
4229
		BEGIN
4230
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
4231
					(SELECT A.SIGN_USER FROM BUD_CONTRACT_MASTER A WHERE A.CONTRACT_ID = @PO_ID)
4232

    
4233
		END
4234
		ELSE
4235
		-----Ko có cấp phê duyệt trung gian-------
4236
		BEGIN
4237
			SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
4238
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4239
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
4240
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
4241

    
4242
			IF(@BRANCH_TYPE = 'PGD')
4243
			BEGIN
4244
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4245
						--(SELECT TLNANME FROM TL_USER 
4246
						--WHERE 1=1
4247
						--AND TLSUBBRID = @BRANCH_CREATE
4248
						--AND RoleName IN ('TPGD', 'PPGD'))
4249
						SELECT TLNANME
4250
						FROM TL_USER
4251
						WHERE 1=1
4252
						AND TLSUBBRID = @BRANCH_CREATE
4253
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
4254
			END
4255
			ELSE IF(@BRANCH_TYPE = 'CN')
4256
			BEGIN
4257
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4258
						--(SELECT TLNANME FROM TL_USER 
4259
						--WHERE 1=1
4260
						--AND TLSUBBRID = @BRANCH_CREATE
4261
						--AND RoleName IN ('GDDV', 'PDG'))
4262
						SELECT TLNANME
4263
						FROM TL_USER
4264
						WHERE 1=1
4265
						AND TLSUBBRID = @BRANCH_CREATE
4266
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
4267
			END
4268
			ELSE IF(@BRANCH_TYPE = 'HS')
4269
			BEGIN
4270
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4271
						--(SELECT TLNANME FROM TL_USER 
4272
						--WHERE 1=1
4273
						--AND TLSUBBRID = @BRANCH_CREATE
4274
						--AND DEP_ID = @DEP_CREATE
4275
						--AND RoleName IN ('GDDV', 'PP'))
4276
						SELECT TLNANME
4277
						FROM TL_USER
4278
						WHERE 1=1
4279
						AND TLSUBBRID = @BRANCH_CREATE
4280
						AND DEP_ID = @DEP_CREATE
4281
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
4282
			END
4283
		END
4284
		
4285
		SET @FLAG = 5
4286
	END
4287
	
4288
	-----Khai báo DTSD nội bộ - trung gian duyệt thành công-------
4289
	ELSE IF @TYPE='BUD_CONTRACT_MASTER_CONFIRM'
4290
	BEGIN
4291
		SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
4292
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4293
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID = @PO_ID)
4294
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
4295

    
4296
		IF(@BRANCH_TYPE = 'PGD')
4297
		BEGIN
4298
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4299
					--(SELECT TLNANME FROM TL_USER 
4300
					--WHERE 1=1
4301
					--AND TLSUBBRID = @BRANCH_CREATE
4302
					--AND RoleName IN ('TPGD', 'PPGD'))
4303
					SELECT TLNANME
4304
					FROM TL_USER
4305
					WHERE 1=1
4306
					AND TLSUBBRID = @BRANCH_CREATE
4307
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
4308
		END
4309
		ELSE IF(@BRANCH_TYPE = 'CN')
4310
		BEGIN
4311
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4312
					--(SELECT TLNANME FROM TL_USER 
4313
					--WHERE 1=1
4314
					--AND TLSUBBRID = @BRANCH_CREATE
4315
					--AND RoleName IN ('GDDV', 'PDG'))
4316
					SELECT TLNANME
4317
					FROM TL_USER
4318
					WHERE 1=1
4319
					AND TLSUBBRID = @BRANCH_CREATE
4320
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
4321
		END
4322
		ELSE IF(@BRANCH_TYPE = 'HS')
4323
		BEGIN
4324
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4325
					--(SELECT TLNANME FROM TL_USER 
4326
					--WHERE 1=1
4327
					--AND TLSUBBRID = @BRANCH_CREATE
4328
					--AND DEP_ID = @DEP_CREATE
4329
					--AND RoleName IN ('GDDV', 'PP'))
4330
					SELECT TLNANME
4331
					FROM TL_USER
4332
					WHERE 1=1
4333
					AND TLSUBBRID = @BRANCH_CREATE
4334
					AND DEP_ID = @DEP_CREATE
4335
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
4336
		END
4337
		
4338
		SET @FLAG = 5
4339
	END
4340
	-----Khai báo DTSD nội bộ - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-------
4341
	ELSE IF @TYPE='BUD_CONTRACT_MASTER_APPROVED'
4342
	BEGIN
4343
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
4344
					(SELECT A.MAKER_ID FROM BUD_CONTRACT_MASTER A WHERE A.CONTRACT_ID = @PO_ID)
4345
		
4346
		SET @FLAG = 5
4347
	END
4348
	---Quản lý hợp đồng khách thuê - gửi YC phê duyệt-----
4349
	ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_SEND_APPROVE'
4350
	BEGIN
4351
		-----Có cấp phê duyệt trung gian-------
4352
		IF (EXISTS (SELECT*FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID AND SIGN_USER IS NOT NULL))
4353
		BEGIN
4354
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
4355
					(SELECT A.SIGN_USER FROM BUD_CONTRACT_CUST_MASTER A WHERE A.CONTRACT_ID = @PO_ID) 
4356
		END	
4357
		ELSE
4358
		-----Ko có cấp phê duyệt trung gian-------
4359
		BEGIN
4360
			SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
4361
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4362
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
4363
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
4364

    
4365
			IF(@BRANCH_TYPE = 'PGD')
4366
			BEGIN
4367
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4368
						--SELECT TLNANME FROM TL_USER 
4369
						--WHERE 1=1
4370
						--AND TLSUBBRID = @BRANCH_CREATE
4371
						--AND RoleName IN ('TPGD', 'PP')
4372
						SELECT TLNANME
4373
						FROM TL_USER
4374
						WHERE 1=1
4375
						AND TLSUBBRID = @BRANCH_CREATE
4376
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
4377
			END
4378
			ELSE IF(@BRANCH_TYPE = 'CN')
4379
			BEGIN
4380
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4381
						--SELECT TLNANME FROM TL_USER 
4382
						--WHERE 1=1
4383
						--AND TLSUBBRID = @BRANCH_CREATE
4384
						--AND RoleName IN ('GDDV', 'PDG')
4385
						SELECT TLNANME
4386
						FROM TL_USER
4387
						WHERE 1=1
4388
						AND TLSUBBRID = @BRANCH_CREATE
4389
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
4390
			END
4391
			ELSE IF(@BRANCH_TYPE = 'HS')
4392
			BEGIN
4393
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4394
						--SELECT TLNANME FROM TL_USER 
4395
						--WHERE 1=1
4396
						--AND TLSUBBRID = @BRANCH_CREATE
4397
						--AND DEP_ID = @DEP_CREATE
4398
						--AND RoleName IN ('GDDV', 'PP')
4399
						SELECT TLNANME
4400
						FROM TL_USER
4401
						WHERE 1=1
4402
						AND TLSUBBRID = @BRANCH_CREATE
4403
						AND DEP_ID = @DEP_CREATE
4404
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
4405
			END
4406
		END
4407

    
4408
		SET @FLAG = 5
4409
	END
4410
	---Quản lý hợp đồng khách thuê - trung gian duyệt thành công-----
4411
	ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_CONFIRM'
4412
	BEGIN
4413
		SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
4414
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4415
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @PO_ID)
4416
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
4417

    
4418
		IF(@BRANCH_TYPE = 'PGD')
4419
		BEGIN
4420
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4421
					--(SELECT TLNANME FROM TL_USER 
4422
					--WHERE 1=1
4423
					--AND TLSUBBRID = @BRANCH_CREATE
4424
					--AND RoleName IN ('TPGD', 'PP'))
4425
					SELECT TLNANME
4426
					FROM TL_USER
4427
					WHERE 1=1
4428
					AND TLSUBBRID = @BRANCH_CREATE
4429
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
4430
		END
4431
		ELSE IF(@BRANCH_TYPE = 'CN')
4432
		BEGIN
4433
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4434
					--(SELECT TLNANME FROM TL_USER 
4435
					--WHERE 1=1
4436
					--AND TLSUBBRID = @BRANCH_CREATE
4437
					--AND RoleName IN ('GDDV', 'PDG'))
4438
					SELECT TLNANME
4439
					FROM TL_USER
4440
					WHERE 1=1
4441
					AND TLSUBBRID = @BRANCH_CREATE
4442
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
4443
		END
4444
		ELSE IF(@BRANCH_TYPE = 'HS')
4445
		BEGIN
4446
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4447
					--(SELECT TLNANME FROM TL_USER 
4448
					--WHERE 1=1
4449
					--AND TLSUBBRID = @BRANCH_CREATE
4450
					--AND DEP_ID = @DEP_CREATE
4451
					--AND RoleName IN ('GDDV', 'PP'))
4452
					SELECT TLNANME
4453
					FROM TL_USER
4454
					WHERE 1=1
4455
					AND TLSUBBRID = @BRANCH_CREATE
4456
					AND DEP_ID = @DEP_CREATE
4457
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
4458
		END
4459
		
4460
		SET @FLAG = 5
4461
	END
4462
	---Quản lý hợp đồng khách thuê - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
4463
	ELSE IF @TYPE='BUD_CONTRACT_CUST_MASTER_APPROVED'
4464
	BEGIN
4465
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
4466
					(SELECT A.MAKER_ID FROM BUD_CONTRACT_CUST_MASTER A WHERE A.CONTRACT_ID = @PO_ID)
4467
		SET @FLAG = 5
4468
	END
4469

    
4470
	------datmq 7/1/2022: --------------
4471
	-----Quản lý trụ sở - gửi YC phê duyệt-------
4472
	ELSE IF @TYPE='BUD_MASTER_SEND_APPROVE'
4473
	BEGIN
4474
		-----Có cấp phê duyệt trung gian-------
4475
		IF (EXISTS (SELECT*FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID AND SIGN_USER IS NOT NULL))
4476
		BEGIN
4477
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
4478
					(SELECT A.SIGN_USER FROM BUD_MASTER A WHERE A.BUILDING_ID = @PO_ID)
4479
		END
4480
		ELSE
4481
		-----Ko có cấp phê duyệt trung gian-------
4482
		BEGIN
4483
			SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
4484
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4485
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
4486
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
4487

    
4488
			IF(@BRANCH_TYPE = 'PGD')
4489
			BEGIN
4490
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4491
						--SELECT TLNANME FROM TL_USER 
4492
						--WHERE 1=1
4493
						--AND TLSUBBRID = @BRANCH_CREATE
4494
						--AND RoleName IN ('TPGD', 'PP')
4495
						SELECT TLNANME
4496
						FROM TL_USER
4497
						WHERE 1=1
4498
						AND TLSUBBRID = @BRANCH_CREATE
4499
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
4500
			END
4501
			ELSE IF(@BRANCH_TYPE = 'CN')
4502
			BEGIN
4503
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4504
						--SELECT TLNANME FROM TL_USER 
4505
						--WHERE 1=1
4506
						--AND TLSUBBRID = @BRANCH_CREATE
4507
						--AND RoleName IN ('GDDV', 'PDG')
4508
						SELECT TLNANME
4509
						FROM TL_USER
4510
						WHERE 1=1
4511
						AND TLSUBBRID = @BRANCH_CREATE
4512
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
4513
			END
4514
			ELSE IF(@BRANCH_TYPE = 'HS')
4515
			BEGIN
4516
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4517
						--SELECT TLNANME FROM TL_USER 
4518
						--WHERE 1=1
4519
						--AND TLSUBBRID = @BRANCH_CREATE
4520
						--AND DEP_ID = @DEP_CREATE
4521
						--AND RoleName IN ('GDDV', 'PP')
4522
						SELECT TLNANME
4523
						FROM TL_USER
4524
						WHERE 1=1
4525
						AND TLSUBBRID = @BRANCH_CREATE
4526
						AND DEP_ID = @DEP_CREATE
4527
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
4528
			END
4529
		END
4530
		SET @FLAG = 6
4531
	END
4532
	-----Quản lý trụ sở - trung gian duyệt thành công-------
4533
	ELSE IF @TYPE='BUD_MASTER_CONFIRM'
4534
	BEGIN
4535
		SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
4536
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4537
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM BUD_MASTER WHERE BUILDING_ID = @PO_ID)
4538
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
4539

    
4540
		IF(@BRANCH_TYPE = 'PGD')
4541
		BEGIN
4542
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4543
					--(SELECT TLNANME FROM TL_USER 
4544
					--WHERE 1=1
4545
					--AND TLSUBBRID = @BRANCH_CREATE
4546
					--AND RoleName IN ('TPGD', 'PPGD'))
4547
					SELECT TLNANME
4548
					FROM TL_USER
4549
					WHERE 1=1
4550
					AND TLSUBBRID = @BRANCH_CREATE
4551
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
4552
		END
4553
		ELSE IF(@BRANCH_TYPE = 'CN')
4554
		BEGIN
4555
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4556
					--(SELECT TLNANME FROM TL_USER 
4557
					--WHERE 1=1
4558
					--AND TLSUBBRID = @BRANCH_CREATE
4559
					--AND RoleName IN ('GDDV', 'PDG'))
4560
					SELECT TLNANME
4561
					FROM TL_USER
4562
					WHERE 1=1
4563
					AND TLSUBBRID = @BRANCH_CREATE
4564
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
4565
		END
4566
		ELSE IF(@BRANCH_TYPE = 'HS')
4567
		BEGIN
4568
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4569
					--(SELECT TLNANME FROM TL_USER 
4570
					--WHERE 1=1
4571
					--AND TLSUBBRID = @BRANCH_CREATE
4572
					--AND DEP_ID = @DEP_CREATE
4573
					--AND RoleName IN ('GDDV', 'PP'))
4574
					SELECT TLNANME
4575
					FROM TL_USER
4576
					WHERE 1=1
4577
					AND TLSUBBRID = @BRANCH_CREATE
4578
					AND DEP_ID = @DEP_CREATE
4579
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
4580
		END
4581
		
4582
		SET @FLAG = 6
4583
	END
4584
	---Quản lý trụ sở - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
4585
	ELSE IF @TYPE='BUD_MASTER_APPROVED'
4586
	BEGIN
4587
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
4588
					(SELECT A.MAKER_ID FROM BUD_MASTER A WHERE A.BUILDING_ID = @PO_ID)
4589
		SET @FLAG = 6
4590
	END
4591
	-----PhongNT 15/9/2022: Quản lý TSCĐ/CCLĐ--------
4592
	-- Thêm mới tài sản HCQT
4593
	
4594
	ELSE IF @TYPE = 'ASS_SEND_TDV'
4595
	BEGIN
4596
		--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý
4597
		SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
4598
		  SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val
4599
		)x)
4600

    
4601
		SELECT @PAGE = sp.ID
4602
		FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX
4603

    
4604
		
4605
	 --   SET @BRANCH_CREATE = (SELECT BRANCH_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID)
4606
		--SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
4607
		--SET @p_MAKER_ID = (SELECT MAKER_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID)
4608
		--SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
4609

    
4610
		IF(@PAGE='ASS_ADDNEW')
4611
			BEGIN
4612
				SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID
4613
				FROM (SELECT MAKER_ID FROM ASS_ADDNEW WHERE ADDNEW_ID =@PO_ID) A
4614
				LEFT JOIN TL_USER B ON  B.TLNANME = A.MAKER_ID
4615
			END
4616
		ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER')
4617
			BEGIN
4618
				SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID
4619
				FROM (SELECT MAKER_ID FROM ASS_COLLECT_MULTI_MASTER WHERE COL_MULTI_MASTER_ID =@PO_ID) A
4620
				LEFT JOIN TL_USER B ON  B.TLNANME = A.MAKER_ID
4621
			END
4622
		ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER')
4623
			BEGIN
4624
				SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID
4625
				FROM (SELECT MAKER_ID FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID =@PO_ID) A
4626
				LEFT JOIN TL_USER B ON  B.TLNANME = A.MAKER_ID
4627
			END
4628
		ELSE IF(@PAGE='ASS_USE_MULTI_MASTER')
4629
			BEGIN
4630
				SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID
4631
				FROM (SELECT MAKER_ID FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID =@PO_ID) A
4632
				LEFT JOIN TL_USER B ON  B.TLNANME = A.MAKER_ID	
4633
			END
4634
		ELSE IF(@PAGE='ASS_LIQUIDATION')
4635
			BEGIN
4636
				SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID
4637
				FROM (SELECT MAKER_ID FROM ASS_LIQUIDATION WHERE LIQ_ID =@PO_ID) A
4638
				LEFT JOIN TL_USER B ON  B.TLNANME = A.MAKER_ID	
4639
			END
4640
		ELSE IF(@PAGE='ASS_INVENTORY_MASTER')
4641
			BEGIN
4642
				IF((SELECT SIGN_USER FROM ASS_INVENTORY_MASTER WHERE INVENT_ID = @PO_ID) IS NOT NULL)
4643
					BEGIN
4644
						INSERT INTO @LST_USER_RECIVE (TLNAME)
4645
						(SELECT SIGN_USER FROM ASS_INVENTORY_MASTER WHERE INVENT_ID = @PO_ID)
4646
					END
4647
				ELSE
4648
					BEGIN
4649
						SELECT @BRANCH_CREATE=B.TLSUBBRID, @BRANCH_TYPE =B.BRANCH_TYPE, @DEP_CREATE = B.DEP_ID
4650
						FROM (SELECT MAKER_ID FROM ASS_INVENTORY_MASTER WHERE INVENT_ID =@PO_ID) A
4651
						LEFT JOIN TL_USER B ON  B.TLNANME = A.MAKER_ID
4652
					END
4653
			END
4654

    
4655
		IF (@BRANCH_TYPE = 'HS')
4656
		BEGIN
4657
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4658
				(SELECT TLNANME FROM TL_USER 
4659
				WHERE 1=1
4660
				AND TLSUBBRID = @BRANCH_CREATE
4661
				AND SECUR_CODE = @DEP_CREATE
4662
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP'))
4663
				UNION ALL
4664
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
4665
				WHERE 1=1
4666
				AND BRANCH_ID = @BRANCH_CREATE
4667
				AND DEP_ID = @DEP_CREATE
4668
				AND ROLE_NEW IN ('GDDV','TP')
4669
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4670
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
4671
		END
4672
		ELSE IF(@BRANCH_TYPE IS NOT NULL)
4673
		BEGIN
4674
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4675
				(SELECT TLNANME FROM TL_USER 
4676
				WHERE 1=1
4677
				AND TLSUBBRID = @BRANCH_CREATE
4678
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD'))
4679
				UNION ALL
4680
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
4681
				WHERE 1=1
4682
				AND BRANCH_ID = @BRANCH_CREATE
4683
				AND ROLE_NEW IN ('GDDV','TPGD')
4684
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4685
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
4686
		END
4687
		SET @FLAG = 6
4688
	END
4689
	ELSE IF @TYPE = 'ASS_SEND_GDV'
4690
		BEGIN
4691
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4692
			(SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('GDV','DV0001','DEP000000000022'))
4693
			SET @FLAG = 6
4694
		END
4695
	ELSE IF @TYPE = 'ASS_REJECT_GDV'
4696
		BEGIN
4697
		--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý
4698
		SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
4699
		  SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val
4700
		)x)
4701

    
4702
		SELECT @PAGE = sp.ID
4703
		FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX
4704

    
4705
			IF(@PAGE='ASS_ADDNEW')
4706
			BEGIN
4707
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4708
				(
4709
				SELECT MAKER_ID_KT
4710
				FROM ASS_ADDNEW 
4711
				WHERE ADDNEW_ID = @PO_ID
4712
				)
4713
			END
4714
		ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER')
4715
			BEGIN
4716
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4717
				(
4718
				SELECT MAKER_ID_KT
4719
				FROM ASS_COLLECT_MULTI_MASTER 
4720
				WHERE COL_MULTI_MASTER_ID = @PO_ID
4721
				)
4722
			END
4723
		ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER')
4724
			BEGIN
4725
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4726
				(
4727
				SELECT MAKER_ID_KT
4728
				FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID
4729
				)
4730
			END
4731
		ELSE IF(@PAGE='ASS_USE_MULTI_MASTER')
4732
			BEGIN
4733
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4734
				(
4735
				SELECT MAKER_ID_KT
4736
				FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID
4737
				)
4738
			END
4739
		ELSE IF(@PAGE='ASS_LIQUIDATION')
4740
			BEGIN
4741
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4742
				(
4743
				SELECT MAKER_ID_KT
4744
				FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID
4745
				)
4746

    
4747
			END
4748
		SET @FLAG = 6
4749
	END
4750
	ELSE IF @TYPE = 'ASS_SEND_KSV'
4751
		BEGIN
4752
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4753
			(SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('KSV','DV0001','DEP000000000022'))
4754
			SET @FLAG = 6
4755
		END
4756
	ELSE IF @TYPE = 'ASS_APPROVED'
4757
		BEGIN
4758
			--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý
4759
			SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
4760
			  SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val
4761
			)x)
4762

    
4763
			SELECT @PAGE = sp.ID
4764
			FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX
4765

    
4766
			
4767
		IF(@PAGE='ASS_ADDNEW')
4768
			BEGIN
4769
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4770
				(SELECT MAKER_ID
4771
				FROM ASS_ADDNEW 
4772
				WHERE ADDNEW_ID = @PO_ID
4773
				UNION
4774
				SELECT MAKER_ID_KT
4775
				FROM ASS_ADDNEW 
4776
				WHERE ADDNEW_ID = @PO_ID
4777
				)
4778
			END
4779
		ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER')
4780
			BEGIN
4781
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4782
				(SELECT MAKER_ID
4783
				FROM ASS_COLLECT_MULTI_MASTER 
4784
				WHERE COL_MULTI_MASTER_ID = @PO_ID
4785
				UNION
4786
				SELECT MAKER_ID_KT
4787
				FROM ASS_COLLECT_MULTI_MASTER 
4788
				WHERE COL_MULTI_MASTER_ID = @PO_ID
4789
				)
4790
			END
4791
		ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER')
4792
			BEGIN
4793
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4794
				(SELECT MAKER_ID
4795
				FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID
4796
				UNION
4797
				SELECT MAKER_ID_KT
4798
				FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID
4799
				)
4800
			END
4801
		ELSE IF(@PAGE='ASS_USE_MULTI_MASTER')
4802
			BEGIN
4803
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4804
				(SELECT MAKER_ID
4805
				FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID
4806
				UNION
4807
				SELECT MAKER_ID_KT
4808
				FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID
4809
				)
4810
			END
4811
		ELSE IF(@PAGE='ASS_LIQUIDATION')
4812
			BEGIN
4813
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4814
				(SELECT MAKER_ID
4815
				FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID
4816
				UNION
4817
				SELECT MAKER_ID_KT
4818
				FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID
4819
				)
4820

    
4821
			END
4822
		ELSE IF(@PAGE='ASS_UPDATE')
4823
		BEGIN
4824
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4825
			(SELECT MAKER_ID
4826
			FROM ASS_UPDATE au WHERE au.UPDATE_ID = @PO_ID
4827
			)
4828

    
4829
		END
4830
		ELSE IF(@PAGE='ASS_INVENTORY_MASTER')
4831
		BEGIN
4832
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4833
			(SELECT MAKER_ID
4834
			FROM ASS_INVENTORY_MASTER au WHERE au.INVENT_ID = @PO_ID
4835
			)
4836

    
4837
		END
4838
			SET @FLAG = 6
4839
	END
4840
	ELSE IF @TYPE = 'ASS_SEND_NT'
4841
		BEGIN
4842
			--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý
4843
			SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
4844
			  SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val
4845
			)x)
4846

    
4847
			SELECT @PAGE = sp.ID
4848
			FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX
4849
      
4850
		IF(@PAGE='ASS_ADDNEW')
4851
			BEGIN
4852
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4853
				(SELECT MAKER_ID
4854
				FROM ASS_ADDNEW 
4855
				WHERE ADDNEW_ID = @PO_ID
4856
				)
4857
			END
4858
		ELSE IF(@PAGE='ASS_COLLECT_MULTI_MASTER')
4859
			BEGIN
4860
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4861
				(SELECT MAKER_ID
4862
				FROM ASS_COLLECT_MULTI_MASTER 
4863
				WHERE COL_MULTI_MASTER_ID = @PO_ID
4864
				)
4865
			END
4866
		ELSE IF(@PAGE='ASS_TRANSFER_MULTI_MASTER')
4867
			BEGIN
4868
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4869
				(SELECT MAKER_ID
4870
				FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @PO_ID
4871
				)
4872
			END
4873
		ELSE IF(@PAGE='ASS_USE_MULTI_MASTER')
4874
			BEGIN
4875
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4876
				(SELECT MAKER_ID
4877
				FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID = @PO_ID
4878
				)
4879
			END
4880
		ELSE IF(@PAGE='ASS_LIQUIDATION')
4881
			BEGIN
4882
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4883
				(SELECT MAKER_ID
4884
				FROM ASS_LIQUIDATION WHERE LIQ_ID = @PO_ID
4885
				)
4886
			END
4887
    ELSE IF(@PAGE='ASS_UPDATE')
4888
			BEGIN
4889
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4890
				(SELECT MAKER_ID
4891
				FROM ASS_UPDATE au WHERE UPDATE_ID = @PO_ID
4892
				)
4893
			END
4894
   ELSE IF(@PAGE='ASS_COST_ALLOCATION')
4895
			BEGIN
4896
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4897
				(SELECT MAKER_ID
4898
				FROM ASS_COST_ALLOCATION au WHERE au.COS_ID = @PO_ID
4899
				)
4900
      END
4901
	    ELSE IF(@PAGE='CON_MASTER')
4902
			BEGIN
4903
				
4904
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4905
				(SELECT MAKER_ID
4906
				FROM CON_MASTER CM WHERE CM.CONSTRUCT_ID = @PO_ID
4907
				)
4908
      END
4909
		 ELSE IF(@PAGE='CON_LAYOUT_BLUEPRINT')
4910
			BEGIN
4911
				
4912
				INSERT INTO @LST_USER_RECIVE (TLNAME)
4913
				(SELECT MAKER_ID
4914
				FROM CON_LAYOUT_BLUEPRINT CM WHERE CM.CON_LAYOUT_BLUEPRINT_ID = @PO_ID
4915
				)
4916
      END
4917
		SET @FLAG = 6
4918
	END
4919
	ELSE IF @TYPE = 'ASS_SEND_CONFIRM'
4920
		BEGIN
4921
			--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý
4922
			SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
4923
				SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val
4924
			)x)
4925

    
4926
			SELECT @PAGE = sp.ID
4927
			FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX
4928

    
4929
			DECLARE @BRANCH_ID VARCHAR(20),@DEP_ID VARCHAR(20)
4930
		
4931
		IF(@PAGE='ASS_COLLECT_MULTI_MASTER')
4932
			BEGIN
4933
				SELECT TOP 1 @BRANCH_CREATE = A.BRANCH_ID,@DEP_CREATE = A.DEPT_ID_USE,@BRANCH_TYPE = B.BRANCH_TYPE
4934
				FROM  dbo.ASS_COLLECT_MULTI_DT A
4935
				LEFT JOIN dbo.CM_BRANCH B ON A.BRANCH_ID =B.BRANCH_ID
4936
				WHERE COL_MULTI_MASTER_ID = @PO_ID
4937
				ORDER BY COLLECT_MULTI_ID ASC
4938
			END
4939
		ELSE IF(@PAGE='ASS_USE_MULTI_MASTER')
4940
			BEGIN
4941
				SELECT TOP 1 @BRANCH_CREATE = A.BRANCH_ID, @DEP_CREATE = DEPT_ID,@BRANCH_TYPE = B.BRANCH_TYPE
4942
				FROM  dbo.ASS_USE_MULTI_DT A
4943
				LEFT JOIN dbo.CM_BRANCH B ON A.BRANCH_ID =B.BRANCH_ID
4944
				WHERE A.USER_MASTER_ID = @PO_ID
4945
				ORDER BY USE_MULTI_ID ASC
4946
			END
4947
		
4948
    
4949
		IF (@BRANCH_TYPE = 'HS')
4950
		BEGIN
4951
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4952
				(SELECT TLNANME FROM TL_USER 
4953
				WHERE 1=1
4954
				AND TLSUBBRID = @BRANCH_CREATE
4955
				AND SECUR_CODE = @DEP_CREATE
4956
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP'))
4957
				UNION ALL
4958
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
4959
				WHERE 1=1
4960
				AND 
4961
				((BRANCH_ID = @BRANCH_ID AND DEP_ID = @DEP_ID)
4962
				OR
4963
				(BRANCH_ID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE))
4964
				AND ROLE_NEW IN ('GDDV','TP')
4965
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4966
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
4967
		END
4968
		ELSE
4969
		BEGIN
4970
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4971
				(SELECT TLNANME FROM TL_USER 
4972
				WHERE 1=1
4973
				AND TLSUBBRID = @BRANCH_CREATE
4974
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD'))
4975
				UNION ALL
4976
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
4977
				WHERE 1=1
4978
				AND 
4979
				((BRANCH_ID = @BRANCH_ID)
4980
				OR
4981
				(BRANCH_ID = @BRANCH_CREATE))
4982
				AND ROLE_NEW IN ('GDDV','TPGD')
4983
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
4984
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
4985
		END
4986
		SET @FLAG =6
4987
	END
4988
	ELSE IF @TYPE ='ASS_TRANSFER_CONFIRM_HANDOVER'
4989
	BEGIN
4990
		SELECT TOP 1 @BRANCH_CREATE=A.BRANCH_ID_OLD,@DEP_CREATE =DEPT_ID_OLD,@BRANCH_TYPE =b.BRANCH_TYPE
4991
		FROM  dbo.ASS_TRANSFER_MULTI_DT A
4992
		LEFT  JOIN dbo.CM_BRANCH B ON B.BRANCH_ID = A.BRANCH_ID_OLD
4993
		WHERE A.TRANS_MULTI_MASTER_ID = @PO_ID
4994
		ORDER BY TRANSFER_MULTI_ID ASC
4995

    
4996
		IF (@BRANCH_TYPE = 'HS')
4997
		BEGIN
4998
			INSERT INTO @LST_USER_RECIVE (TLNAME)
4999
				(SELECT TLNANME FROM TL_USER 
5000
				WHERE 1=1
5001
				AND TLSUBBRID = @BRANCH_CREATE
5002
				AND SECUR_CODE = @DEP_CREATE
5003
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP'))
5004
				UNION ALL
5005
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
5006
				WHERE 1=1
5007
				AND 
5008
				((BRANCH_ID = @BRANCH_ID AND DEP_ID = @DEP_ID)
5009
				OR
5010
				(BRANCH_ID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE))
5011
				AND ROLE_NEW IN ('GDDV','TP')
5012
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
5013
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
5014
		END
5015
		ELSE
5016
		BEGIN
5017
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5018
				(SELECT TLNANME FROM TL_USER 
5019
				WHERE 1=1
5020
				AND TLSUBBRID = @BRANCH_CREATE
5021
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD'))
5022
				UNION ALL
5023
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
5024
				WHERE 1=1
5025
				AND 
5026
				((BRANCH_ID = @BRANCH_ID)
5027
				OR
5028
				(BRANCH_ID = @BRANCH_CREATE))
5029
				AND ROLE_NEW IN ('GDDV','TPGD')
5030
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
5031
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
5032
		END
5033
		SET @FLAG =6
5034
	END
5035
	ELSE IF @TYPE ='ASS_TRANSFER_CONFIRM_RECEIVER'
5036
	BEGIN
5037
		SELECT TOP 1 @BRANCH_CREATE =A.BRANCH_ID,@DEP_CREATE = DEPT_ID,@BRANCH_TYPE =b.BRANCH_TYPE
5038
		FROM  dbo.ASS_TRANSFER_MULTI_DT A
5039
		LEFT  JOIN dbo.CM_BRANCH B ON B.BRANCH_ID = A.BRANCH_ID
5040
		WHERE A.TRANS_MULTI_MASTER_ID = @PO_ID
5041
		ORDER BY TRANSFER_MULTI_ID ASC
5042

    
5043

    
5044
		IF (@BRANCH_TYPE = 'HS')
5045
		BEGIN
5046
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5047
				(SELECT TLNANME FROM TL_USER 
5048
				WHERE 1=1
5049
				AND TLSUBBRID = @BRANCH_CREATE
5050
				AND SECUR_CODE = @DEP_CREATE
5051
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TP'))
5052
				UNION ALL
5053
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
5054
				WHERE 1=1
5055
				AND 
5056
				((BRANCH_ID = @BRANCH_ID AND DEP_ID = @DEP_ID)
5057
				OR
5058
				(BRANCH_ID = @BRANCH_CREATE AND DEP_ID = @DEP_CREATE))
5059
				AND ROLE_NEW IN ('GDDV','TP')
5060
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
5061
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
5062
		END
5063
		ELSE
5064
		BEGIN
5065
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5066
				(SELECT TLNANME FROM TL_USER 
5067
				WHERE 1=1
5068
				AND TLSUBBRID = @BRANCH_CREATE
5069
				AND EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES](TLNANME) WHERE ROLE_ID IN ('GDDV','TPGD'))
5070
				UNION ALL
5071
				SELECT TLNAME AS TLNANME FROM dbo.TL_SYS_ROLE_MAPPING
5072
				WHERE 1=1
5073
				AND 
5074
				((BRANCH_ID = @BRANCH_ID)
5075
				OR
5076
				(BRANCH_ID = @BRANCH_CREATE))
5077
				AND ROLE_NEW IN ('GDDV','TPGD')
5078
				AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL OR EFF_DATE ='')
5079
				AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL OR EXP_DATE =''))
5080
		END
5081
		SET @FLAG =6
5082
	END
5083
	ELSE IF @TYPE ='ASS_INVENTORY_RECIVE_MAIL'
5084
	BEGIN
5085
		IF(EXISTS(SELECT 1 FROM ASS_INVENTORY_MASTER WHERE SIGN_USER IS NOT NULL AND CHECKER_ID_DVKD IS NULL AND INVENT_ID=@PO_ID))
5086
			BEGIN
5087
				SELECT @BRANCH_CREATE =BRANCH_ID,@DEP_ID = DEPT_ID FROM dbo.ASS_INVENTORY_MASTER WHERE INVENT_ID=@PO_ID
5088
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5089
				(SELECT TLNANME FROM dbo.FN_GET_USER_BY_ROLE('GDDV',@BRANCH_CREATE,@DEP_ID))
5090
			END
5091
		ELSE
5092
			BEGIN
5093
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5094
				(SELECT PARTY_NAME FROM dbo.ASS_INVENTORY_PARTY_DT WHERE IS_RECIVE_MAIL =1 AND INVENT_ID =@PO_ID)
5095
			END
5096
		
5097
		SET @FLAG =6
5098
	END
5099
	ELSE IF @TYPE ='ASS_INVENTORY_MAIN'
5100
	BEGIN
5101
		INSERT INTO @LST_USER_RECIVE (TLNAME)
5102
		(SELECT PARTY_NAME FROM dbo.ASS_INVENTORY_PARTY_DT WHERE IS_MAIN = 1 AND INVENT_ID =@PO_ID)
5103
		SET @FLAG =6
5104
	END
5105

    
5106
	----------BAODNQ :15/2/2022 --Xử lý gửi mail cho phân hệ Quản lý BDS---------
5107
	---Quản lý BDS- gửi YC phê duyệt-----
5108
	ELSE IF @TYPE='RET_MASTER_SEND_APPROVE'
5109
	BEGIN
5110
		-----Có cấp phê duyệt trung gian-------
5111
		IF (EXISTS (SELECT * FROM RET_MASTER WHERE RET_ID = @PO_ID AND SIGN_USER IS NOT NULL))
5112
		BEGIN
5113
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5114
					(SELECT A.SIGN_USER FROM RET_MASTER A WHERE A.RET_ID = @PO_ID) 
5115
		END	
5116
		ELSE
5117
		-----Ko có cấp phê duyệt trung gian-------
5118
		BEGIN
5119
			SET @BRANCH_CREATE = 
5120
				(SELECT  B.BRANCH_ID
5121
				FROM RET_MASTER A
5122
				LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID
5123
				WHERE RET_ID = @PO_ID)
5124
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5125
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_MASTER WHERE RET_ID = @PO_ID)
5126
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5127

    
5128
			IF(@BRANCH_TYPE = 'PGD')
5129
			BEGIN
5130
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5131
						--SELECT TLNANME FROM TL_USER 
5132
						--WHERE 1=1
5133
						--AND TLSUBBRID = @BRANCH_CREATE
5134
						--AND RoleName IN ('TPGD', 'PP')
5135
						SELECT TLNANME
5136
						FROM TL_USER
5137
						WHERE 1=1
5138
						AND TLSUBBRID = @BRANCH_CREATE
5139
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5140
			END
5141
			ELSE IF(@BRANCH_TYPE = 'CN')
5142
			BEGIN
5143
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5144
						--SELECT TLNANME FROM TL_USER 
5145
						--WHERE 1=1
5146
						--AND TLSUBBRID = @BRANCH_CREATE
5147
						--AND RoleName IN ('GDDV', 'PDG')
5148
						SELECT TLNANME
5149
						FROM TL_USER
5150
						WHERE 1=1
5151
						AND TLSUBBRID = @BRANCH_CREATE
5152
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5153
			END
5154
			ELSE IF(@BRANCH_TYPE = 'HS')
5155
			BEGIN
5156
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5157
						--SELECT TLNANME FROM TL_USER 
5158
						--WHERE 1=1
5159
						--AND TLSUBBRID = @BRANCH_CREATE
5160
						--AND DEP_ID = @DEP_CREATE
5161
						--AND RoleName IN ('GDDV', 'PP')
5162
						SELECT TLNANME
5163
						FROM TL_USER
5164
						WHERE 1=1
5165
						AND TLSUBBRID = @BRANCH_CREATE
5166
						AND DEP_ID = @DEP_CREATE
5167
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5168
			END
5169
		END
5170

    
5171
		SET @FLAG = 7
5172
	END
5173
	---Quản lý BDS - trung gian duyệt thành công-----
5174
	ELSE IF @TYPE='RET_MASTER_CONFIRM'
5175
	BEGIN
5176
		SET @BRANCH_CREATE = 
5177
				(SELECT  B.BRANCH_ID
5178
				FROM RET_MASTER A
5179
				LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID
5180
				WHERE RET_ID = @PO_ID)
5181
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5182
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_MASTER WHERE RET_ID = @PO_ID)
5183
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5184

    
5185
		IF(@BRANCH_TYPE = 'PGD')
5186
		BEGIN
5187
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5188
					--(SELECT TLNANME FROM TL_USER 
5189
					--WHERE 1=1
5190
					--AND TLSUBBRID = @BRANCH_CREATE
5191
					--AND RoleName IN ('TPGD', 'PP'))
5192
					SELECT TLNANME
5193
					FROM TL_USER
5194
					WHERE 1=1
5195
					AND TLSUBBRID = @BRANCH_CREATE
5196
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5197
		END
5198
		ELSE IF(@BRANCH_TYPE = 'CN')
5199
		BEGIN
5200
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5201
					--(SELECT TLNANME FROM TL_USER 
5202
					--WHERE 1=1
5203
					--AND TLSUBBRID = @BRANCH_CREATE
5204
					--AND RoleName IN ('GDDV', 'PDG'))
5205
					SELECT TLNANME
5206
					FROM TL_USER
5207
					WHERE 1=1
5208
					AND TLSUBBRID = @BRANCH_CREATE
5209
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5210
		END
5211
		ELSE IF(@BRANCH_TYPE = 'HS')
5212
		BEGIN
5213
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5214
					--(SELECT TLNANME FROM TL_USER 
5215
					--WHERE 1=1
5216
					--AND TLSUBBRID = @BRANCH_CREATE
5217
					--AND DEP_ID = @DEP_CREATE
5218
					--AND RoleName IN ('GDDV', 'PP'))
5219
					SELECT TLNANME
5220
					FROM TL_USER
5221
					WHERE 1=1
5222
					AND TLSUBBRID = @BRANCH_CREATE
5223
					AND DEP_ID = @DEP_CREATE
5224
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5225
		END
5226
		
5227
		SET @FLAG = 7
5228
	END
5229
	---Quản lý BDS - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
5230
	ELSE IF @TYPE='RET_MASTER_APPROVED'
5231
	BEGIN
5232
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5233
					(SELECT A.MAKER_ID FROM RET_MASTER A WHERE A.RET_ID = @PO_ID)
5234
		SET @FLAG = 7
5235
	END
5236

    
5237
	---Thông tin sửa chữa BDS- gửi YC phê duyệt-----
5238
	ELSE IF @TYPE='RET_REPAIR_SEND_APPROVE'
5239
	BEGIN
5240
		-----Có cấp phê duyệt trung gian-------
5241
		IF (EXISTS (SELECT*FROM RET_REPAIR WHERE RP_ID = @PO_ID AND SIGN_USER IS NOT NULL))
5242
		BEGIN
5243
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5244
					(SELECT A.SIGN_USER FROM RET_REPAIR A WHERE A.RP_ID = @PO_ID) 
5245
		END	
5246
		ELSE
5247
		-----Ko có cấp phê duyệt trung gian-------
5248
		BEGIN
5249
			SET @BRANCH_CREATE = (SELECT OFFER_BRANCH FROM RET_REPAIR WHERE RP_ID = @PO_ID)
5250
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5251
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_REPAIR WHERE RP_ID = @PO_ID)
5252
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5253

    
5254
			IF(@BRANCH_TYPE = 'PGD')
5255
			BEGIN
5256
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5257
						--SELECT TLNANME FROM TL_USER 
5258
						--WHERE 1=1
5259
						--AND TLSUBBRID = @BRANCH_CREATE
5260
						--AND RoleName IN ('TPGD', 'PP')
5261
						SELECT TLNANME
5262
						FROM TL_USER
5263
						WHERE 1=1
5264
						AND TLSUBBRID = @BRANCH_CREATE
5265
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5266
			END
5267
			ELSE IF(@BRANCH_TYPE = 'CN')
5268
			BEGIN
5269
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5270
						--SELECT TLNANME FROM TL_USER 
5271
						--WHERE 1=1
5272
						--AND TLSUBBRID = @BRANCH_CREATE
5273
						--AND RoleName IN ('GDDV', 'PDG')
5274
						SELECT TLNANME
5275
						FROM TL_USER
5276
						WHERE 1=1
5277
						AND TLSUBBRID = @BRANCH_CREATE
5278
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5279

    
5280
			END
5281
			ELSE IF(@BRANCH_TYPE = 'HS')
5282
			BEGIN
5283
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5284
						--SELECT TLNANME FROM TL_USER 
5285
						--WHERE 1=1
5286
						--AND TLSUBBRID = @BRANCH_CREATE
5287
						--AND DEP_ID = @DEP_CREATE
5288
						--AND RoleName IN ('GDDV', 'PP')
5289
						SELECT TLNANME
5290
						FROM TL_USER
5291
						WHERE 1=1
5292
						AND TLSUBBRID = @BRANCH_CREATE
5293
						AND DEP_ID = @DEP_CREATE
5294
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5295

    
5296
			END
5297
		END
5298

    
5299
		SET @FLAG = 7
5300
	END
5301
	---Thông tin sửa chữa BDS - trung gian duyệt thành công-----
5302
	ELSE IF @TYPE='RET_REPAIR_CONFIRM'
5303
	BEGIN
5304
		SET @BRANCH_CREATE = (SELECT OFFER_BRANCH FROM RET_REPAIR WHERE RP_ID = @PO_ID)
5305
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5306
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM RET_REPAIR WHERE RP_ID = @PO_ID)
5307
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5308

    
5309
		IF(@BRANCH_TYPE = 'PGD')
5310
		BEGIN
5311
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5312
					--(SELECT TLNANME FROM TL_USER 
5313
					--WHERE 1=1
5314
					--AND TLSUBBRID = @BRANCH_CREATE
5315
					--AND RoleName IN ('TPGD', 'PP'))
5316
					SELECT TLNANME
5317
					FROM TL_USER
5318
					WHERE 1=1
5319
					AND TLSUBBRID = @BRANCH_CREATE
5320
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5321

    
5322
		END
5323
		ELSE IF(@BRANCH_TYPE = 'CN')
5324
		BEGIN
5325
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5326
					--(SELECT TLNANME FROM TL_USER 
5327
					--WHERE 1=1
5328
					--AND TLSUBBRID = @BRANCH_CREATE
5329
					--AND RoleName IN ('GDDV', 'PDG'))
5330
					SELECT TLNANME
5331
					FROM TL_USER
5332
					WHERE 1=1
5333
					AND TLSUBBRID = @BRANCH_CREATE
5334
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5335

    
5336
		END
5337
		ELSE IF(@BRANCH_TYPE = 'HS')
5338
		BEGIN
5339
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5340
					--(SELECT TLNANME FROM TL_USER 
5341
					--WHERE 1=1
5342
					--AND TLSUBBRID = @BRANCH_CREATE
5343
					--AND DEP_ID = @DEP_CREATE
5344
					--AND RoleName IN ('GDDV', 'PP'))
5345
					SELECT TLNANME
5346
					FROM TL_USER
5347
					WHERE 1=1
5348
					AND TLSUBBRID = @BRANCH_CREATE
5349
					AND DEP_ID = @DEP_CREATE
5350
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5351

    
5352
		END
5353
		
5354
		SET @FLAG = 7
5355
	END
5356
	---Thông tin sửa chữa BDS - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
5357
	ELSE IF @TYPE='RET_REPAIR_APPROVED'
5358
	BEGIN
5359
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5360
					(SELECT A.MAKER_ID FROM RET_REPAIR A WHERE A.RP_ID = @PO_ID)
5361
		SET @FLAG = 7
5362
	END
5363

    
5364
	---BDS thuê làm trụ sở CN/PGD - gửi YC phê duyệt-----
5365
	ELSE IF @TYPE='REAL_ESTATE_R_H_SEND_APPROVE'
5366
	BEGIN
5367
		-----Có cấp phê duyệt trung gian-------
5368
		IF (EXISTS (SELECT*FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID AND SIGN_USER IS NOT NULL))
5369
		BEGIN
5370
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5371
					(SELECT A.SIGN_USER FROM REAL_ESTATE_R_H A WHERE A.RET_R_H_ID = @PO_ID) 
5372
		END	
5373
		ELSE
5374
		-----Ko có cấp phê duyệt trung gian-------
5375
		BEGIN
5376
			SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID)
5377
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5378
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID)
5379
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5380

    
5381
			IF(@BRANCH_TYPE = 'PGD')
5382
			BEGIN
5383
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5384
						--SELECT TLNANME FROM TL_USER 
5385
						--WHERE 1=1
5386
						--AND TLSUBBRID = @BRANCH_CREATE
5387
						--AND RoleName IN ('TPGD', 'PP')
5388
						SELECT TLNANME
5389
						FROM TL_USER
5390
						WHERE 1=1
5391
						AND TLSUBBRID = @BRANCH_CREATE
5392
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5393

    
5394
			END
5395
			ELSE IF(@BRANCH_TYPE = 'CN')
5396
			BEGIN
5397
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5398
						--SELECT TLNANME FROM TL_USER 
5399
						--WHERE 1=1
5400
						--AND TLSUBBRID = @BRANCH_CREATE
5401
						--AND RoleName IN ('GDDV', 'PDG')
5402
						SELECT TLNANME
5403
						FROM TL_USER
5404
						WHERE 1=1
5405
						AND TLSUBBRID = @BRANCH_CREATE
5406
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5407
			END
5408
			ELSE IF(@BRANCH_TYPE = 'HS')
5409
			BEGIN
5410
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5411
						--SELECT TLNANME FROM TL_USER 
5412
						--WHERE 1=1
5413
						--AND TLSUBBRID = @BRANCH_CREATE
5414
						--AND DEP_ID = @DEP_CREATE
5415
						--AND RoleName IN ('GDDV', 'PP')
5416
						SELECT TLNANME
5417
						FROM TL_USER
5418
						WHERE 1=1
5419
						AND TLSUBBRID = @BRANCH_CREATE
5420
						AND DEP_ID = @DEP_CREATE
5421
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5422
			END
5423
		END
5424

    
5425
		SET @FLAG = 7
5426
	END
5427
	---BDS thuê làm trụ sở CN/PGD - trung gian duyệt thành công-----
5428
	ELSE IF @TYPE='REAL_ESTATE_R_H_CONFIRM'
5429
	BEGIN
5430
		SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID)
5431
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5432
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @PO_ID)
5433
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5434

    
5435
		IF(@BRANCH_TYPE = 'PGD')
5436
		BEGIN
5437
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5438
					--(SELECT TLNANME FROM TL_USER 
5439
					--WHERE 1=1
5440
					--AND TLSUBBRID = @BRANCH_CREATE
5441
					--AND RoleName IN ('TPGD', 'PP'))
5442
					SELECT TLNANME
5443
					FROM TL_USER
5444
					WHERE 1=1
5445
					AND TLSUBBRID = @BRANCH_CREATE
5446
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5447
		END
5448
		ELSE IF(@BRANCH_TYPE = 'CN')
5449
		BEGIN
5450
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5451
					--(SELECT TLNANME FROM TL_USER 
5452
					--WHERE 1=1
5453
					--AND TLSUBBRID = @BRANCH_CREATE
5454
					--AND RoleName IN ('GDDV', 'PDG'))
5455
					SELECT TLNANME
5456
					FROM TL_USER
5457
					WHERE 1=1
5458
					AND TLSUBBRID = @BRANCH_CREATE
5459
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5460
		END
5461
		ELSE IF(@BRANCH_TYPE = 'HS')
5462
		BEGIN
5463
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5464
					--(SELECT TLNANME FROM TL_USER 
5465
					--WHERE 1=1
5466
					--AND TLSUBBRID = @BRANCH_CREATE
5467
					--AND DEP_ID = @DEP_CREATE
5468
					--AND RoleName IN ('GDDV', 'PP'))
5469
					SELECT TLNANME
5470
					FROM TL_USER
5471
					WHERE 1=1
5472
					AND TLSUBBRID = @BRANCH_CREATE
5473
					AND DEP_ID = @DEP_CREATE
5474
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5475
		END
5476
		
5477
		SET @FLAG = 7
5478
	END
5479
	---BDS thuê làm trụ sở CN/PGD - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
5480
	ELSE IF @TYPE='REAL_ESTATE_R_H_APPROVED'
5481
	BEGIN
5482
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5483
					(SELECT A.MAKER_ID FROM REAL_ESTATE_R_H A WHERE A.RET_R_H_ID = @PO_ID)
5484
		SET @FLAG = 7
5485
	END
5486

    
5487
	---BDS đang hoàn thiện thủ tục pháp lý - gửi YC phê duyệt-----
5488
	ELSE IF @TYPE='REAL_ESTATE_L_C_SEND_APPROVE'
5489
	BEGIN
5490
		-----Có cấp phê duyệt trung gian-------
5491
		IF (EXISTS (SELECT*FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID AND SIGN_USER IS NOT NULL))
5492
		BEGIN
5493
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5494
					(SELECT A.SIGN_USER FROM REAL_ESTATE_L_C A WHERE A.RET_L_C_ID = @PO_ID) 
5495
		END	
5496
		ELSE
5497
		-----Ko có cấp phê duyệt trung gian-------
5498
		BEGIN
5499
			SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID)
5500
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5501
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID)
5502
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5503

    
5504
			IF(@BRANCH_TYPE = 'PGD')
5505
			BEGIN
5506
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5507
						--SELECT TLNANME FROM TL_USER 
5508
						--WHERE 1=1
5509
						--AND TLSUBBRID = @BRANCH_CREATE
5510
						--AND RoleName IN ('TPGD', 'PP')
5511
						SELECT TLNANME
5512
						FROM TL_USER
5513
						WHERE 1=1
5514
						AND TLSUBBRID = @BRANCH_CREATE
5515
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5516
			END
5517
			ELSE IF(@BRANCH_TYPE = 'CN')
5518
			BEGIN
5519
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5520
						--SELECT TLNANME FROM TL_USER 
5521
						--WHERE 1=1
5522
						--AND TLSUBBRID = @BRANCH_CREATE
5523
						--AND RoleName IN ('GDDV', 'PDG')
5524
						SELECT TLNANME
5525
						FROM TL_USER
5526
						WHERE 1=1
5527
						AND TLSUBBRID = @BRANCH_CREATE
5528
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5529
			END
5530
			ELSE IF(@BRANCH_TYPE = 'HS')
5531
			BEGIN
5532
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5533
						--SELECT TLNANME FROM TL_USER 
5534
						--WHERE 1=1
5535
						--AND TLSUBBRID = @BRANCH_CREATE
5536
						--AND DEP_ID = @DEP_CREATE
5537
						--AND RoleName IN ('GDDV', 'PP')
5538
						SELECT TLNANME
5539
						FROM TL_USER
5540
						WHERE 1=1
5541
						AND TLSUBBRID = @BRANCH_CREATE
5542
						AND DEP_ID = @DEP_CREATE
5543
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5544
			END
5545
		END
5546

    
5547
		SET @FLAG = 7
5548
	END
5549
	---BDS đang hoàn thiện thủ tục pháp lý - trung gian duyệt thành công-----
5550
	ELSE IF @TYPE='REAL_ESTATE_L_C_CONFIRM'
5551
	BEGIN
5552
		SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID)
5553
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5554
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM REAL_ESTATE_L_C WHERE RET_L_C_ID = @PO_ID)
5555
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5556

    
5557
		IF(@BRANCH_TYPE = 'PGD')
5558
		BEGIN
5559
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5560
					--(SELECT TLNANME FROM TL_USER 
5561
					--WHERE 1=1
5562
					--AND TLSUBBRID = @BRANCH_CREATE
5563
					--AND RoleName IN ('TPGD', 'PP'))
5564
					SELECT TLNANME
5565
					FROM TL_USER
5566
					WHERE 1=1
5567
					AND TLSUBBRID = @BRANCH_CREATE
5568
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5569
		END
5570
		ELSE IF(@BRANCH_TYPE = 'CN')
5571
		BEGIN
5572
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5573
					--(SELECT TLNANME FROM TL_USER 
5574
					--WHERE 1=1
5575
					--AND TLSUBBRID = @BRANCH_CREATE
5576
					--AND RoleName IN ('GDDV', 'PDG'))
5577
					SELECT TLNANME
5578
					FROM TL_USER
5579
					WHERE 1=1
5580
					AND TLSUBBRID = @BRANCH_CREATE
5581
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5582
		END
5583
		ELSE IF(@BRANCH_TYPE = 'HS')
5584
		BEGIN
5585
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5586
					--(SELECT TLNANME FROM TL_USER 
5587
					--WHERE 1=1
5588
					--AND TLSUBBRID = @BRANCH_CREATE
5589
					--AND DEP_ID = @DEP_CREATE
5590
					--AND RoleName IN ('GDDV', 'PP'))
5591
					SELECT TLNANME
5592
					FROM TL_USER
5593
					WHERE 1=1
5594
					AND TLSUBBRID = @BRANCH_CREATE
5595
					AND DEP_ID = @DEP_CREATE
5596
					AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP'))
5597
		END
5598
		
5599
		SET @FLAG = 7
5600
	END
5601
	---BDS đang hoàn thiện thủ tục pháp lý - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
5602
	ELSE IF @TYPE='REAL_ESTATE_L_C_APPROVED'
5603
	BEGIN
5604
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5605
					(SELECT A.MAKER_ID FROM REAL_ESTATE_L_C A WHERE A.RET_L_C_ID = @PO_ID)
5606
		SET @FLAG = 7
5607
	END
5608
	--PHONGNT 24/2/2022 PHIẾU YÊU CẦU CÔNG TÁC--
5609
	---PHIẾU YÊU CẦU CÔNG TÁC - gửi YC phê duyệt---
5610
	ELSE IF @TYPE='TR_REQUEST_JOB_FORM_SEND_APPROVE'
5611
	BEGIN
5612
		-----Có cấp phê duyệt trung gian-------
5613
		IF (EXISTS (SELECT*FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @PO_ID AND SIGN_USER IS NOT NULL))
5614
		BEGIN
5615
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5616
					(SELECT A.SIGN_USER FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID) 
5617
		END	
5618
		ELSE
5619
		-----Ko có cấp phê duyệt trung gian-------
5620
		BEGIN
5621
			SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @PO_ID)
5622
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5623
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM TR_REQUEST_JOB_FORM WHERE @PO_ID = @PO_ID)
5624
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5625

    
5626
			IF(@BRANCH_TYPE = 'PGD')
5627
			BEGIN
5628
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5629
						SELECT TLNANME FROM TL_USER 
5630
						WHERE 1=1
5631
						AND TLSUBBRID = @BRANCH_CREATE
5632
						AND RoleName IN ('TPGD', 'PP')
5633
			END
5634
			ELSE IF(@BRANCH_TYPE = 'CN')
5635
			BEGIN
5636
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5637
						SELECT TLNANME FROM TL_USER 
5638
						WHERE 1=1
5639
						AND TLSUBBRID = @BRANCH_CREATE
5640
						AND RoleName IN ('GDDV', 'PDG')
5641
			END
5642
			ELSE IF(@BRANCH_TYPE = 'HS')
5643
			BEGIN
5644
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5645
						SELECT TLNANME FROM TL_USER 
5646
						WHERE 1=1
5647
						AND TLSUBBRID = @BRANCH_CREATE
5648
						AND DEP_ID = @DEP_CREATE
5649
						AND RoleName IN ('GDDV', 'PP')
5650
			END
5651
		END
5652

    
5653
		SET @FLAG = 7
5654
	END
5655
	---Phiếu yêu cầu công tác - trung gian duyệt thành công-----
5656
	ELSE IF @TYPE='TR_REQUEST_JOB_FORM_CONFIRM'
5657
	BEGIN
5658
		SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @PO_ID)
5659
		SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5660
		SET @p_MAKER_ID = (SELECT MAKER_ID FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @PO_ID)
5661
		SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5662

    
5663
		IF(@BRANCH_TYPE = 'PGD')
5664
		BEGIN
5665
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5666
					(SELECT TLNANME FROM TL_USER 
5667
					WHERE 1=1
5668
					AND TLSUBBRID = @BRANCH_CREATE
5669
					AND RoleName IN ('TPGD', 'PP'))
5670
		END
5671
		ELSE IF(@BRANCH_TYPE = 'CN')
5672
		BEGIN
5673
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5674
					(SELECT TLNANME FROM TL_USER 
5675
					WHERE 1=1
5676
					AND TLSUBBRID = @BRANCH_CREATE
5677
					AND RoleName IN ('GDDV', 'PDG'))
5678
		END
5679
		ELSE IF(@BRANCH_TYPE = 'HS')
5680
		BEGIN
5681
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5682
					(SELECT TLNANME FROM TL_USER 
5683
					WHERE 1=1
5684
					AND TLSUBBRID = @BRANCH_CREATE
5685
					AND DEP_ID = @DEP_CREATE
5686
					AND RoleName IN ('GDDV', 'PP'))
5687
		END
5688
		
5689
		SET @FLAG = 7
5690
	END
5691
	---Phiếu yêu cầu công tác - trưởng đơn vị đã duyệt, trả mail về cho ng tạo-----
5692
	ELSE IF @TYPE='TR_REQUEST_JOB_FORM_APPROVED'
5693
	BEGIN
5694
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5695
					(SELECT A.MAKER_ID FROM TR_REQUEST_JOB_FORM A WHERE A.REQ_ID = @PO_ID)
5696
		SET @FLAG = 7
5697
	END
5698
	--PHONGNT 24/2/2022 PHIẾU YÊU CẦU XE--
5699
	---PHIẾU YÊU CẦU XE - gửi YC phê duyệt---
5700
	ELSE IF @TYPE='TR_REQUEST_CAR_SEND_TDV'
5701
	BEGIN
5702
			SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID)
5703
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5704
			SET @p_MAKER_ID = (SELECT MAKER_ID FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID)
5705
			SET @DEP_CREATE =(SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5706

    
5707
			IF(@BRANCH_TYPE = 'PGD')
5708
			BEGIN
5709
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5710
						SELECT TLNANME FROM TL_USER A
5711
						JOIN AbpUserRoles B ON B.UserId = A.ID
5712
						JOIN AbpRoles C ON C.Id=B.RoleId
5713
						WHERE 1=1
5714
						AND A.TLSUBBRID = @BRANCH_CREATE
5715
						AND C.DisplayName IN ('TPGD', 'PPGD')
5716
			END
5717
			ELSE IF(@BRANCH_TYPE = 'CN')
5718
			BEGIN
5719
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5720
						SELECT TLNANME FROM TL_USER A
5721
						JOIN AbpUserRoles B ON B.UserId = A.ID
5722
						JOIN AbpRoles C ON C.Id=B.RoleId
5723
						WHERE 1=1
5724
						AND A.TLSUBBRID = @BRANCH_CREATE
5725
						AND RoleName IN ('GDDV', 'PDG')
5726
			END
5727
			ELSE IF(@BRANCH_TYPE = 'HS')
5728
			BEGIN
5729
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5730
						SELECT TLNANME FROM TL_USER A
5731
						JOIN AbpUserRoles B ON B.UserId = A.ID
5732
						JOIN AbpRoles C ON C.Id=B.RoleId
5733
						WHERE 1=1
5734
						AND A.TLSUBBRID = @BRANCH_CREATE
5735
						AND A.DEP_ID = @DEP_CREATE
5736
						AND RoleName IN ('GDDV', 'TP','TBP','PP')
5737
			END
5738
		SET @FLAG = 7
5739
	END
5740
	---Phiếu yêu cầu xe - gửi mail cho người cập nhật phiếu-----
5741
	ELSE IF @TYPE='TR_REQUEST_CAR_SEND_USERUPD'
5742
	BEGIN
5743
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5744
					(SELECT USER_UPDATE FROM TR_REQUEST_CAR  WHERE REQ_ID = @PO_ID) 
5745
		SET @FLAG = 7
5746
	END
5747
	---Phiếu yêu cầu xe - gửi mail cho CVĐĐ Xe-----
5748
	ELSE IF @TYPE='TR_REQUEST_CAR_SEND_CV'
5749
	BEGIN
5750
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5751
					(SELECT CDVAL FROM CM_ALLCODE  WHERE CDNAME = 'REQCAR') 
5752
		SET @FLAG = 7
5753
	END
5754
	---Phiếu yêu cầu xe - gửi mail cho người tạo-----
5755
	ELSE IF @TYPE='TR_REQUEST_CAR_COST_SEND_MAKER'
5756
	BEGIN
5757
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5758
					(SELECT MAKER_ID FROM TR_REQUEST_CAR  WHERE REQ_ID = @PO_ID) 
5759
		SET @FLAG = 7
5760
	END
5761
	---Phiếu yêu cầu xe - CVĐĐ Xe đã duyệt, gửi mail cho Lãnh Đạo HC HO-----
5762
	ELSE IF @TYPE='TR_REQUEST_CAR_COST_CV_App'
5763
	BEGIN
5764
		SET @BRANCH_CREATE = (SELECT BRANCH_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @PO_ID)
5765
		INSERT INTO @LST_USER_RECIVE (TLNAME)
5766
					(SELECT TLNANME FROM TL_USER 
5767
					WHERE 1=1
5768
					AND TLSUBBRID = @BRANCH_CREATE
5769
					AND RoleName IN ('GDDV', 'PP'))
5770
		SET @FLAG = 7
5771
	END
5772
	---Phiếu yêu cầu xe - Gửi CV và người tạo-----
5773
	ELSE IF @TYPE='TR_REQUEST_CAR_SEND_CV_USER'
5774
	BEGIN
5775
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5776
					(SELECT MAKER_ID FROM TR_REQUEST_CAR  WHERE REQ_ID = @PO_ID) 
5777
		INSERT INTO @LST_USER_RECIVE (TLNAME) 
5778
					(SELECT USER_UPDATE FROM TR_REQUEST_CAR  WHERE REQ_ID = @PO_ID) 
5779
		SET @FLAG = 7
5780
	END
5781
	-- Kho vật liệu
5782
	ELSE IF (@TYPE = 'MW_IN_KT_APPR')
5783
	BEGIN
5784
		IF(EXISTS(SELECT * FROM MW_IN_MASTER WHERE IN_ID = @PO_ID AND AUTH_STATUS = 'A' AND AUTH_STATUS_KT = 'A'))
5785
		BEGIN
5786
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5787
			(SELECT MAKER_ID FROM MW_IN_MASTER WHERE IN_ID = @PO_ID)
5788
		END
5789
		SET @FLAG = 8
5790
	END
5791
	ELSE IF (@TYPE = 'MW_OUT_KT_APPR')
5792
	BEGIN
5793
		IF(EXISTS(SELECT * FROM MW_OUT WHERE OUT_ID = @PO_ID AND AUTH_STATUS = 'A' AND KT_AUTH_STATUS = 'A'))
5794
		BEGIN
5795
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5796
			(SELECT MAKER_ID FROM MW_OUT WHERE OUT_ID = @PO_ID)
5797
		END
5798
		SET @FLAG = 8
5799
	END
5800
	ELSE IF (@TYPE = 'MW_TRANSFER_KT_APPR')
5801
	BEGIN
5802
		IF(EXISTS(SELECT * FROM MW_TRANSFER WHERE TRANSFER_ID = @PO_ID AND AUTH_STATUS = 'A' AND KT_AUTH_STATUS = 'A'))
5803
		BEGIN
5804
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5805
			(SELECT MAKER_ID FROM MW_TRANSFER WHERE TRANSFER_ID = @PO_ID)
5806
		END
5807
		SET @FLAG = 8
5808
	END
5809
	ELSE IF (@TYPE = 'MW_LIQUID_KT_APPR')
5810
	BEGIN
5811
		IF(EXISTS(SELECT * FROM MW_LIQ_MASTER WHERE LIQ_ID = @PO_ID AND AUTH_STATUS = 'A' AND KT_AUTH_STATUS = 'A'))
5812
		BEGIN
5813
			INSERT INTO @LST_USER_RECIVE (TLNAME) 
5814
			(SELECT MAKER_ID FROM MW_LIQ_MASTER WHERE LIQ_ID = @PO_ID)
5815
		END
5816
		SET @FLAG = 8
5817
	END
5818
  ELSE IF @TYPE = 'TR_REJECT_GDV'
5819
		BEGIN
5820
		--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý
5821
		SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
5822
		  SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val
5823
		)x)
5824

    
5825
		SELECT @PAGE = sp.ID
5826
		FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX
5827
			IF(@PAGE='TR_REQ_PAYMENT')
5828
			BEGIN
5829
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5830
				(
5831
				SELECT MAKER_ID_KT
5832
				FROM TR_REQ_PAYMENT 
5833
				WHERE REQ_PAY_ID = @PO_ID
5834
				)
5835
			END
5836
		ELSE IF(@PAGE='TR_REQ_ADVANCE_PAMENT')
5837
			BEGIN
5838
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5839
				(
5840
				SELECT MAKER_ID_KT
5841
				FROM TR_REQ_ADVANCE_PAYMENT 
5842
				WHERE REQ_PAY_ID = @PO_ID
5843
				)
5844
			END
5845
		
5846
		SET @FLAG = 6
5847
	END
5848
  ELSE IF @TYPE = 'TR_REJECT_NT'
5849
		BEGIN
5850
			--cắt chuỗi lấy PREFIX để xác định Thêm mới, Xuất, Điều chuyển, Thu hồi, Thanh lý
5851
			SET @SYS_PREFIX =(SELECT LEFT(Val,PATINDEX('%[^a-z]%', Val+'0')-1) from(
5852
			  SELECT SUBSTRING(@PO_ID, PATINDEX('%[a-z]%', @PO_ID), LEN(@PO_ID)) Val
5853
			)x)
5854
      
5855

    
5856
			SELECT @PAGE = sp.ID
5857
			FROM SYS_PREFIX sp WHERE sp.Prefix = @SYS_PREFIX
5858
			
5859
		IF(@PAGE='TR_REQ_PAYMENT')
5860
			BEGIN
5861
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5862
				(SELECT MAKER_ID
5863
				FROM TR_REQ_PAYMENT 
5864
				WHERE REQ_PAY_ID = @PO_ID
5865
				)
5866
			END
5867
		ELSE IF(@PAGE='TR_REQ_ADVANCE_PAMENT')
5868
			BEGIN
5869
				INSERT INTO @LST_USER_RECIVE (TLNAME)
5870
				(SELECT MAKER_ID
5871
				FROM TR_REQ_ADVANCE_PAYMENT 
5872
				WHERE REQ_PAY_ID = @PO_ID
5873
				)
5874
			END
5875
		SET @FLAG = 6
5876
	END
5877

    
5878
	----------------BAODNQ 26/10/2022 : GỬI MAIL QUẢN LÝ HỢP ĐỒNG-------------------
5879
	--------------------NG TẠO GỬI YÊU CẦU PHÊ DUYỆT HỢP ĐỒNG--------------------
5880
	ELSE IF (@TYPE = 'TR_CONTRACT_SEND_APP')
5881
	BEGIN
5882
		DECLARE @p_MAKER_BRANCH_CREATE VARCHAR(15), 
5883
				@p_MAKER_BRANCH_TYPE VARCHAR(15),
5884
				@p_MAKER_DEP_CREATE VARCHAR(15)
5885
		SET @p_MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @PO_ID)
5886
		SET @p_MAKER_BRANCH_CREATE  = (SELECT TOP 1 TLSUBBRID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5887
		SET @p_MAKER_BRANCH_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_MAKER_BRANCH_CREATE)
5888
		SET @p_MAKER_DEP_CREATE =(SELECT TOP 1 DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5889
		SET @p_DEP_CREATE_CODE = (SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @p_MAKER_DEP_CREATE)
5890
		IF(@p_MAKER_BRANCH_TYPE = 'PGD')
5891
		BEGIN
5892
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5893
				SELECT TLNANME
5894
				FROM TL_USER
5895
				WHERE 1=1
5896
				AND TLSUBBRID = @p_MAKER_BRANCH_CREATE
5897
				AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5898
		END
5899
		ELSE IF (@p_MAKER_BRANCH_TYPE = 'CN')
5900
		BEGIN
5901
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5902
				SELECT TLNANME
5903
				FROM TL_USER
5904
				WHERE 1=1
5905
				AND TLSUBBRID = @p_MAKER_BRANCH_CREATE
5906
				AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5907
		END
5908
		ELSE IF (@p_MAKER_BRANCH_TYPE = 'HS')
5909
		BEGIN
5910
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5911
				SELECT TLNANME
5912
				FROM TL_USER
5913
				WHERE 1=1
5914
				AND TLSUBBRID = @p_MAKER_BRANCH_CREATE
5915
				AND DEP_ID = @p_MAKER_DEP_CREATE
5916
				AND(
5917
					(------------Nếu là phòng hành chính, k gửi mail cho GDDV-------------
5918
						@p_DEP_CREATE_CODE = '0690604'
5919
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TBP', 'TP', 'PP')) 
5920
					)
5921
					OR(------------Các phòng ban khác gửi mail bth-------------
5922
						@p_DEP_CREATE_CODE <> '0690604'
5923
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) 
5924
					)
5925
				)
5926
		END
5927

    
5928
		SET @FLAG = 9
5929
	END
5930

    
5931
	--------------------TRƯỞNG ĐV ĐÃ DUYỆT, TRẢ MAIL VỀ CHO NG TẠO---------------------
5932
	ELSE IF (@TYPE = 'TR_CONTRACT_APPROVE')
5933
	BEGIN
5934
		INSERT INTO @LST_USER_RECIVE (TLNAME)
5935
			(SELECT A.MAKER_ID FROM TR_CONTRACT A WHERE A.CONTRACT_ID = @PO_ID)
5936
		SET @FLAG = 9
5937
	END
5938

    
5939
	----------------BAODNQ 26/10/2022 : GỬI MAIL QUẢN LÝ PO-------------------
5940
	--------------------NG TẠO GỬI YÊU CẦU PHÊ DUYỆT PO--------------------
5941
	ELSE IF(@TYPE = 'TR_PO_MASTER_SEND_APP')
5942
	BEGIN
5943
		SET @BRANCH_CREATE = (SELECT TOP 1 BRANCH_ID FROM TR_PO_MASTER WHERE PO_ID = @PO_ID)
5944
		SET @BRANCH_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_CREATE)
5945
		SET @p_MAKER_ID = (SELECT TOP 1 MAKER_ID FROM TR_PO_MASTER WHERE PO_ID = @PO_ID)
5946
		SET @DEP_CREATE = (SELECT TOP 1 DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
5947
		SET @p_DEP_CREATE_CODE = (SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEP_CREATE)
5948

    
5949
		IF(@BRANCH_TYPE = 'PGD')
5950
		BEGIN
5951
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5952
				SELECT TLNANME
5953
				FROM TL_USER
5954
				WHERE 1=1
5955
				AND TLSUBBRID = @BRANCH_CREATE
5956
				AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TPGD', 'PPGD'))
5957
		END
5958
		ELSE IF (@BRANCH_TYPE = 'CN')
5959
		BEGIN
5960
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5961
				SELECT TLNANME
5962
				FROM TL_USER
5963
				WHERE 1=1
5964
				AND TLSUBBRID = @BRANCH_CREATE
5965
				AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'PGD'))
5966
		END
5967
		ELSE IF (@BRANCH_TYPE = 'HS')
5968
		BEGIN
5969
			INSERT INTO @LST_USER_RECIVE (TLNAME)
5970
				SELECT TLNANME
5971
				FROM TL_USER
5972
				WHERE 1=1
5973
				AND TLSUBBRID = @BRANCH_CREATE
5974
				AND DEP_ID = @DEP_CREATE
5975
				AND(
5976
					(------------Nếu là phòng hành chính, k gửi mail cho GDDV-------------
5977
						@p_DEP_CREATE_CODE = '0690604'
5978
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('TBP', 'TP', 'PP')) 
5979
					)
5980
					OR(------------Các phòng ban khác gửi mail bth-------------
5981
						@p_DEP_CREATE_CODE <> '0690604'
5982
						AND EXISTS(SELECT * FROM TL_USER_GET_ROLES (TLNANME) WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) 
5983
					)
5984
				)
5985
				
5986
		END
5987

    
5988
		SET @FLAG = 10
5989
	END
5990

    
5991
	--------------------TRƯỞNG ĐV ĐÃ DUYỆT, TRẢ MAIL VỀ CHO NG TẠO---------------------
5992
	ELSE IF(@TYPE = 'TR_PO_MASTER_APPROVE')
5993
	BEGIN
5994
		INSERT INTO @LST_USER_RECIVE (TLNAME)
5995
			(SELECT A.MAKER_ID FROM TR_PO_MASTER A WHERE A.PO_ID = @PO_ID)
5996
		SET @FLAG = 10
5997
	END
5998
	------------------END BAODNQ--------------------
5999

    
6000
	----- END PYC MUA SẮM --------------------
6001

    
6002
	---START hieuhm 09/11/2022 Gửi phê duyệt công trình, gửi mail cho người duyệt-----
6003
	ELSE IF @TYPE='CON_MASTER_SendApp'
6004
	BEGIN
6005
		DECLARE @BRANCH_ID_CONMASTER VARCHAR(15) = '', @DEP_ID_CONMASTER VARCHAR(15) =''
6006
		--SELECT @BRANCH_ID_CONMASTER = BRANCH_ID, @DEP_ID_CONMASTER = DEP_CREATE FROM CON_MASTER WHERE CONSTRUCT_ID = @PO_ID
6007
		INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT TLNANME FROM [dbo].[FN_GET_USER_BY_ROLE] ('GDDV',@BRANCH_ID_CONMASTER,@DEP_ID_CONMASTER))
6008
		SET @FLAG = 6
6009
	END
6010
	---END hieuhm 09/11/2022 Gửi phê duyệt công trình, gửi mail cho người duyệt-----
6011

    
6012
	---START hieuhm 11/11/2022 Phê duyệt công trình, gửi mail cho người tạo-----
6013
	ELSE IF @TYPE='CON_MASTER_APP'
6014
	BEGIN
6015
		INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT MAKER_ID FROM CON_MASTER CM WHERE CM.CONSTRUCT_ID = @PO_ID)		
6016
		SET @FLAG = 6
6017
	END
6018
	---END hieuhm 11/11/2022 Phê duyệt công trình, gửi mail cho người tạo-----
6019

    
6020
	---START hieuhm 16/11/2022 Gửi phê duyệt layout bản vẽ, gửi mail cho người duyệt-----
6021
	ELSE IF (@TYPE='CON_LAYOUT_BLUEPRINT_App' OR @TYPE ='CON_LAYOUT_BLUEPRINT_SendApp')
6022
	BEGIN
6023
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = @PO_ID AND [STATUS] = 'C' AND PROCESS_ID <> 'APPROVE'))
6024
		BEGIN
6025
			DECLARE @BRANCH_ID_CONLB VARCHAR(15) = '', @DEP_ID_CONLB VARCHAR(15) ='', @ROLE_CONLB VARCHAR(15) ='',@PROCESS_ID_CONLB VARCHAR(15) ='',@DVDM_ID_CONLB VARCHAR(15) =''
6026
			SELECT @BRANCH_ID_CONLB = BRANCH_ID,@DEP_ID_CONLB = DEP_ID,@ROLE_CONLB = ROLE_USER,@PROCESS_ID_CONLB = PROCESS_ID,@DVDM_ID_CONLB = DVDM_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @PO_ID AND [STATUS] = 'C'
6027
			IF(@PROCESS_ID_CONLB NOT IN ('GDK_HT','PTGD_TC','PTGD_VH'))
6028
			BEGIN
6029
				INSERT INTO @LST_USER_RECIVE (TLNAME) (SELECT DISTINCT TLNANME FROM [dbo].[FN_GET_USER_BY_ROLE] (@ROLE_CONLB,@BRANCH_ID_CONLB,@DEP_ID_CONLB))
6030
			END
6031
			ELSE
6032
			BEGIN
6033
				DECLARE @BRANCH_TYPE_CONLB VARCHAR(15) = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID_CONLB)
6034
				INSERT INTO @LST_USER_RECIVE (TLNAME)
6035
				SELECT TLNANME FROM (
6036
					SELECT TU.TLNANME, TU.TLFullName, TU.TLSUBBRID AS BRANCH_ID, TU.SECUR_CODE AS DEP_ID, R.DisplayName AS ROLE_OLD, TRM.ROLE_NEW,NULL AS EFF_DATE, NULL AS EXP_DATE
6037
					FROM dbo.TL_USER TU
6038
					LEFT JOIN dbo.AbpUserRoles UR ON TU.ID = UR.UserId
6039
					INNER JOIN dbo.AbpRoles R ON R.Id = UR.RoleId
6040
					LEFT JOIN (SELECT * FROM dbo.TL_SYS_ROLE_MAPPING RM WHERE RM.TLNAME IS NULL OR RM.TLNAME = '') TRM ON (TRM.ROLE_OLD = R.DisplayName)
6041
					UNION ALL
6042
					SELECT TU.TLNANME, TU.TLFullName, RM.BRANCH_ID, RM.DEP_ID, RM.ROLE_OLD, RM.ROLE_NEW, RM.EFF_DATE,RM.EXP_DATE
6043
					FROM dbo.TL_USER TU
6044
					LEFT JOIN dbo.TL_SYS_ROLE_MAPPING RM ON TU.TLNANME = RM.TLNAME
6045
					WHERE CAST(RM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
6046
				) TMP 
6047
				WHERE 1 = 1
6048
				AND ((TMP.ROLE_OLD = @ROLE_CONLB OR TMP.ROLE_NEW = @ROLE_CONLB ) OR @ROLE_CONLB IS NULL OR @ROLE_CONLB = '')
6049
				AND ((TMP.BRANCH_ID IN (SELECT BRANCH_ID FROM PL_COSTCENTER_DT WHERE COST_ID IN (select COST_ID from PL_COSTCENTER where DVDM_ID = @DVDM_ID_CONLB)) AND TMP.DEP_ID IN (SELECT DEP_ID FROM PL_COSTCENTER_DT WHERE COST_ID IN (select COST_ID from PL_COSTCENTER where DVDM_ID = @DVDM_ID_CONLB)))
6050
					OR (NOT EXISTS(SELECT * FROM PL_COSTCENTER_DT WHERE COST_ID IN (select COST_ID from PL_COSTCENTER where DVDM_ID = @DVDM_ID_CONLB)))
6051
				)
6052
			END
6053
		END
6054
		SET @FLAG = 6
6055
	END
6056
	-----END hieuhm 16/11/2022 Gửi phê duyệt layout bản vẽ, gửi mail cho người duyệt-----
6057
	IF(@FLAG = 0)
6058
	BEGIN 
6059
		SELECT A.*,B.TLFullName,B.EMAIL 
6060
		FROM TL_ROLE_NOTIFICATION A
6061
		LEFT JOIN TL_USER B ON A.TL_NAME=B.TLNANME
6062
		WHERE EXISTS(SELECT * FROM @LST_POID WHERE ID = A.PO_ID)
6063
		
6064
	END
6065
	ELSE IF(@FLAG = 1)
6066
	BEGIN 
6067
		SELECT B.*,A.TLFullName,A.EMAIL 
6068
		FROM TL_USER  A
6069
		LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1 >2
6070
		WHERE (A.TLNANME IN (SELECT * FROM @LST_USER_RECIVE))
6071
		--AND A.TLNANME NOT IN  ('trungnq1','taila')
6072
	END
6073
	-- NEU LA TO TRINH CHU TRUONG, PYC MS THÌ TRA VE FLAG =2
6074
	ELSE IF(@FLAG = 2)
6075
	BEGIN 
6076
		SELECT B.*,A.TLFullName,A.EMAIL 
6077
		FROM TL_USER  A
6078
		LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2
6079
		WHERE (A.TLNANME IN (SELECT TLNAME FROM @PL_PROCESS_CURRENT_SEARCH_TEMP))
6080
		--AND A.TLNANME NOT IN  ('trungnq1','taila')
6081
		
6082
	END
6083
	-- SAU KHI TT CHU TRUONG DUOC PHE DUYET THI THONG BAO CHO NGUOI TAO TO TRINH
6084
	ELSE IF(@FLAG = 3)
6085
	BEGIN 
6086
		SELECT B.*,A.TLFullName,A.EMAIL 
6087
		FROM TL_USER  A
6088
		LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2
6089
		WHERE (A.TLNANME  =@MAKER_ID OR A.TLNANME IN (SELECT TLNAME FROM @PL_PROCESS_CURRENT_SEARCH_TEMP))
6090
		--AND A.TLNANME NOT IN  ('trungnq1','taila')
6091
	END
6092
	-- SAU KHI PYCMS  DUOC PHE DUYET THI THONG BAO CHO NGUOI TAO VA NGUOI XU LY
6093
	ELSE IF(@FLAG = 4)
6094
	BEGIN 
6095
		SELECT B.*,A.TLFullName,A.EMAIL 
6096
		FROM TL_USER  A
6097
		LEFT JOIN TL_ROLE_NOTIFICATION B ON B.TL_NAME=A.TLNANME AND 1>2
6098
		WHERE (A.TLNANME  =@MAKER_ID OR A.TLNANME =@NV_XL_MS)
6099
		--AND A.TLNANME NOT IN  ('trungnq1','taila')
6100
	END
6101

    
6102
	-----------Quản lý cho thuê----------------
6103
	ELSE IF(@FLAG = 5)
6104
	BEGIN
6105
		SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
6106
		FROM TL_USER  
6107
		WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
6108
	END
6109

    
6110
	ELSE IF(@FLAG = 6)
6111
	BEGIN
6112
		SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
6113
		FROM TL_USER  
6114
		WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
6115
	END
6116
	--------------BAODNQ 15/2/2022: Quản lý BDS--------------------
6117
	ELSE IF(@FLAG = 7)
6118
	BEGIN
6119
		SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
6120
		FROM TL_USER  
6121
		WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
6122
	END
6123
	--------------QUẢN LÝ THANH TOÁN TẠM ỨNG------------------
6124
	ELSE IF(@FLAG = 8)
6125
	BEGIN
6126
		SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
6127
		FROM TL_USER  
6128
		WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
6129
	END
6130
	--------------BAODNQ 26/10/2022 QUẢN LÝ HỢP ĐỒNG MUA SẮM-------------------
6131
	ELSE IF (@FLAG = 9)
6132
	BEGIN
6133
		SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
6134
		FROM TL_USER  
6135
		WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
6136
	END
6137
	--------------BAODNQ 26/10/2022 QUẢN LÝ PO-------------------
6138
	ELSE IF (@FLAG = 10)
6139
	BEGIN
6140
		SELECT TLFullName, EMAIL AS Email, ID as [USER_ID]
6141
		FROM TL_USER  
6142
		WHERE (TLNANME IN (SELECT TLNAME FROM @LST_USER_RECIVE))
6143
	END
6144