Project

General

Profile

07012021 FILE 1.0 CAU HINH.txt

Luc Tran Van, 01/07/2021 01:32 PM

 
1
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Appr]
2
--Luanlt 2019/17/10 - Sửa params
3
@p_REQ_PAY_ID	varchar(15)= NULL,
4
@p_CHECKER_ID	varchar(15)	= NULL,
5
@p_AUTH_STATUS varchar(15) = NULL,
6
@p_COST_ID VARCHAR(15) = NULL
7
AS
8
BEGIN TRANSACTION
9
		-- KHAI BAO THEM ROLE NHAN UY QUYEN
10
		DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
11
		--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) AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
12
		-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
13
		--DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
14
		--INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_CHECKER_ID AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
15
				DECLARE @BRANCH_CREATE VARCHAR(15), @p_DEP_ID VARCHAR(15) 
16
		--PRINT @BRANCH_CREATE 
17
		SET @BRANCH_CREATE =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
18
		DECLARE @DEP_CODE_NEXT VARCHAR(15)
19
		IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_CREATE)<>'HS')
20
		BEGIN
21
			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))
22
			SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
23
			--PRINT @DEP_CODE_NEXT
24
		END
25
		ELSE
26
		BEGIN
27
			SET @p_DEP_ID =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
28
			SET @DEP_CODE_NEXT = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
29
		END
30
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID =@p_CHECKER_ID AND REQ_PAY_ID =@p_REQ_PAY_ID)
31
		BEGIN
32
			ROLLBACK TRANSACTION
33
			SELECT '-1' as Result, ''  REQ_PAY_ID, N'Người phê duyệt phiếu phải khác với người tạo phiếu! Bạn không được phép duyệt đối tượng này' ErrorDesc
34
			RETURN '-1'
35
		END
36
		-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
37
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
38
		BEGIN
39
			ROLLBACK TRANSACTION
40
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
41
			RETURN '-1'
42
		END
43
		-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
44
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
45
		BEGIN
46
			ROLLBACK TRANSACTION
47
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
48
			RETURN '-1'
49
		END
50
		-- KIEM TRA NEU DANG TRA VE THI PHAI CHO CAP NHAT LAI THONG TIN MOI DUOC PHEP DUYET
51
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
52
		BEGIN
53
			ROLLBACK TRANSACTION
54
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được KSV phê duyệt trước đó' ErrorDesc
55
			RETURN '-1'
56
		END
57
		IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
58
		BEGIN
59
			ROLLBACK TRANSACTION
60
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng đã được phê duyệt trước đó' ErrorDesc
61
			RETURN '-1'
62
		END
63
		--- KHAI BAO CHUUNG
64
		   DECLARE @ROLE_ID VARCHAR(200), @BRANCH_TYPE VARCHAR(15), @TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0), @BRANCH_ID VARCHAR(15),
65
			@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)
66
			DECLARE @LIMIT_AMT DECIMAL(18,0), @REQ_AMT DECIMAL(18,2) =0, @TONG_PGD DECIMAL(18,0), @TONG_PGD_HOAN DECIMAL(18,0)
67
			SET @REQ_AMT = (SELECT REQ_AMT *ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
68
			--SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
69
			SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
70
			--SET  @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
71
			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'))
72
			BEGIN
73
				PRINT @ROLE_ID
74
			END
75
			ELSE
76
			BEGIN
77
				SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
78
				IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
79
				BEGIN
80
					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))
81
				END
82
			END
83
			SET @BRANCH_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
84
			SET @BRANCH_RQ =(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
85
			SET @DEP_ID_RQ =(SELECT DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
86
			SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
87
			DECLARE @tmp table(BRANCH_ID varchar(15))
88
			INSERT into @tmp  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_ID)
89
			DECLARE @tmp_CN table(BRANCH_ID varchar(15))
90
			IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
91
			BEGIN
92
				--INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_RQ)
93
				INSERT into @tmp_CN  VALUES (@BRANCH_RQ)
94
			END
95
			ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
96
			BEGIN
97
				--DECLARE @FATHER_ID VARCHAR(15) = NULL
98
				--SET @FATHER_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
99
				--INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@FATHER_ID)
100
				INSERT into @tmp_CN  VALUES (@BRANCH_RQ)
101
			END
102
			--DECLARE @DEP_ID_LG VARCHAR(15) = NULL	
103
			--SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)
104
			DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
105
			INSERT INTO @TMP_DVDM
106
			SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
107
			FROM PL_COSTCENTER A
108
			LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
109
			WHERE B.DEP_ID = @DEP_ID_RQ
110
			GROUP BY A.DVDM_ID
111
			-- KHAI BAO BRANCH CUA USER DUYET
112
			SET @BRANCH_LOGIN = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
113
			DECLARE @LIMIT_REMAIN DECIMAL(18,0)
114
		--CAP NHAT CODE TRONG QUA TRINH TEST UAT
115
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE='I'))
116
		BEGIN
117
			IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@ROLE_ID AND REQ_ID = @p_REQ_PAY_ID))
118
			BEGIN
119
					ROLLBACK TRANSACTION
120
					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
121
					RETURN '-1'
122
			END
123
			--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'))
124
			--BEGIN
125
			--		ROLLBACK TRANSACTION
126
			--		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
127
			--		RETURN '-1'
128
			--END
129
			-- KIEM TRA AUTH_STATUS TRUYEN XUONG LA GI, A: DUYET, C: CONFIRM  
130
			IF(@p_AUTH_STATUS='U') -- KIEM TRA HAN MUC CON LAI CUA USER VA THONG BAO CHO NGUOI DUYET
131
			BEGIN
132
			-- BAT DAU DUYET THEO NGAN SACH			
133
			--- LAY HAN MUC CUA USER
134
			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)
135

    
136
			print @LIMIT_AMT
137
			--
138
			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)
139
			IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
140
			BEGIN
141
				SET @LIMIT_AMT =1000000000
142
				
143
			END
144
			IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
145
			BEGIN
146
				SET @LIMIT_AMT =3000000000
147
				
148
			END
149
			-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
150
			SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
151
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
152
			SET @TONG_PGD_HOAN =(
153
						--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
154
						--FROM TR_REQ_PAYMENT_DT B
155
						--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
156
						--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
157
						SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
158
						WHERE A.BRANCH_ID = @BRANCH_RQ
159
						AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I') 
160
				IF(@BRANCH_TYPE='HS')
161
				BEGIN
162
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
163
					 DEP_ID IN
164
					 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
165
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
166
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
167
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
168
					SET @TOTAL_PAYBACK =
169
					ISNULL(
170
					(
171
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
172
						FROM TR_REQ_ADVANCE_PAYMENT C
173
						WHERE C.DEP_ID IN 
174
						(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
175
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
176
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_ID)
177
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
178
					),0)
179
				END
180
				-- 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
181
				ELSE IF(@BRANCH_TYPE <>'HS')
182
				BEGIN
183
					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)
184
					 AND REQ_TYPE ='I' AND AUTH_STATUS='A')
185
					SET @TOTAL_PAYBACK =
186
					(
187
						SELECT (SUM(ISNULL(B.PAY_AMT,0)))
188
						FROM TR_REQ_ADVANCE_PAYMENT B
189
						WHERE B.BRANCH_ID IN 
190
						(SELECT BRANCH_ID FROM @tmp_CN)
191
						AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
192
					)
193
				END
194
				
195
				SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
196
				-- KIEM TRA NEU LA CHU TICH HDQT THI PHE DUYET LUON, KHONG CAN XET HAN MUC GI
197
				IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName ='HDQT'))
198
				BEGIN
199
					ROLLBACK TRANSACTION
200
					SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
201
					--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
202
					--+ CHAR(10) +
203
					--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
204
					--+ CHAR(10) + CHAR(13) +
205
					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')
206
					+ CHAR(10) + 
207
					N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
208
					RETURN '-4'
209
				END
210
				IF(@LIMIT_AMT <(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) + @LIMIT_REMAIN)
211
				BEGIN
212
					ROLLBACK TRANSACTION
213
					SELECT '-2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,
214
					N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') + CHAR(10)+
215
					N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
216
					+ CHAR(10) + CHAR(13)+
217
					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') 
218
					+ CHAR(10) +
219
					N'Số tiền tạm ứng đã vượt mức phê duyệt là: '+ FORMAT((@LIMIT_REMAIN +@REQ_AMT) -@LIMIT_AMT,'#,#', 'vi-VN') 
220
					+ CHAR(10) +
221
					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
222
					RETURN '-2'
223
				END
224
				--- NEU DU HAN MUC THI THONG BAO DE NGUOI DUYET CAN NHAC CO NEN DUYET PHIEU HAY KHONG
225
				IF(@LIMIT_AMT >=(SELECT REQ_AMT * ISNULL(RATE,1) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) +@LIMIT_REMAIN)
226
				BEGIN
227
					IF(@REQ_AMT >@LIMIT_ONE_OF)
228
					BEGIN
229
						ROLLBACK TRANSACTION
230
						SELECT '-2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
231
						N'Tổng hạn mức phê duyệt là: '+ FORMAT(@LIMIT_AMT,'#,#', 'vi-VN') 
232
						+ CHAR(10)+
233
						N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
234
						+ CHAR(10) + CHAR(13) +
235
						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') 
236
						+ CHAR(10) + 
237
						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') 
238
						+ CHAR(10) + 
239
						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
240
						RETURN '-2'
241
					END
242
					ELSE
243
					BEGIN
244
						-- KIEM TRA NEU LA PGD THI CANH BAO
245
						IF(@BRANCH_TYPE ='HS')
246
						BEGIN
247
							IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
248
							BEGIN
249
								ROLLBACK TRANSACTION
250
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
251
								N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
252
								+ CHAR(10) + CHAR(13) +  
253
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
254
								+ CHAR(10) + 
255
								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')
256
								+ CHAR(10) + 
257
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
258
								RETURN '-4'
259
							END
260
							ELSE
261
							BEGIN
262
								ROLLBACK TRANSACTION
263
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
264
								--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
265
								--+ CHAR(10) + CHAR(13) +  
266
								--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
267
								--+ CHAR(10) + 
268
								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')
269
								+ CHAR(10) + 
270
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
271
								RETURN '-4'
272
							END
273
						END
274
						ELSE IF(@BRANCH_TYPE ='CN')
275
						BEGIN
276
							IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 40000000)
277
							BEGIN
278
								ROLLBACK TRANSACTION
279
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
280
								N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
281
								+ CHAR(10) + 
282
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
283
								+ CHAR(10) + CHAR(13) +
284
								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')
285
								+ CHAR(10) +
286
								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')
287
								+ CHAR(10) + 
288
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
289
								RETURN '-4'
290
							END
291
							ELSE
292
							BEGIN
293
								IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME=@p_CHECKER_ID AND RoleName NOT IN('TGD','HQDT')))
294
								BEGIN
295
									ROLLBACK TRANSACTION
296
									SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
297
									N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
298
									+ CHAR(10) +
299
									N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
300
									+ CHAR(10) + CHAR(13) +
301
									N'Số dư tạm ứng lũy kế của đơn vị tính tới thời điểm này là : '+ FORMAT(@LIMIT_REMAIN+@REQ_AMT,'#,#', 'vi-VN')
302
									+ CHAR(10) + 
303
									N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
304
									RETURN '-4'
305
								END
306
								ELSE
307
								BEGIN
308
									ROLLBACK TRANSACTION
309
									SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
310
									--N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
311
									--+ CHAR(10) +
312
									--N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
313
									--+ CHAR(10) + CHAR(13) +
314
									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')
315
									+ CHAR(10) + 
316
									N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
317
									RETURN '-4'
318
								END
319
							END
320
						END
321
						ELSE IF(@BRANCH_TYPE ='PGD')
322
						BEGIN
323
							IF(ISNULL(@TONG_PGD,0) -ISNULL(@TONG_PGD_HOAN,0) > 10000000)
324
							BEGIN
325
								ROLLBACK TRANSACTION
326
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,
327
								N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')+ CHAR(10) +
328
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
329
								+ CHAR(10) + CHAR(13) + 
330
								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')
331
								+ CHAR(10) + 
332
								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')
333
								+ CHAR(10) + 
334
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
335
								RETURN '-4'
336
							END
337
							ELSE
338
							BEGIN
339
								ROLLBACK TRANSACTION
340
								SELECT '-4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, 
341
								N'Tổng hạn mức phê duyệt của bạn là: '+FORMAT(@LIMIT_AMT,'#,#', 'vi-VN')
342
								+ CHAR(10) + 
343
								N'Hạn mức trên một lần phê duyệt là: '+ FORMAT(@LIMIT_ONE_OF,'#,#', 'vi-VN') 
344
								+ CHAR(10) + CHAR(13) +
345
								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')
346
								+ CHAR(10) + 
347
								N'Bạn có muốn tiếp tục duyệt hay không' ErrorDesc
348
								RETURN '-4'
349
							END
350
						END
351
					END
352
				END
353
			-- NEU THOA MAN CAC DIEU KIEN SE TIEN HANH DUYET
354
			END -- END DU HAN MUC DUYET
355
			ELSE IF(@p_AUTH_STATUS='A')
356
			BEGIN
357
				UPDATE TR_REQ_ADVANCE_PAYMENT
358
				SET    AUTH_STATUS='A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT =  GETDATE(), AUTH_STATUS_KT='U'
359
				WHERE  REQ_PAY_ID = @p_REQ_PAY_ID
360
				--- CAP NHAT LAI TINH TRANG TRONG REQUEST_PROCESS
361
				DECLARE @PROCESS_CURR VARCHAR(5)
362
				SET @PROCESS_CURR =(SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER =@ROLE_ID)
363
				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')
364
				--- CAP NHAT PROCESS CUA PHIEU DE NGHI TAM UNG LA DA DUYET
365
				UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS=@PROCESS_CURR WHERE REQ_PAY_ID=@p_REQ_PAY_ID
366
				--
367
				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
368
			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)
369
			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)
370
			--
371
			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)
372
			IF(@ROLE_ID ='GDK' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
373
			BEGIN
374
				SET @LIMIT_AMT =1000000000
375
				
376
			END
377
			IF(@ROLE_ID ='PTGD' AND ((SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) ='DEP000000000011'))
378
			BEGIN
379
				SET @LIMIT_AMT =3000000000
380
				
381
			END
382
			-- NEU LA HOI SO THI LAY TONG SO TIEN TAM UNG CUA CAC PHONG BAN CHUNG VOI KHOI CUA PHIEU DANG DUOC DUYET
383
			SET @TONG_PGD =(SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE BRANCH_ID = @BRANCH_RQ
384
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A') + @REQ_AMT
385
			SET @TONG_PGD_HOAN =(
386
						--SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
387
						--FROM TR_REQ_PAYMENT_DT B
388
						--INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
389
						--INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
390
						SELECT SUM (ISNULL(A.PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT A
391
						WHERE A.BRANCH_ID = @BRANCH_RQ
392
						AND A.AUTH_STATUS_KT ='A' AND A.REQ_TYPE='I') 
393
				IF(@BRANCH_TYPE='HS')
394
				BEGIN
395
					SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
396
					 DEP_ID IN
397
					 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
398
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
399
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
400
					 AND REQ_TYPE ='I' AND AUTH_STATUS ='A'),0)
401
					SET @TOTAL_PAYBACK =
402
					ISNULL(
403
					(
404
						SELECT (SUM(ISNULL(C.PAY_AMT,0)))
405
						FROM TR_REQ_ADVANCE_PAYMENT C
406
						WHERE C.DEP_ID IN 
407
						(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
408
						LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
409
						WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_ID)
410
						AND C.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I'
411
					),0)
412
				END
413
				-- 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
414
				ELSE IF(@BRANCH_TYPE <>'HS')
415
				BEGIN
416
					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)
417
					 AND REQ_TYPE ='I' AND AUTH_STATUS='A')
418
					SET @TOTAL_PAYBACK =
419
					(
420
						SELECT (SUM(ISNULL(B.PAY_AMT,0)))
421
						FROM TR_REQ_ADVANCE_PAYMENT B
422
						WHERE B.BRANCH_ID IN 
423
						(SELECT BRANCH_ID FROM @tmp_CN)
424
						AND B.AUTH_STATUS_KT ='A' AND B.REQ_TYPE='I'
425
					)
426
				END
427
				SET @LIMIT_REMAIN =ISNULL(@TOTAL_ADVANCE,0) - ISNULL(@TOTAL_PAYBACK,0)
428
				--- INSERT VAO BANG LOG
429
				INSERT INTO TR_REQ_ADVANCE_LIMIT_LOG  VALUES (@p_REQ_PAY_ID,@LIMIT_REMAIN,GETDATE())
430
				----
431
			END
432
			ELSE -- NEW KHONG DU HAN MUC THI BAT DAU XAC NHAN VA DUYET THEO HAN MUC
433
			BEGIN
434
				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)
435
			
436
				--PRINT @t_REQ_AMT
437
				--- 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
438
				DECLARE @MAX_STEP INT, @NEXT_ROLE VARCHAR(20), @MESSAGE NVARCHAR(100), @PROCESS_ID_NEXT VARCHAR(5), @PROCESS_PARENT VARCHAR(5),
439
				@BRANCH_ID_PROC VARCHAR(15), @NEX_ROLE_STEP VARCHAR(25), @CURRENT_PROCESS VARCHAR(15)
440
				SET @CURRENT_PROCESS =(SELECT PROCESS_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND ROLE_USER=@ROLE_ID)
441
				SET @NEX_ROLE_STEP = (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE PARENT_PROCESS_ID =@CURRENT_PROCESS AND REQ_ID = @p_REQ_PAY_ID )
442
				--PRINT @NEX_ROLE_STEP
443
				--SET @MAX_STEP = CONVERT(INT,(SELECT MAX(PROCESS_ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID))
444
				SET @PROCESS_ID_NEXT = CONVERT(VARCHAR(5),@CURRENT_PROCESS+1)
445
				--SET @PROCESS_PARENT = CONVERT(VARCHAR(5),@MAX_STEP)
446
				DECLARE @TMP_ROLE TABLE (ROLE_ID VARCHAR(15), BRANCH_ID VARCHAR(15), LIMIT_VALUE DECIMAL(18,0),LIMIT_TYPE VARCHAR(15))
447
				--IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)
448
					IF(LEFT(@DEP_CODE_NEXT,5) ='06908' OR @DEP_CODE_NEXT ='0690605' OR @DEP_CODE_NEXT ='0690405')
449
					BEGIN
450
						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'
451
					END
452
					--ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
453
					ELSE IF(LEFT(@DEP_CODE_NEXT,5) ='06910')
454
					BEGIN
455
						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'
456
					END
457
					--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)
458
					--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) 
459
					--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))
460
					ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06900') OR (LEFT(@DEP_CODE_NEXT,5)) ='06901' OR (LEFT(@DEP_CODE_NEXT,5))='06904'
461
					OR (LEFT(@DEP_CODE_NEXT,5))='06902' OR (LEFT(@DEP_CODE_NEXT,5))='06903'  OR (LEFT(@DEP_CODE_NEXT,5))='06920')
462
					BEGIN
463
						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')
464
					END
465
					--ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
466
					--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID) 
467
					--OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
468
					ELSE IF((LEFT(@DEP_CODE_NEXT,5) ='06907') OR (LEFT(@DEP_CODE_NEXT,5)) ='06909' OR (LEFT(@DEP_CODE_NEXT,5))='06911'
469
					OR (LEFT(@DEP_CODE_NEXT,5))='06922' OR (LEFT(@DEP_CODE_NEXT,5))='06921'  OR (LEFT(@DEP_CODE_NEXT,5))='06920')
470
					BEGIN
471
						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'
472
					END
473
					ELSE
474
					BEGIN
475
						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'
476
					END
477
				SET @BRANCH_ID_PROC= (SELECT BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
478
				print @DEP_CODE_NEXT
479
				print @BRANCH_ID_PROC 
480
			    print @NEX_ROLE_STEP
481
				IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE ROLE_USER=@NEX_ROLE_STEP AND REQ_ID= @p_REQ_PAY_ID))
482
				BEGIN
483
					--SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE LIMIT_VALUE >@t_REQ_AMT 
484
					SET @NEXT_ROLE =(SELECT TOP 1 ROLE_ID FROM @TMP_ROLE WHERE 1 =1
485
					AND ROLE_ID NOT IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID) AND LIMIT_TYPE ='ADV_PAY')
486
					--print @NEXT_ROLE
487
					SET @BRANCH_ID_PROC= (SELECT BRANCH_ID FROM @TMP_ROLE WHERE ROLE_ID=@NEXT_ROLE AND LIMIT_TYPE='ADV_PAY')
488
					SET @MESSAGE = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @NEXT_ROLE)
489
					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)  
490
					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)
491
					INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
492
				END
493
				ELSE
494
				BEGIN
495
					--print @NEX_ROLE_STEP
496
					SET @NEXT_ROLE =@NEX_ROLE_STEP
497
					UPDATE PL_REQUEST_PROCESS SET STATUS='C',DVDM_ID=@p_COST_ID WHERE ROLE_USER =@NEXT_ROLE AND REQ_ID = @p_REQ_PAY_ID	
498
					INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,@CURRENT_PROCESS,@p_CHECKER_ID, GETDATE(),(SELECT ROLE_DESC + N' xác nhận' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID),N'Các cấp phê duyệt theo hạn mức')
499
				END
500
				--				
501
				IF @@Error <> 0 GOTO ABORT
502
					-- UPDATE STATUS CUA STEP HIEN TAI
503
				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)
504
				WHERE ROLE_USER IN(SELECT * FROM @TABLE_ROLE) AND REQ_ID = @p_REQ_PAY_ID		
505
				--INSERT VAO TR_PROCESS		
506
				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	
507
				--- 
508
				UPDATE PL_REQUEST_PROCESS SET DVDM_ID= @p_COST_ID WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER <>@ROLE_ID
509
		  END
510
		END	
511
		ELSE
512
		BEGIN
513
			--- 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
514
			DECLARE @PAY_ID VARCHAR(15), @SUM_OF_PAY_ID DECIMAL(18,2), @SUM_ADVANCE DECIMAL(18,2),
515
			@AMOUNT DECIMAL(18,2),@AMT_PAY_DO DECIMAL(18,2),@SCH_ID VARCHAR(15),@AMT_ADVANCE DECIMAL(18,0)
516
			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
517
			OPEN CUR_SH
518
			FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
519
			WHILE @@FETCH_STATUS =0
520
			BEGIN
521
				SET @SUM_OF_PAY_ID =(SELECT SUM(AMT_PAY_DO) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
522
				SET @SUM_ADVANCE =(SELECT SUM(AMT_ADVANCE) FROM TR_REQ_PAY_SCHEDULE WHERE PAY_ID =@PAY_ID AND AUTH_STATUS_KT='A')
523
				IF(@SUM_OF_PAY_ID +@AMT_PAY_DO >@AMOUNT)
524
				BEGIN
525
					ROLLBACK TRANSACTION
526
					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'
527
					RETURN '-1'
528
				END
529
				IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE < @AMOUNT)
530
				BEGIN
531
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTU' WHERE SCHEDULE_ID=@SCH_ID
532
				END
533
				ELSE IF(@SUM_OF_PAY_ID+@AMT_PAY_DO+@SUM_ADVANCE = @AMOUNT)
534
				BEGIN
535
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='DTT' WHERE SCHEDULE_ID=@SCH_ID
536
				END
537
				ELSE IF(@SUM_OF_PAY_ID=0 AND @SUM_ADVANCE =0 )
538
				BEGIN
539
					UPDATE TR_REQ_PAY_SCHEDULE SET PAYMENT_STATUS ='CTT' WHERE SCHEDULE_ID=@SCH_ID
540
				END
541
				FETCH NEXT FROM CUR_SH INTO @PAY_ID,@AMOUNT,@AMT_PAY_DO,@SCH_ID,@AMT_ADVANCE
542
			END
543
			CLOSE CUR_SH
544
			DEALLOCATE CUR_SH 
545

    
546
			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
547
			SET @p_AUTH_STATUS ='A'
548
			--- INSERT 1 DONG VAO PL_PROCESS
549
			-- INSERT VAO BANG PL_PROCESS 1 DONG TRA VE
550
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
551
				   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')			
552
		END	
553
		IF @@Error <> 0 GOTO ABORT
554
COMMIT TRANSACTION
555
	IF(@p_AUTH_STATUS='A')
556
	BEGIN
557
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'12345' +@DEP_CODE_NEXT ErrorDesc
558
		RETURN '0'
559
	END
560
	ELSE
561
	BEGIN
562
		SELECT '1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,'' ErrorDesc
563
		RETURN '1'
564
	END
565
ABORT:
566
BEGIN
567
		ROLLBACK TRANSACTION
568
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
569
		RETURN '-1'
570
END
571
¿
572
ALTER PROC [dbo].[TL_SYSROLE_LIMIT_Auto]
573
@p_BRANCH_ID VARCHAR(15) = NULL,
574
@p_LIMIT_TYPE VARCHAR(15) = NULL
575
AS
576
BEGIN TRANSACTION
577
IF(@p_LIMIT_TYPE='ADV_PAY')
578
BEGIN
579
	DECLARE @BRANCH_ID VARCHAR(15), @BRANCH_NAMME NVARCHAR(200), @BRANCH_TYPE VARCHAR(15),@p_LIMIT_ID VARCHAR(15), @TOTAL_PGD DECIMAL(18,0), @DMMS_ID VARCHAR(15), @LIMIT_PGD DECIMAL(18,0),
580
	@LIMIT_CN DECIMAL(18,0)
581
	SET @LIMIT_PGD =10000000
582
	SET @LIMIT_CN =40000000
583
	DECLARE CUR_DV CURSOR
584
	FOR SELECT A.BRANCH_ID, A.BRANCH_NAME, A.BRANCH_TYPE FROM CM_BRANCH A WHERE A.BRANCH_TYPE IN ('CN','PGD') AND (A.BRANCH_ID =@p_BRANCH_ID OR  @p_BRANCH_ID IS NULL OR @p_BRANCH_ID ='')
585
	OPEN CUR_DV
586
	FETCH NEXT FROM CUR_DV INTO @BRANCH_ID,@BRANCH_NAMME,@BRANCH_TYPE
587
	WHILE @@FETCH_STATUS = 0
588
	BEGIN
589
		--SET @TOTAL_PGD =(SELECT COUNT(*) FROM CM_BRANCH WHERE FATHER_ID =@BRANCH_ID)*10000000
590
		SET @TOTAL_PGD =0
591
		EXEC SYS_CodeMasters_Gen 'TL_SYSROLE_LIMIT', @p_LIMIT_ID out
592
		IF(@BRANCH_TYPE ='CN' AND NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE BRANCH_ID =@BRANCH_ID AND LIMIT_TYPE='ADV_PAY' AND ROLE_ID ='GDDV'))
593
			BEGIN
594
				INSERT INTO TL_SYSROLE_LIMIT VALUES (@p_LIMIT_ID,'GDDV',@LIMIT_CN+@TOTAL_PGD,@BRANCH_NAMME,'admin','A','tscd_hoiso',GETDATE(),'1',@BRANCH_ID,'ADV_PAY', @LIMIT_CN, NULL)
595
			END
596
		ELSE IF(@BRANCH_TYPE ='PGD' AND  NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE BRANCH_ID =@BRANCH_ID AND LIMIT_TYPE='ADV_PAY' AND ROLE_ID ='TPGD' AND @BRANCH_TYPE ='PGD'))
597
			BEGIN
598
				INSERT INTO TL_SYSROLE_LIMIT VALUES (@p_LIMIT_ID,'TPGD',@LIMIT_PGD,@BRANCH_NAMME,'admin','A','tscd_hoiso',GETDATE(),'1',@BRANCH_ID,'ADV_PAY', @LIMIT_PGD, NULL)
599
			END
600
		ELSE IF (@BRANCH_TYPE ='CN' AND EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE BRANCH_ID =@BRANCH_ID AND LIMIT_TYPE='ADV_PAY' AND ROLE_ID ='GDDV'))
601
		BEGIN
602
				UPDATE TL_SYSROLE_LIMIT SET LIMIT_VALUE =@LIMIT_CN +@TOTAL_PGD, LIMIT_PERCENT= @LIMIT_CN WHERE BRANCH_ID =@BRANCH_ID AND LIMIT_TYPE ='ADV_PAY' AND ROLE_ID ='GDDV'
603
		END
604
		-- KIỂM  TRA XEM ĐÃ KHAI BÁO ĐƠN VỊ / CHI NHÁNH NÀY TRONG CM_DMMS HAY CHƯA
605
		IF(NOT EXISTS (SELECT * FROM CM_DMMS WHERE BRANCH_ID =@BRANCH_ID))
606
		BEGIN
607
			 EXEC SYS_CodeMasters_Gen 'CM_DMMS', @DMMS_ID out
608
			 INSERT INTO CM_DMMS (DMMS_ID,BRANCH_ID, DEP_ID,DVDM_ID) VALUES (@DMMS_ID,@BRANCH_ID,(SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE BRANCH_ID =@BRANCH_ID),'')
609
		END
610
		FETCH NEXT FROM CUR_DV INTO @BRANCH_ID,@BRANCH_NAMME,@BRANCH_TYPE
611
		END
612
	CLOSE CUR_DV
613
	DEALLOCATE CUR_DV
614
END
615
ELSE
616
BEGIN
617
-- INSERT HAN MUC CHO HOI SO
618
-- GIAM DOC KHOI
619
	IF(NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE BRANCH_ID ='DV0001' AND LIMIT_TYPE='ADV_PAY' AND ROLE_ID ='GDK'))
620
	BEGIN
621
		EXEC SYS_CodeMasters_Gen 'TL_SYSROLE_LIMIT', @p_LIMIT_ID out
622
		INSERT INTO TL_SYSROLE_LIMIT VALUES (@p_LIMIT_ID,'GDK',100000000,N'HAN MUC GIAM DOC KHOI','admin','A','tscd_hoiso',GETDATE(),'1','DV0001','ADV_PAY',50000000,NULL)
623
	END
624
	BEGIN
625
		UPDATE TL_SYSROLE_LIMIT SET LIMIT_VALUE =100000000, LIMIT_PERCENT= 50000000 WHERE BRANCH_ID ='DV0001' AND LIMIT_TYPE ='ADV_PAY' AND ROLE_ID ='GDK'
626
	END
627
	-- PHO TONG GIAM DOC
628
	IF(NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE BRANCH_ID ='DV0001' AND LIMIT_TYPE='ADV_PAY' AND ROLE_ID ='PTGD'))
629
	BEGIN
630
		EXEC SYS_CodeMasters_Gen 'TL_SYSROLE_LIMIT', @p_LIMIT_ID out
631
		INSERT INTO TL_SYSROLE_LIMIT VALUES (@p_LIMIT_ID,'PTGD',200000000,N'HAN MUC PHE DUYET PHO TONG GIAM DOC','admin','A','tscd_hoiso',GETDATE(),'1','DV0001','ADV_PAY',100000000,NULL)
632
	END
633
	BEGIN
634
		UPDATE TL_SYSROLE_LIMIT SET LIMIT_VALUE =200000000, LIMIT_PERCENT= 100000000 WHERE BRANCH_ID ='DV0001' AND LIMIT_TYPE ='ADV_PAY' AND ROLE_ID ='PTGD'
635
	END
636
	IF(NOT EXISTS(SELECT * FROM TL_SYSROLE_LIMIT WHERE BRANCH_ID ='DV0001' AND LIMIT_TYPE='ADV_PAY' AND ROLE_ID ='TGD'))
637
	BEGIN
638
		EXEC SYS_CodeMasters_Gen 'TL_SYSROLE_LIMIT', @p_LIMIT_ID out
639
		INSERT INTO TL_SYSROLE_LIMIT VALUES (@p_LIMIT_ID,'TGD',2000000000,N'HAN MUC PHE DUYET TONG GIAM DOC','admin','A','tscd_hoiso',GETDATE(),'1','DV0001','ADV_PAY',500000000,NULL)
640
	END
641
	BEGIN
642
		UPDATE TL_SYSROLE_LIMIT SET LIMIT_VALUE =2000000000, LIMIT_PERCENT= 500000000 WHERE BRANCH_ID ='DV0001' AND LIMIT_TYPE ='ADV_PAY' AND ROLE_ID ='TGD'
643
	END
644
END
645
COMMIT TRANSACTION
646
SELECT '0' as Result, ''  LIMIT_ID, (SELECT TOP 1 LIMIT_VALUE FROM TL_SYSROLE_LIMIT WHERE BRANCH_ID =@p_BRANCH_ID AND LIMIT_TYPE ='ADV_PAY') AS LIMIT_VALUE,'' ErrorDesc
647
RETURN '0'
648
ABORT:
649
BEGIN
650
		ROLLBACK TRANSACTION
651
		SELECT '-1' as Result, '' LIMIT_ID, 0.0 AS LIMIT_VALUE, '' ErrorDesc
652
		RETURN '-1'
653
END
654
¿
655
UPDATE SYS_CODEMASTERS SET CurValue = CurValue+300 WHERE Prefix ='DMMS'
656
¿
657
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_App]
658
    @p_REQ_ID VARCHAR(15) = NULL,
659
	@p_AUTH_STATUS VARCHAR(1) = NULL,
660
	@p_CHECKER_ID varchar(15)  = NULL,
661
	@p_APPROVE_DT DATETIME = NULL,
662
	@p_ROLE_LOGIN VARCHAR(50) = NULL,
663
	@p_BRANCH_LOGIN VARCHAR(15),
664
	@p_PROCESS_DES NVARCHAR(500)
665
	
666
AS
667
	--Validation is here
668
DECLARE @ERRORSYS NVARCHAR(15) = '' 
669
  IF ( NOT EXISTS ( SELECT * FROM TR_REQUEST_DOC WHERE  REQ_ID = @p_REQ_ID))
670
	SET @ERRORSYS = 'REQ-00002'
671
IF @ERRORSYS <> '' 
672
BEGIN
673
	SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
674
	RETURN '0'
675
END 
676
BEGIN TRANSACTION
677
	-- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC
678
	IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
679
		BEGIN
680
			ROLLBACK TRANSACTION
681
			SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc
682
			RETURN '-1'
683
	END
684
	--- PHE DUYET TRUNG GIAN
685
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE_N VARCHAR(20) ,@DEP_CREATE_N VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
686
	@BRANCH_CREATE_TYPE VARCHAR(10)
687
	SELECT @BRANCH_CREATE_N=BRANCH_CREATE,@DEP_CREATE_N=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
688
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
689
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE_N)
690
	-- LUCTV 08122020 KIỂM TRA NẾU TỜ TRÌNH LINK TỚI PYCMS LÀ TỜ TRÌNH TOÀN HÀNG THÌ ĐMMS GIAO CHO ĐƠN VỊ TỰ MUA SẮM
691
	DECLARE @PL_REQ_REF VARCHAR(15), @ISCHECK_ALL VARCHAR(1)
692
	SET @PL_REQ_REF =(SELECT TOP 1 PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)
693
	SET @ISCHECK_ALL =(SELECT TOP 1 IS_CHECKALL FROM PL_REQUEST_DOC WHERE REQ_ID =@PL_REQ_REF)
694
	-- LUCTV 08122020: END
695
	IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER =@p_CHECKER_ID AND PROCESS_ID ='SIGN'))
696
	BEGIN
697
		DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
698
		INSERT INTO dbo.PL_PROCESS
699
		(
700
			REQ_ID,
701
			PROCESS_ID,
702
			CHECKER_ID,
703
			APPROVE_DT,
704
			PROCESS_DESC,NOTES
705
		)
706
		VALUES
707
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
708
			'SIGN',        -- PROCESS_ID - varchar(10)
709
			@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
710
			@p_APPROVE_DT , -- APPROVE_DT - datetime
711
			N'Cấp phê duyệt trung gian xác nhận phiếu yêu cầu mua sắm',
712
			N'Cấp phê duyệt trung gian'
713
		)
714
	--- DUA CAP PHE DUYET TRUONG DON VI
715
		--IF(@BRANCH_CREATE_TYPE='PGD')
716
		--	SET @BRANCH_CREATE_N=(SELECT FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE_N)
717

    
718
	    INSERT INTO dbo.PL_REQUEST_PROCESS
719
		(
720
		    REQ_ID,
721
		    PROCESS_ID,
722
		    STATUS,
723
		    ROLE_USER,
724
		    BRANCH_ID,
725
			DEP_ID,
726
		    CHECKER_ID,
727
		    APPROVE_DT,
728
		    PARENT_PROCESS_ID,
729
		    IS_LEAF,
730
		    COST_ID,
731
		    DVDM_ID,
732
		    NOTES,
733
		    IS_HAS_CHILD
734
		)
735
		VALUES
736
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
737
		    'APPNEW',        -- PROCESS_ID - varchar(10)
738
		    'C',        -- STATUS - varchar(5)
739
		    'GDDV',        -- ROLE_USER - varchar(50)
740
		    @BRANCH_CREATE_N,  
741
			@DEP_CREATE_N,      -- BRANCH_ID - varchar(15)
742
		    '',        -- CHECKER_ID - varchar(15)
743
		    NULL,      -- APPROVE_DT - datetime
744
		    '',        -- PARENT_PROCESS_ID - varchar(10)
745
		    'N',        -- IS_LEAF - varchar(1)
746
		    '',        -- COST_ID - varchar(15)
747
		    '',        -- DVDM_ID - varchar(15)
748
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
749
		    NULL       -- IS_HAS_CHILD - bit
750
		 )
751
	--- UPDATE PROCESS_ID VE APP_NEW
752
	UPDATE TR_REQUEST_DOC SET PROCESS_ID ='APPNEW' WHERE REQ_ID =@p_REQ_ID
753
	END
754
	ELSE
755
	--- PHE DUYET GIU NGUYEN NHU THUONG
756
	BEGIN
757
		DECLARE @ROLE_USER_LOGIN VARCHAR(15)=''
758
		SET @ROLE_USER_LOGIN =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
759
		--- KIEM TRA XEM DA PHE DUYET TRUNG GIAN HAY CHUA
760
		IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <> ''))
761
		BEGIN
762
			IF(NOT EXISTS (SELECT * FROM PL_PROCESS WHERE PROCESS_ID='SIGN' AND REQ_ID =@p_REQ_ID))
763
			BEGIN
764
				ROLLBACK TRANSACTION
765
				SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi cấp phê duyệt trung gian xác nhận. Vui lòng đợi nhân viên '+(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+' xác nhận phiếu!' ErrorDesc
766
				RETURN '-1'
767
			END
768
			IF(@p_CHECKER_ID = (SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
769
			BEGIN
770
				ROLLBACK TRANSACTION
771
				SELECT '-1' Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi trưởng đơn vị phê duyệt. Bạn không có thẩm quyền phê duyệt cấp trưởng đơn vị! Vui lòng xem lịch sử xử lý phiếu' ErrorDesc
772
				RETURN '-1'
773
			END
774
		END
775
		-- LUCTV: 08 12 2020: KIỂM TRA NẾU CẤP DUYỆT KHÔNG NẰM TRONG CẤP TP, PP THÌ KHÔNG CHO DUYỆT TRƯỞNG ĐƠN VỊ
776
		--IF(
777
		DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
778
		DECLARE @CURR_PROCESS VARCHAR(20),@TOTAL_AMT DECIMAL(18,2),
779
		 @LIMIT_VALUE DECIMAL(18,0), @LIMIT_DVCM DECIMAL(18,0),@IS_NEXT BIT,@DMMS_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@BRANCH_HS VARCHAR(20),@DEP_CREATE VARCHAR(15)
780
		SET @BRANCH_HS= (SELECT TOP 1 BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_TYPE='HS')
781
		SET @LIMIT_VALUE=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE  LIMIT_TYPE='PYCMS_DVKD')
782
		SET @LIMIT_DVCM=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE  LIMIT_TYPE='PYCMS_DVCM')
783
		SET @TOTAL_AMT=(SELECT TOTAL_AMT FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
784

    
785
		SET @CURR_PROCESS = (SELECT PROCESS_ID FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
786

    
787
		UPDATE  dbo.TR_REQUEST_DOC SET AUTH_STATUS='A',REQ_TYPE=0, CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CAST(@p_APPROVE_DT AS DATE),BRANCH_DVMS=BRANCH_CREATE, PROCESS_ID='DMMS' WHERE REQ_ID=@p_REQ_ID
788

    
789
	--	SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV'))
790

    
791
		SET @BRANCH_CREATE=(SELECT BRANCH_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
792
		SET @DEP_CREATE=(SELECT DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
793

    
794
		--IF(@BRANCH_CREATE_TYPE='PGD')
795
		--	SET @BRANCH_CREATE=(SELECT BRANCH_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
796

    
797
IF(EXISTS (SELECT BRANCH_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS'))
798
BEGIN
799
    IF(@TOTAL_AMT <= @LIMIT_DVCM)
800
	BEGIN
801
				SET @DMMS_ID= (SELECT DISTINCT HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT 
802
														LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID)
803
				UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=2 WHERE REQ_ID=@p_REQ_ID
804
	END
805
	ELSE
806
	BEGIN
807
				SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS)
808
				UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID
809
	END
810
END
811
ELSE
812
BEGIN
813
	IF(EXISTS(	SELECT RD.REQDT_ID FROM dbo.TR_REQUEST_DOC_DT RD 
814
		LEFT JOIN dbo.SYS_HH_GROUP_LIMIT HGL ON RD.HANGHOA_ID=HGL.HH_ID
815
		LEFT JOIN dbo.SYS_GROUP_LIMIT GL ON GL.GROUP_ID=HGL.GROUP_LIMIT_ID
816
		WHERE GL.IS_HO=1 AND RD.REQ_DOC_ID=@p_REQ_ID))
817
	BEGIN
818
		    IF(@TOTAL_AMT <= @LIMIT_DVCM)
819
			BEGIN
820
				SET @DMMS_ID= (SELECT DISTINCT HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT 
821
														LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID)
822
				UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=2 WHERE REQ_ID=@p_REQ_ID
823
			END
824
			ELSE
825
			BEGIN
826
				SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS)
827
				UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID
828
			END
829
	END
830
	ELSE
831
	BEGIN
832
		IF(@TOTAL_AMT<=@LIMIT_VALUE)
833
			BEGIN
834
				SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE)
835
				UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=0 WHERE REQ_ID=@p_REQ_ID
836
			END
837
			ELSE
838
			BEGIN
839
				SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS)
840
				UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID
841
			END
842
	END
843
END
844
-- LUCTV 08122020 KIỂM TRA NẾU TỜ TRÌNH LINK TỚI PYCMS LÀ TỜ TRÌNH TOÀN HÀNG THÌ ĐMMS GIAO CHO ĐƠN VỊ TỰ MUA SẮM
845
IF(@ISCHECK_ALL ='1')
846
BEGIN
847
	SET @DMMS_ID= (SELECT TOP 1 DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE)
848
	UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=0 WHERE REQ_ID=@p_REQ_ID
849
END
850
IF(@TOTAL_AMT > 20000000)
851
BEGIN
852
	SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS)
853
	UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID
854
END
855

    
856
-- LUCTV 08122020
857

    
858
	--IF(EXISTS(	SELECT RD.REQDT_ID FROM dbo.TR_REQUEST_DOC_DT RD 
859
	--	LEFT JOIN dbo.SYS_HH_GROUP_LIMIT HGL ON RD.HANGHOA_ID=HGL.HH_ID
860
	--	LEFT JOIN dbo.SYS_GROUP_LIMIT GL ON GL.GROUP_ID=HGL.GROUP_LIMIT_ID
861
	--	WHERE GL.IS_HO=1 AND RD.REQ_DOC_ID=@p_REQ_ID)  OR @BRANCH_CREATE=@BRANCH_HS)
862
	--	BEGIN
863
	--		IF(@TOTAL_AMT<=@LIMIT_VALUE AND NOT EXISTS(SELECT HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT 
864
	--													LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID
865
	--					GROUP BY HC.DVCM_ID HAVING COUNT(REQDT_ID)>1))
866
	--		BEGIN
867
	--			SET @DMMS_ID= (SELECT DISTINCT HC.DVCM_ID FROM dbo.TR_REQUEST_DOC_DT DT 
868
	--													LEFT JOIN dbo.CM_HANGHOA_DVCM HC ON HC.HH_ID=DT.HANGHOA_ID WHERE REQ_DOC_ID=@p_REQ_ID)
869
	--			UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=2 WHERE REQ_ID=@p_REQ_ID
870
	--		END
871
	--		ELSE
872
	--		BEGIN
873
	--			SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS)
874
	--			UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID
875
	--		END
876
	--	END
877
	--	ELSE
878
	--	BEGIN
879
	--		IF(@TOTAL_AMT<=@LIMIT_VALUE)
880
	--		BEGIN
881
	--			SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_CREATE)
882
	--			UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_CREATE,DMMS_ID=@DMMS_ID,REQ_TYPE=0 WHERE REQ_ID=@p_REQ_ID
883
	--		END
884
	--		ELSE
885
	--		BEGIN
886
	--			SET @DMMS_ID= (SELECT DMMS_ID FROM dbo.CM_DMMS WHERE BRANCH_ID=@BRANCH_HS)
887
	--			UPDATE dbo.TR_REQUEST_DOC SET BRANCH_DVMS=@BRANCH_HS,DMMS_ID=@DMMS_ID,REQ_TYPE=1 WHERE REQ_ID=@p_REQ_ID
888
	--		END
889
	--	END
890

    
891

    
892
		INSERT INTO dbo.PL_REQUEST_PROCESS
893
		(
894
			REQ_ID,
895
			PROCESS_ID,
896
			STATUS,
897
			ROLE_USER,
898
			BRANCH_ID,
899
			CHECKER_ID,
900
			APPROVE_DT,
901
			PARENT_PROCESS_ID,
902
			IS_LEAF,
903
			COST_ID,
904
			DVDM_ID,
905
			NOTES,
906
			IS_HAS_CHILD,
907
			DEP_ID
908
		)
909
		VALUES
910
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
911
			'APPNEW',        -- PROCESS_ID - varchar(10)
912
			'P',        -- STATUS - varchar(5)
913
			'GDDV',        -- ROLE_USER - varchar(50)
914
			@BRANCH_CREATE,        -- BRANCH_ID - varchar(15)
915
			@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
916
			GETDATE(), -- APPROVE_DT - datetime
917
			'',        -- PARENT_PROCESS_ID - varchar(10)
918
			'',        -- IS_LEAF - varchar(1)
919
			'',        -- COST_ID - varchar(15)
920
			'',        -- DVDM_ID - varchar(15)
921
			N'Trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
922
			0 ,      -- IS_HAS_CHILD - bit
923
			@DEP_CREATE
924
			)
925

    
926
			INSERT INTO dbo.PL_REQUEST_PROCESS
927
		(
928
			REQ_ID,
929
			PROCESS_ID,
930
			STATUS,
931
			ROLE_USER,
932
			BRANCH_ID,
933
			CHECKER_ID,
934
			APPROVE_DT,
935
			PARENT_PROCESS_ID,
936
			IS_LEAF,
937
			COST_ID,
938
			DVDM_ID,
939
			NOTES,
940
			IS_HAS_CHILD
941
		)
942
		VALUES
943
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
944
			'DMMS',        -- PROCESS_ID - varchar(10)
945
			'C',        -- STATUS - varchar(5)
946
			'GDDV',        -- ROLE_USER - varchar(50)
947
			'',        -- BRANCH_ID - varchar(15)
948
			'',        -- CHECKER_ID - varchar(15)
949
			GETDATE(), -- APPROVE_DT - datetime
950
			'APPNEW',        -- PARENT_PROCESS_ID - varchar(10)
951
			'',        -- IS_LEAF - varchar(1)
952
			'',        -- COST_ID - varchar(15)
953
			'',        -- DVDM_ID - varchar(15)
954
			N'Chờ đầu mối mua sắm xử lý',       -- NOTES - nvarchar(500)
955
			1       -- IS_HAS_CHILD - bit
956
		 )
957

    
958
		INSERT INTO dbo.PL_PROCESS
959
		(
960
			REQ_ID,
961
			PROCESS_ID,
962
			CHECKER_ID,
963
			APPROVE_DT,
964
			PROCESS_DESC,NOTES
965
		)
966
		VALUES
967
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
968
			'APPNEW',        -- PROCESS_ID - varchar(10)
969
			@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
970
			@p_APPROVE_DT , -- APPROVE_DT - datetime
971
			@p_PROCESS_DES,
972
			 N'Trưởng đơn vị phê duyệt'        -- PROCESS_DESC - nvarchar(1000)
973
		)
974
	END
975
	IF @@Error <> 0 GOTO ABORT
976
			
977
COMMIT TRANSACTION
978
IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
979
BEGIN
980
	SELECT '0' as Result, '' ErrorDesc
981
	RETURN '0'
982
END
983
ELSE
984
BEGIN
985
	SELECT '4' as Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đã được đợi cấp phê duyệt trung gian xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt' ErrorDesc
986
	RETURN '4'
987
END
988
ABORT:
989
BEGIN
990
		PRINT 'ERROR'
991
		ROLLBACK TRANSACTION
992
		SELECT '-1' as Result, '' ErrorDesc
993
		RETURN '-1'
994
End
995
¿
996

    
997
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Ins]
998
@p_REQ_PAY_ID	varchar(15)= NULL,
999
@p_REQ_PAY_CODE	varchar(50)	= NULL,
1000
@p_REQ_DT VARCHAR(10)= NULL,
1001
@p_BRANCH_ID	varchar(15)	= NULL,
1002
@p_DEP_ID	varchar(15)	= NULL,
1003
@p_REQ_REASON	nvarchar(MAX)	= NULL,
1004
@p_REQ_TYPE	varchar(15)	= NULL,
1005
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
1006
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
1007
@p_REF_ID	varchar(15)	= NULL,
1008
@p_RECEIVER_PO	nvarchar(250)	= NULL,
1009
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
1010
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
1011
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
1012
@p_REQ_AMT	decimal(18, 0)	= NULL,
1013
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
1014
@p_MAKER_ID	varchar(15)	= NULL,
1015
@p_CREATE_DT	varchar(25)	= NULL,
1016
@p_EDITOR_ID	varchar(15)	= NULL,
1017
@p_AUTH_STATUS	varchar(1)	= NULL,
1018
@p_CHECKER_ID	varchar(15)	= NULL,
1019
@p_APPROVE_DT	varchar(25)	= NULL,
1020
@p_CREATE_DT_KT	varchar(25)	= NULL,
1021
@p_MAKER_ID_KT	varchar(15)	= NULL,
1022
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
1023
@p_CHECKER_ID_KT	varchar(1)	= NULL,
1024
@p_APPROVE_DT_KT  varchar(25)= null,
1025
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
1026
@p_BRANCH_CREATE	varchar(15)	= NULL,
1027
@p_NOTES	varchar(15)	= NULL,
1028
@p_RECORD_STATUS	varchar(1)	= NULL,
1029
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
1030
@p_TRANSFER_DT	varchar(25)	= NULL,
1031
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
1032
@p_PROCESS	varchar(15)	= NULL,
1033
@p_PAY_PHASE VARCHAR(15)= NULL,
1034
@p_DVDM_ID VARCHAR(15) = NULL,
1035
@p_RATE DECIMAL(18,0)= NULL,
1036
@p_RECIVER_MONEY VARCHAR(15) = NULL,
1037
@p_IS_PERIOD VARCHAR(5) = NULL,
1038
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
1039
@p_XMP_TEMP XML = NULL
1040
AS
1041
--Validation is here
1042
/*
1043
DECLARE @ERRORSYS NVARCHAR(15) = '' 
1044
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
1045
	 SET @ERRORSYS = ''
1046
IF @ERRORSYS <> '' 
1047
BEGIN
1048
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
1049
	RETURN '0'
1050
END 
1051
*/
1052
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
1053
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
1054
	--BEGIN
1055
	--	SET @ERRORSYS = 'ASSC-00005'
1056
	--	SELECT ErrorCode Result, '' COLLECT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
1057
	--	RETURN '0'
1058
	--END
1059
	IF(@p_REQ_TYPE ='I')
1060
	BEGIN
1061
		DECLARE @AMT_AD_PAY DECIMAL(18,0) =0
1062
		DECLARE @AMT_AD_PAY_BACK DECIMAL(18,0) =0
1063
		DECLARE @AMT_AD_PAY_REMAIN DECIMAL(18,0) =0
1064
		SET @AMT_AD_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID=@p_MAKER_ID AND AUTH_STATUS_KT='A' AND REQ_TYPE ='I')
1065
		SET @AMT_AD_PAY_BACK = (SELECT SUM(D.AMT_USE) +SUM(D.AMT_REVERT) - SUM (D.AMT_ADD)
1066
					FROM TR_REQ_PAYMENT_DT D
1067
					LEFT JOIN TR_REQ_ADVANCE_PAYMENT X ON D.PAY_ADV_ID = X.REQ_PAY_ID  AND D.AUTH_STATUS_KT ='A'
1068
					WHERE X.REF_ID =@p_REF_ID)
1069
	 SET @AMT_AD_PAY_REMAIN =ISNULL(@AMT_AD_PAY,0) -ISNULL(@AMT_AD_PAY_BACK,0)
1070
	 SET @p_REQ_TEMP_AMT =ISNULL(@AMT_AD_PAY_REMAIN,0)
1071
	 END
1072
BEGIN TRANSACTION
1073
	-- LUCTV 17H51 BO SUNG LAY SO TIEN DA TAM UNG CUA NHAN VIEN --
1074
		--SET @AMT_DO =(SELECT * FROM [dbo].TR_RE)
1075
	--THIEUVQ 281119---
1076
		DECLARE @REC_DEBIT_AUTO VARCHAR(15),@ROLE_KI_NHAY VARCHAR(50)
1077
		SET @REC_DEBIT_AUTO =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID = @p_REF_ID)
1078
		--IF (@p_REQ_TYPE='I')
1079
		--BEGIN
1080
		--	--SET @p_REF_ID = @p_MAKER_ID
1081
		--	--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT))
1082
		--	--BEGIN
1083
		--	--	SET @p_RECEIVER_DEBIT = @p_RECEIVER_DEBIT+''
1084
		--	--END
1085
		--	--ELSE
1086
		--	--BEGIN
1087
		--	--	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT AND REF_ID != @p_REF_ID ) AND @p_TYPE_FUNCTION ='SEND')
1088
		--	--	BEGIN
1089
		--	--		SET @p_RECEIVER_DEBIT =(SELECT ACC_NUM FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT)
1090
		--	--	END
1091
		--	--END
1092
		--	IF(@p_RECEIVER_DEBIT IS NOT NULL AND @p_RECEIVER_DEBIT <>'')
1093
		--	BEGIN
1094
		--		IF(@REC_DEBIT_AUTO IS NOT NULL AND @REC_DEBIT_AUTO <>''  AND @REC_DEBIT_AUTO <> @p_RECEIVER_DEBIT)
1095
		--		BEGIN
1096
		--			SET @p_RECEIVER_DEBIT =@REC_DEBIT_AUTO
1097
		--		END
1098
		--		--IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID <> @p_REF_ID AND ACC_NUM =@p_RECEIVER_DEBIT))
1099
		--		--BEGIN
1100
		--		--	ROLLBACK TRANSACTION
1101
		--		--	SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Tài khoản tạm ứng này đã tồn tại và thuộc về nhân viên khác' ErrorDesc
1102
		--		--	RETURN '-1'
1103
		--		--END
1104
		--	END
1105
		--	ELSE
1106
		--	BEGIN
1107
		--		SET @p_RECEIVER_DEBIT =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) 
1108
		--	END
1109

    
1110
		--END
1111
		EXEC [dbo].[ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '',@p_REQ_TYPE, @p_REQ_PAY_CODE out
1112
	--END--
1113
		IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
1114
		BEGIN
1115
			ROLLBACK TRANSACTION
1116
			SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc
1117
			RETURN '-1'
1118
		END
1119
		IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT ='') AND @p_TYPE_FUNCTION ='SEND')
1120
		BEGIN
1121
			ROLLBACK TRANSACTION
1122
			SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
1123
			RETURN '-1'
1124
		END
1125
		IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE  = @p_REQ_PAY_CODE )
1126
		BEGIN
1127
			ROLLBACK TRANSACTION
1128
			SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Số phiếu tạm ứng đã tồn tại trong hệ thống' ErrorDesc
1129
			RETURN '-1'
1130
		END
1131
		IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
1132
		BEGIN
1133
				ROLLBACK TRANSACTION
1134
				SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Tài khoản tạm ứng này không được vượt quá 15 kí tự' ErrorDesc
1135
				RETURN '-1'
1136
		END
1137
		-- START 19-11-2019
1138
		-- LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU UAT- KIEM TRA NEU DOT THANH TOAN CHUA CO THI KHONG DUOC THEM MOI
1139
		--IF(@p_REQ_TYPE='P' AND (@p_PAY_PHASE IS NULL OR @p_PAY_PHASE =''))
1140
		--BEGIN
1141
		--	ROLLBACK TRANSACTION
1142
		--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Đợt thanh toán không được phép để trống' ErrorDesc
1143
		--	RETURN '-1'
1144
		--END
1145
		---- NEU THANH TOAN XU LY NO THI NHAN VIEN NHAN TIEN TAM UNG KHONG DUOC PHEP TRONG
1146
		--IF(@p_REQ_TYPE='D' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
1147
		--BEGIN
1148
		--	ROLLBACK TRANSACTION
1149
		--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Nhân viên nhận tạm ứng không được phép để trống' ErrorDesc
1150
		--	RETURN '-1'
1151
		--END
1152
		-- SO TIEN THANH TOÁN PHAI LON HON KHONG
1153
		IF(@p_REQ_AMT <=0)
1154
		BEGIN
1155
			ROLLBACK TRANSACTION
1156
			SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
1157
			RETURN '-1'
1158
		END
1159
		-----
1160
		---- KIEM TRA NEU CHUA CHON KHOI PHE DUYET THI TU DONG CHUYEN VÊ KHOI TAI CHINH
1161
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
1162
		--BEGIN
1163
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
1164
		--END
1165
		--
1166
		--KIEM TRA NEU TAI KHOAN NHAN VIEN TAM UNG NEU CHUA TON TAI TRONG HE THONG THI BAO LOI
1167
		--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
1168
		--BEGIN
1169
		--	INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UNG DE HOAT DONG NGHIEP VU')
1170
		--END
1171
		--ELSE
1172
		--BEGIN
1173
		--	IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
1174
		--	BEGIN
1175
		--		ROLLBACK TRANSACTION
1176
		--		SELECT '-1' as Result, '' REQ_PAY_ID, '' AS REQ_PAY_CODE, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
1177
		--		RETURN '-1'
1178
		--	END
1179
		--END
1180
		
1181
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1182
		--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
1183
		--BEGIN
1184
		--	ROLLBACK TRANSACTION
1185
		--	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
1186
		--	RETURN '-1'
1187
		--END
1188
		--DECLARE @ROLE_KI_NHAY VARCHAR(50)
1189
		IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID =  @p_REF_ID) AND @p_REQ_TYPE='I')
1190
		BEGIN
1191
				ROLLBACK TRANSACTION
1192
				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
1193
				RETURN '-1'
1194
		END
1195
		SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1196
		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'))
1197
		BEGIN
1198
		PRINT @ROLE_KI_NHAY
1199
		END
1200
		ELSE
1201
		BEGIN
1202
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1203
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
1204
		BEGIN
1205
				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))
1206
		END
1207
		END
1208
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1209
		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')
1210
		BEGIN
1211
			ROLLBACK TRANSACTION
1212
			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
1213
			RETURN '-1'
1214
		END
1215
		EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_PAMENT', @p_REQ_PAY_ID out
1216
		IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT
1217
		INSERT INTO [dbo].[TR_REQ_ADVANCE_PAYMENT]
1218
           ([REQ_PAY_ID]
1219
           ,[REQ_PAY_CODE]
1220
           ,[BRANCH_ID],[REQ_DT],
1221
           [DEP_ID]
1222
           ,[REQ_REASON]
1223
           ,[REQ_TYPE],REQ_ENTRIES,
1224
            [REQ_DESCRIPTION]
1225
           ,REF_ID,
1226
			RECEIVER_PO, RECEIVER_DEBIT
1227
           ,[REQ_PAY_TYPE]
1228
           ,[REQ_TYPE_CURRENCY]
1229
           ,[REQ_AMT]
1230
           ,[REQ_TEMP_AMT]
1231
           ,[MAKER_ID]
1232
           ,[CREATE_DT]
1233
           ,[EDITOR_ID]
1234
           ,[AUTH_STATUS]
1235
           ,[CHECKER_ID]
1236
           ,[APPROVE_DT]
1237
           ,[CREATE_DT_KT]
1238
           ,[MAKER_ID_KT]
1239
           ,[AUTH_STATUS_KT]
1240
           ,[CHECKER_ID_KT]
1241
		   ,[APPROVE_DT_KT]
1242
           ,[CONFIRM_NOTES]
1243
           ,[BRANCH_CREATE]
1244
           ,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS,PAY_PHASE,DVDM_ID,RATE,RECIVER_MONEY,IS_PERIOD)
1245
			VALUES
1246
           (@p_REQ_PAY_ID,
1247
			@p_REQ_PAY_CODE,
1248
			@p_BRANCH_ID,CONVERT(DATE,GETDATE(),103),
1249
			@p_DEP_ID,
1250
			@p_REQ_REASON,
1251
			@p_REQ_TYPE,
1252
			@P_REQ_ENTRIES,
1253
			@p_REQ_DESCRIPTION,
1254
			@p_REF_ID,
1255
			@p_RECEIVER_PO,
1256
			@p_RECEIVER_DEBIT,
1257
			@p_REQ_PAY_TYPE,
1258
			@p_REQ_TYPE_CURRENCY,
1259
			@p_REQ_AMT,
1260
			@p_REQ_TEMP_AMT,
1261
			@p_MAKER_ID,
1262
			GETDATE(),
1263
			@p_EDITOR_ID,
1264
			'E',
1265
			NULL,
1266
			NULL,
1267
			NULL,
1268
			NULL,
1269
			NULL,
1270
			NULL,
1271
			NULL,
1272
			NULL,
1273
			@p_BRANCH_CREATE,
1274
			@p_NOTES,'1',
1275
			@p_TRANSFER_MAKER,
1276
			NULL,
1277
			@p_TRASFER_USER_RECIVE,
1278
			@p_PROCESS,@p_PAY_PHASE,@p_DVDM_ID,@p_RATE,@p_RECIVER_MONEY,@p_IS_PERIOD)
1279
			IF @@Error <> 0 GOTO ABORT
1280
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
1281
			DECLARE @hdoc INT
1282
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
1283
			
1284
			-- KIEM TRA NEU TAM UNG THANH TOAN
1285
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
1286
			BEGIN
1287
				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),
1288
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
1289
				@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), @EMP_ID VARCHAR(15),
1290
				@AMT_PAY_REAL DECIMAL(18,2), @IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15)
1291
				DECLARE XmlDataPO CURSOR FOR
1292
				SELECT *
1293
				FROM
1294
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
1295
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
1296
				OPEN XmlDataPO;
1297
				DECLARE @INDEX_PO INT =0
1298
				SET @INDEX_PO = 0
1299
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1300
				WHILE @@fetch_status=0 
1301
				BEGIN
1302
					SET @INDEX_PO = @INDEX_PO +1
1303
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1304
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID 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) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
1305
					--BEGIN
1306
					--	ROLLBACK TRANSACTION
1307
					--	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ố '+(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
1308
					--	RETURN '-1'
1309
					--END
1310
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1311
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1312
					--BEGIN
1313
					--	ROLLBACK TRANSACTION
1314
					--	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ố '+(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
1315
					--	RETURN '-1'
1316
					--END
1317
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1318
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1319
					IF(@p_TYPE_FUNCTION ='SEND')
1320
					BEGIN
1321
							
1322
				
1323
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
1324
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1325
					BEGIN
1326
						ROLLBACK TRANSACTION
1327
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1328
						(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
1329
						RETURN '-1'
1330
					END
1331
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1332
					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))
1333
					BEGIN
1334
						ROLLBACK TRANSACTION
1335
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1336
						(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
1337
						RETURN '-1'
1338
					END
1339
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1340
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
1341
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1342
					BEGIN
1343
						ROLLBACK TRANSACTION
1344
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1345
						(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
1346
						RETURN '-1'
1347
					END
1348
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1349
					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))
1350
					BEGIN
1351
						ROLLBACK TRANSACTION
1352
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1353
						(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
1354
						RETURN '-1'
1355
					END
1356
					END
1357
					DECLARE @REQ_PAYDTID VARCHAR(15);
1358
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
1359
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
1360
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
1361
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
1362
				IF @@error<>0 GOTO ABORT;
1363
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1364
				END
1365
				CLOSE XmlDataPO;
1366
				DEALLOCATE XmlDataPO;
1367
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
1368
				DECLARE XmlDataSchedule CURSOR FOR
1369
				SELECT *
1370
				FROM
1371
				OPENXML(@hdoc, 'Root/XmlDataSchedule',2)
1372
				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,0),
1373
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
1374
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
1375
				OPEN XmlDataSchedule
1376
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
1377
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
1378
				WHILE @@fetch_status=0 
1379
				BEGIN
1380
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
1381
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
1382
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
1383
					INSERT INTO TR_REQ_PAY_SCHEDULE(
1384
					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,
1385
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE,AMT_PAY_REAL)
1386
					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,
1387
					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)
1388
				--- END KHAI BAO CURSOR
1389
				IF @@error<>0 GOTO ABORT;
1390
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
1391
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
1392
				END
1393
				CLOSE XmlDataSchedule;
1394
				DEALLOCATE XmlDataSchedule;
1395
			END
1396
		--- END TẠM ỨNG THANH TOÁN
1397
		--- TẠM ỨNG HĐ ĐỊNH KỲ
1398
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
1399
		BEGIN
1400
				
1401
				DECLARE XmlDataPO CURSOR FOR
1402
				SELECT *
1403
				FROM
1404
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
1405
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
1406
				OPEN XmlDataPO;
1407
				SET @INDEX_PO = 0
1408
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1409
				WHILE @@fetch_status=0 
1410
				BEGIN
1411
					SET @INDEX_PO = @INDEX_PO +1
1412
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
1413
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
1414
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
1415
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
1416
					(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
1417
				IF @@error<>0 GOTO ABORT;
1418
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1419
				END
1420
				CLOSE XmlDataPO;
1421
				DEALLOCATE XmlDataPO;
1422
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
1423
			----------------------------
1424
			--INSERT FROM PERIOD	
1425
				DECLARE XmlDataPeriod CURSOR FOR
1426
				SELECT *
1427
				FROM
1428
				OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)
1429
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
1430
				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))
1431
				OPEN XmlDataPeriod;
1432
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
1433
				@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@PAY_PHASE NVARCHAR(250),@REASON_TTDK NVARCHAR(2000)
1434
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
1435
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
1436
				WHILE @@fetch_status=0 
1437
				BEGIN
1438
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1439
					IF(@p_TYPE_FUNCTION ='SEND')
1440
					BEGIN
1441
					
1442
						IF(EXISTS(SELECT CONTRACT_ID 
1443
						FROM TR_CONTRACT 
1444
						WHERE CONTRACT_ID = @REF_ID
1445
						AND IS_CLOSED='Y' ))
1446
						BEGIN
1447
							ROLLBACK TRANSACTION
1448
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
1449
							RETURN '-1'
1450
						END
1451

    
1452
					
1453
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0  )
1454
					BEGIN
1455
						ROLLBACK TRANSACTION
1456
						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
1457
						RETURN '-1'
1458
					END
1459
					END
1460
					DECLARE @PERIOD_ID VARCHAR(15);
1461
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
1462
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
1463
					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, TO_DATE,AD_PAY_ID,PROCESS,PAY_PHASE,REASON)
1464
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
1465
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@p_REQ_PAY_ID,'0',@PAY_PHASE,@REASON_TTDK)
1466
			IF @@error<>0 GOTO ABORT;
1467
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
1468
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
1469
			END
1470
			CLOSE XmlDataPeriod;
1471
			DEALLOCATE XmlDataPeriod;
1472
			-- VALIDATE SO TIEN
1473
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
1474
			--BEGIN
1475
			--	ROLLBACK TRANSACTION
1476
			--	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
1477
			--	RETURN '-1'
1478
			--END
1479
			----
1480
		END
1481
		---- END TẠM ỨNG HỢP ĐỒNG ĐỊNH KÌ
1482
		--- INSERT PHƯƠNG THỨC THANH TOÁN
1483
		----MethodCursor
1484
			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),
1485
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(200), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CHECK_IN VARCHAR(15)
1486
			DECLARE XmlDataMethod CURSOR FOR
1487
			SELECT *
1488
			FROM
1489
			OPENXML(@hdoc, 'Root/XmlDataMethod',2)
1490
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
1491
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), 
1492
			ACC_NAME NVARCHAR(200), ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
1493
			OPEN XmlDataMethod
1494
			FETCH NEXT FROM XmlDataMethod 
1495
			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
1496
			WHILE @@fetch_status=0 
1497
			BEGIN
1498
				IF(@REQ_PAY_TYPE <>'1')
1499
				BEGIN
1500
					SET @ISSUED_DT = NULL
1501
				END
1502
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
1503
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
1504
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
1505
				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,
1506
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
1507
				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,'',
1508
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
1509
			IF @@error<>0 GOTO ABORT;
1510
			FETCH NEXT FROM XmlDataMethod 
1511
			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
1512
			END
1513
			CLOSE XmlDataMethod;
1514
			DEALLOCATE XmlDataMethod
1515
		----END INSERT PHƯƠNG THỨC THANH TOÁN
1516
		----INSERT VAO BANG DS KHACH HANG
1517
			DECLARE XmlDataCus CURSOR FOR
1518
			SELECT *
1519
			FROM
1520
			OPENXML(@hdoc, '/Root/XmlDataCus', 2)
1521
			WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
1522
			OPEN XmlDataCus;
1523
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1524
				WHILE @@fetch_status=0 
1525
				BEGIN		
1526
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
1527
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
1528
				--- END KHAI BAO CURSOR
1529
				IF @@error<>0 GOTO ABORT;
1530
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1531
				END
1532
				CLOSE XmlDataCus;
1533
				DEALLOCATE XmlDataCus;
1534
		----END
1535
			-- HANG MUC CHI PHI VA NGAN SACH
1536
			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)
1537
			DECLARE XmlDataGood CURSOR FOR
1538
			SELECT *
1539
			FROM
1540
			OPENXML(@hdoc, 'Root/XmlDataGood',2) 
1541
			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))
1542
			OPEN XmlDataGood
1543
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
1544
			WHILE @@fetch_status=0 BEGIN
1545
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1546
				SET @INDEX_NS = @INDEX_NS +1
1547
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1548
				--IF(@p_TYPE_FUNCTION ='SEND')
1549
				--BEGIN
1550
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
1551
				--BEGIN
1552
				--		ROLLBACK TRANSACTION
1553
				--		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
1554
				--		RETURN '-1'
1555
				--END
1556
				--END
1557
				IF(@p_TYPE_FUNCTION ='SEND')
1558
				BEGIN
1559
				IF(ISNULL(@AMT_EXE,0) =0)
1560
				BEGIN
1561
					ROLLBACK TRANSACTION
1562
						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ế phải lớn hơn không.' ErrorDesc
1563
						RETURN '-1'
1564
				END
1565
				IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
1566
				BEGIN
1567
						ROLLBACK TRANSACTION
1568
						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
1569
						RETURN '-1'
1570
				END		
1571
			END
1572
				DECLARE @p_BUDGET_ID VARCHAR(15);
1573
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
1574
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
1575
				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) 
1576
				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)
1577
			IF @@error<>0 GOTO ABORT;
1578
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
1579
			END;
1580
		CLOSE XmlDataGood;
1581
		DEALLOCATE XmlDataGood;
1582
		--- END INSERT NGAN SACH
1583
		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)
1584
		DECLARE XmlAttach CURSOR FOR
1585
		SELECT *
1586
		FROM
1587
		OPENXML(@hdoc, 'Root/XmlAttach',2) 
1588
		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))
1589
		OPEN XmlAttach
1590
		--INSERT CHUNG TU DINH KEM
1591
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
1592
				WHILE @@fetch_status=0 
1593
				BEGIN
1594
					IF (@REF_DT='')
1595
					BEGIN
1596
						SET @REF_DT = NULL
1597
					END
1598
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
1599
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
1600
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
1601
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
1602
				IF @@error<>0 GOTO ABORT;
1603
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
1604
				END
1605
				CLOSE XmlAttach;
1606
				DEALLOCATE XmlAttach;
1607
		----END
1608
		--- BAT DAU VALIDATE
1609
		IF(@p_TYPE_FUNCTION ='SEND')
1610
		BEGIN
1611
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
1612
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1613
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
1614
			BEGIN
1615
				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)
1616
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
1617
				BEGIN
1618
					ROLLBACK TRANSACTION
1619
					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
1620
					RETURN '-1'
1621
				END
1622
			END
1623
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1624
			BEGIN
1625
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1626
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
1627
				BEGIN
1628
					ROLLBACK TRANSACTION
1629
					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
1630
					RETURN '-1'
1631
				END
1632
			END
1633
			ELSE
1634
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
1635
			BEGIN
1636
				ROLLBACK TRANSACTION
1637
				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
1638
				RETURN '-1'
1639
			END
1640
			
1641
		END
1642
		----END
1643
		--- INSERT SẴN VÀO BẢNG TR_REQUEST_PROCESS
1644
			IF(@p_REQ_TYPE ='I')
1645
			BEGIN
1646
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))
1647
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
1648
				BEGIN
1649
					--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'
1650
					IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06908%' OR DEP_CODE ='0690605' OR DEP_CODE ='0690405') AND DEP_ID =@p_DEP_ID)
1651
					BEGIN
1652
						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'
1653
					END
1654
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
1655
					BEGIN
1656
						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'
1657
					END
1658
					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)
1659
					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) 
1660
					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))
1661
					BEGIN
1662
						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')
1663
					END
1664
					ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
1665
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID) 
1666
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
1667
					BEGIN
1668
						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'
1669
					END
1670
					ELSE
1671
					BEGIN
1672
						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'
1673
					END
1674
				END
1675
				ELSE
1676
				BEGIN
1677
					IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
1678
					BEGIN
1679
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
1680
						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
1681
						--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'
1682
					END
1683
					ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
1684
					BEGIN
1685
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY'
1686
						--AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
1687
						AND BRANCH_ID = @p_BRANCH_CREATE
1688
						--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'
1689
					END
1690
				END
1691
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
1692
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
1693
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
1694
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A
1695
				OPEN CUR_PR
1696
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1697
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
1698
				BEGIN								
1699
					SET @INDEX= @INDEX+1
1700
					IF @INDEX = @SL_ROLE
1701
						SET @ISLEAF = 'Y'
1702
					ELSE
1703
						SET @ISLEAF = 'N'
1704
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
1705

    
1706
					IF(@INDEX=1 )
1707
					BEGIN		
1708
						SET @PARENT_ID = NULL
1709
						SET @STATUS = 'C'							
1710
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
1711
					END				
1712
					ELSE 
1713
					BEGIN
1714
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
1715
						SET @STATUS = 'U'
1716
					END
1717
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
1718
						BEGIN
1719
							INSERT INTO dbo.PL_REQUEST_PROCESS
1720
							(
1721
								REQ_ID,
1722
								PROCESS_ID,
1723
								STATUS,
1724
								ROLE_USER,
1725
								BRANCH_ID,
1726
								CHECKER_ID,
1727
								APPROVE_DT,
1728
								PARENT_PROCESS_ID,
1729
								IS_LEAF, COST_ID, DVDM_ID, NOTES
1730
							)
1731
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
1732
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
1733
							BREAK;
1734
						END
1735
						ELSE
1736
							INSERT INTO PL_REQUEST_PROCESS (
1737
								REQ_ID,
1738
								PROCESS_ID,
1739
								STATUS,
1740
								ROLE_USER,
1741
								BRANCH_ID,
1742
								CHECKER_ID,
1743
								APPROVE_DT,
1744
								PARENT_PROCESS_ID,
1745
								IS_LEAF, COST_ID, DVDM_ID, NOTES
1746
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
1747
					--END
1748
					
1749
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1750
				END
1751
				CLOSE CUR_PR
1752
				DEALLOCATE CUR_PR
1753
			END
1754
			--- CAP NHAT THANG CUOI CUNG LA Y
1755
			--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)
1756
		COMMIT TRANSACTION
1757
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
1758
		BEGIN
1759
				--ROLLBACK TRANSACTION
1760
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1761
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1762
				--INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1763
				--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')
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
				IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
1767
				BEGIN
1768
				DECLARE @BRANCH_TYPE_CR VARCHAR(15)
1769
				SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
1770
				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')
1771
				BEGIN
1772
					DECLARE @USER_TP VARCHAR(15) =''
1773
					--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID 
1774
					--		AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
1775
					IF(@USER_TP IS NULL OR @USER_TP ='')
1776
					BEGIN
1777
						SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID 
1778
							AND (RoleName IN ('GDDV','TPTC','TC','KTT')))
1779
					END
1780
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1781
				END
1782
				--ELSE 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 ='PGD' AND @p_REQ_TYPE ='I')
1783
				--BEGIN
1784
				--	DECLARE @USER_TPGD VARCHAR(15) =''
1785
				--	SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
1786
				--	--SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD') OR
1787
				--	--RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='TPGD')))
1788
				--	IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
1789
				--	BEGIN
1790
				--		SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE 
1791
				--			AND RoleName ='TPGD')
1792
				--	END
1793
				--	UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1794
				--END
1795
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
1796
				BEGIN
1797
					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
1798
					RETURN '-1'
1799
				END
1800
				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')
1801
				BEGIN
1802
					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
1803
					RETURN '-1'
1804
				END
1805
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1806
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1807
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1808
				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')
1809
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' OR TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
1810
				BEGIN
1811
					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
1812
					RETURN '4'
1813
				END
1814
				ELSE
1815
				BEGIN
1816
					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
1817
					RETURN '4'
1818
				END
1819
			END
1820
		END
1821
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, '' ErrorDesc
1822
		RETURN '0'
1823
ABORT:
1824
BEGIN
1825
		ROLLBACK TRANSACTION
1826
		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
1827
		RETURN '-1'
1828
End
1829
¿
1830

    
1831
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]
1832
@p_REQ_PAY_ID	varchar(15)= NULL,
1833
@p_REQ_PAY_CODE	varchar(50)	= NULL,
1834
@p_REQ_DT VARCHAR(20)= NULL,
1835
@p_BRANCH_ID	varchar(15)	= NULL,
1836
@p_DEP_ID	varchar(15)	= NULL,
1837
@p_REQ_REASON	nvarchar(MAX)	= NULL,
1838
@p_REQ_TYPE	varchar(15)	= NULL,
1839
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
1840
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
1841
@p_REF_ID	varchar(15)	= NULL,
1842
@p_RECEIVER_PO	nvarchar(250)	= NULL,
1843
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
1844
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
1845
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
1846
@p_REQ_AMT	decimal(18, 0)	= NULL,
1847
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
1848
@p_MAKER_ID	varchar(15)	= NULL,
1849
@p_CREATE_DT	varchar(25)	= NULL,
1850
@p_EDITOR_ID	varchar(15)	= NULL,
1851
@p_AUTH_STATUS	varchar(1)	= NULL,
1852
@p_CHECKER_ID	varchar(15)	= NULL,
1853
@p_APPROVE_DT	varchar(25)	= NULL,
1854
@p_CREATE_DT_KT	varchar(25)	= NULL,
1855
@p_MAKER_ID_KT	varchar(15)	= NULL,
1856
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
1857
@p_CHECKER_ID_KT	varchar(1)	= NULL,
1858
@p_APPROVE_DT_KT  varchar(25)= null,
1859
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
1860
@p_BRANCH_CREATE	varchar(15)	= NULL,
1861
@p_NOTES	varchar(15)	= NULL,
1862
@p_RECORD_STATUS	varchar(1)	= NULL,
1863
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
1864
@p_TRANSFER_DT	varchar(25)	= NULL,
1865
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
1866
@p_PROCESS	varchar(15)	= NULL,
1867
@p_PAY_PHASE VARCHAR(15)= NULL,
1868
@p_DVDM_ID VARCHAR(15)= NULL,
1869
@p_RATE DECIMAL(18,0) =0,
1870
@p_RECIVER_MONEY VARCHAR(15)= NULL,
1871
@p_XMP_TEMP XML = NULL,
1872
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
1873
@p_IS_PERIOD VARCHAR(5) = NULL
1874
AS
1875
--Validation is here
1876
/*
1877
DECLARE @ERRORSYS NVARCHAR(15) = '' 
1878
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
1879
	 SET @ERRORSYS = ''
1880
IF @ERRORSYS <> '' 
1881
BEGIN
1882
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
1883
	RETURN '0'
1884
END 
1885
*/
1886
	--Luanlt-2019/10/15 Disable Validation
1887
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
1888
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
1889
	--BEGIN
1890
	--	SET @ERRORSYS = 'ASSC-00005'
1891
	--	SELECT ErrorCode Result, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
1892
	--	RETURN '-1'
1893
	--END
1894

    
1895
	DECLARE @BRANCH_TYPE_CR VARCHAR(15), @ROLE_KI_NHAY VARCHAR(50)
1896
	--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1897
	--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
1898
	--BEGIN
1899
	--	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
1900
	--	RETURN '-1'
1901
	--END
1902
		SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1903
		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'))
1904
		BEGIN
1905
		PRINT @ROLE_KI_NHAY
1906
		END
1907
		ELSE
1908
		BEGIN
1909
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1910
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
1911
		BEGIN
1912
				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))
1913
		END
1914
		END
1915
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
1916
		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')
1917
		BEGIN
1918
			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
1919
			RETURN '-1'
1920
		END
1921
	SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
1922
	DECLARE @ACC_NUM VARCHAR(15)
1923
	SET @ACC_NUM = (SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)
1924
	IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
1925
	BEGIN
1926
		SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được để trống' ErrorDesc
1927
		RETURN '-1'
1928
	END
1929
	IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
1930
	BEGIN
1931
		SELECT '-1' Result, '' REQ_PAY_ID, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
1932
		RETURN '-1'
1933
	END
1934
	IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
1935
	BEGIN
1936
		SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
1937
		RETURN '-1'
1938
	END
1939
	--IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
1940
	--IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
1941
	--BEGIN
1942
	--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
1943
	--	RETURN '-1'
1944
	--END
1945
	--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
1946
	--	BEGIN
1947
	--		INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UNG DE HOAT DONG NGHIEP VU')
1948
	--	END
1949
	--ELSE
1950
	--	BEGIN
1951
	--		IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
1952
	--		BEGIN
1953
	--			--ROLLBACK TRANSACTION
1954
	--			SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
1955
	--			RETURN '-1'
1956
	--		END
1957
	--END
1958
	--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID = @p_REF_ID AND @p_REQ_TYPE='I'))
1959
	--BEGIN
1960

    
1961
	--			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
1962
	--			RETURN '-1'
1963
	--END
1964
	IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID =  @p_REF_ID) AND @p_REQ_TYPE='I')
1965
	BEGIN
1966
				ROLLBACK TRANSACTION
1967
				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
1968
				RETURN '-1'
1969
	END
1970
	IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
1971
	BEGIN
1972
				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
1973
				RETURN '-1'
1974
	END
1975
	-- 19-11-2019 LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU KHI UAT
1976
	-- NEU TAM UNG CHO NHA CUNG CAP THI DOT THANH TOAN KHONG DUOC PHEP NULL
1977
	-- SO TIEN THANH TOÁN PHAI LON HON KHONG
1978
		IF(@p_REQ_AMT <=0)
1979
		BEGIN	
1980
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
1981
			RETURN '-1'
1982
		END
1983
	 -- END VALIDATE TRONG QUA TRINH TEST UAT
1984
		BEGIN TRANSACTION
1985
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
1986
		--BEGIN
1987
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
1988
		--END
1989
		UPDATE TR_REQ_ADVANCE_PAYMENT SET 
1990
		REF_ID = @p_REF_ID,
1991
		DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,
1992
		REQ_AMT = @p_REQ_AMT,
1993
		NOTES= @p_NOTES,
1994
		REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO =@p_RECEIVER_PO, RECEIVER_DEBIT= @p_RECEIVER_DEBIT,
1995
		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,
1996
		AUTH_STATUS='E', DVDM_ID=@p_DVDM_ID, RATE =@p_RATE,REQ_TYPE_CURRENCY =@p_REQ_TYPE_CURRENCY, RECIVER_MONEY= @p_RECIVER_MONEY, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE,IS_PERIOD =@p_IS_PERIOD
1997
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1998
		IF @@Error <> 0 GOTO ABORT
1999
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
2000
			DECLARE @hdoc INT
2001
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
2002
			
2003
			-- KIEM TRA NEU TAM UNG THANH TOAN
2004
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
2005
			BEGIN
2006
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID=@p_REQ_PAY_ID
2007
				DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID=@p_REQ_PAY_ID
2008
				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),
2009
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
2010
				@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),
2011
				@EMP_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2),@CHECK_IN VARCHAR(15),@IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15)
2012
				DECLARE XmlDataPO CURSOR FOR
2013
				SELECT *
2014
				FROM
2015
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
2016
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
2017
				OPEN XmlDataPO;
2018
				DECLARE @INDEX_PO INT =0
2019
				SET @INDEX_PO = 0
2020
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
2021
				WHILE @@fetch_status=0 
2022
				BEGIN
2023
					SET @INDEX_PO = @INDEX_PO +1
2024
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
2025
					IF(@p_TYPE_FUNCTION ='SEND')
2026
					BEGIN
2027
					
2028
					
2029
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2030
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
2031
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
2032
					BEGIN
2033
						ROLLBACK TRANSACTION
2034
						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ố '+
2035
						(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
2036
						RETURN '-1'
2037
					END
2038
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2039
					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))
2040
					BEGIN
2041
						ROLLBACK TRANSACTION
2042
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
2043
						(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
2044
						RETURN '-1'
2045
					END
2046
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2047
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
2048
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
2049
					BEGIN
2050
						ROLLBACK TRANSACTION
2051
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2052
						(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
2053
						RETURN '-1'
2054
					END
2055
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
2056
					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))
2057
					BEGIN
2058
						ROLLBACK TRANSACTION
2059
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2060
						(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
2061
						RETURN '-1'
2062
					END
2063
					--- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA
2064
					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' )))
2065
					BEGIN
2066
						ROLLBACK TRANSACTION
2067
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
2068
						(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
2069
						RETURN '-1'
2070
					END
2071
					END
2072
					DECLARE @REQ_PAYDTID VARCHAR(15);
2073
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
2074
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
2075
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
2076
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
2077
				IF @@error<>0 GOTO ABORT;
2078
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
2079
				END
2080
				CLOSE XmlDataPO;
2081
				DEALLOCATE XmlDataPO;
2082
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
2083
				DECLARE XmlDataSchedule CURSOR FOR
2084
				SELECT *
2085
				FROM
2086
				OPENXML(@hdoc, 'Root/XmlDataSchedule',2)
2087
				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),
2088
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
2089
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
2090
				OPEN XmlDataSchedule
2091
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
2092
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
2093
				WHILE @@fetch_status=0 
2094
				BEGIN
2095
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
2096
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
2097
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
2098
					INSERT INTO TR_REQ_PAY_SCHEDULE(
2099
					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,
2100
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
2101
					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,
2102
					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)
2103
				--- END KHAI BAO CURSOR
2104
				IF @@error<>0 GOTO ABORT;
2105
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
2106
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
2107
				END
2108
				CLOSE XmlDataSchedule;
2109
				DEALLOCATE XmlDataSchedule;
2110
			END
2111
		--- END TẠM ỨNG THANH TOÁN
2112
		---- TẠM ỨNG HĐ ĐỊNH KÌ
2113
			IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
2114
			BEGIN
2115
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2116
				DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2117
				DECLARE XmlDataPO CURSOR FOR
2118
				SELECT *
2119
				FROM
2120
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
2121
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
2122
				OPEN XmlDataPO;
2123
				SET @INDEX_PO = 0
2124
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
2125
				WHILE @@fetch_status=0 
2126
				BEGIN
2127
					SET @INDEX_PO = @INDEX_PO +1
2128
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
2129
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
2130
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
2131
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
2132
					(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
2133
				IF @@error<>0 GOTO ABORT;
2134
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
2135
				END
2136
				CLOSE XmlDataPO;
2137
				DEALLOCATE XmlDataPO;
2138
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
2139
			----------------------------
2140
			--INSERT FROM PERIOD	
2141
				DECLARE XmlDataPeriod CURSOR FOR
2142
				SELECT *
2143
				FROM
2144
				OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)
2145
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
2146
				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) )
2147
				OPEN XmlDataPeriod;
2148
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
2149
				@OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2),@FROM_DATE VARCHAR(20),@TO_DATE VARCHAR(20),@PAY_PHASE NVARCHAR(250), @REASON_TTDK NVARCHAR(2000)
2150
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
2151
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
2152
				WHILE @@fetch_status=0 
2153
				BEGIN
2154
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
2155
					IF(@p_TYPE_FUNCTION ='SEND')
2156
					BEGIN
2157
					
2158
					--IF(EXISTS(SELECT CONTRACT_ID 
2159
					--FROM TR_CONTRACT 
2160
					--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 <>''))
2161
					
2162
					----AND IS_CLOSED='Y' ))
2163
					--BEGIN
2164
					--	ROLLBACK TRANSACTION
2165
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
2166
					--	RETURN '-1'
2167
					--END
2168

    
2169
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0)
2170
					BEGIN
2171
						ROLLBACK TRANSACTION
2172
						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
2173
						RETURN '-1'
2174
					END
2175
					END
2176
					DECLARE @PERIOD_ID VARCHAR(15);
2177
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
2178
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
2179
					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, TO_DATE,AD_PAY_ID,PROCESS,PAY_PHASE, REASON)
2180
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
2181
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U',@CURRENCY, @RATE,CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@p_REQ_PAY_ID,'0',@PAY_PHASE,@REASON_TTDK)
2182
			IF @@error<>0 GOTO ABORT;
2183
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
2184
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
2185
			END
2186
			CLOSE XmlDataPeriod;
2187
			DEALLOCATE XmlDataPeriod;
2188
			-- VALIDATE SO TIEN
2189
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
2190
			--BEGIN
2191
			--	ROLLBACK TRANSACTION
2192
			--	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
2193
			--	RETURN '-1'
2194
			--END
2195
			----
2196
			END
2197
		---- END TẠM ỨNG HĐ ĐỊNH KÌ
2198
		--- INSERT PHƯƠNG THỨC THANH TOÁN
2199
		----MethodCursor
2200
			DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2201
			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),
2202
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(250), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20)
2203
			DECLARE XmlDataMethod CURSOR FOR
2204
			SELECT *
2205
			FROM
2206
			OPENXML(@hdoc, 'Root/XmlDataMethod',2)
2207
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
2208
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), ACC_NAME NVARCHAR(250), 
2209
			ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
2210
			OPEN XmlDataMethod
2211
			FETCH NEXT FROM XmlDataMethod 
2212
			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 
2213
			WHILE @@fetch_status=0 
2214
			BEGIN
2215
				IF(@REQ_PAY_TYPE<>'1')
2216
				BEGIN
2217
					SET @ISSUED_DT = NULL
2218
				END
2219
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
2220
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
2221
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
2222
				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,
2223
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
2224
				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,'',
2225
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
2226
			IF @@error<>0 GOTO ABORT;
2227
			FETCH NEXT FROM XmlDataMethod 
2228
			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
2229
			END
2230
			CLOSE XmlDataMethod;
2231
			DEALLOCATE XmlDataMethod
2232
		----END INSERT PHƯƠNG THỨC THANH TOÁN
2233
		----INSERT VAO BANG DS KHACH HANG
2234
			DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
2235
			DECLARE XmlDataCus CURSOR FOR
2236
			SELECT *
2237
			FROM
2238
			OPENXML(@hdoc, '/Root/XmlDataCus', 2)
2239
			WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO decimal(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
2240
			OPEN XmlDataCus;
2241
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
2242
				WHILE @@fetch_status=0 
2243
				BEGIN		
2244
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
2245
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
2246
				--- END KHAI BAO CURSOR
2247
				IF @@error<>0 GOTO ABORT;
2248
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
2249
				END
2250
				CLOSE XmlDataCus;
2251
				DEALLOCATE XmlDataCus;
2252
		----END
2253
		-- HANG MUC CHI PHI VA NGAN SACH
2254
			DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2255
			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)
2256
			DECLARE XmlDataGood CURSOR FOR
2257
			SELECT *
2258
			FROM
2259
			OPENXML(@hdoc, 'Root/XmlDataGood',2) 
2260
			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))
2261
			OPEN XmlDataGood
2262
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
2263
			WHILE @@fetch_status=0 BEGIN
2264
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
2265
				SET @INDEX_NS = @INDEX_NS +1
2266
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
2267
				--IF(@p_TYPE_FUNCTION ='SEND')
2268
				--BEGIN
2269
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
2270
				--BEGIN
2271
				--		ROLLBACK TRANSACTION
2272
				--		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
2273
				--		RETURN '-1'
2274
				--END	
2275
				--END
2276
				IF(@p_TYPE_FUNCTION ='SEND')
2277
				BEGIN
2278
				IF(ISNULL(@AMT_EXE,0) =0)
2279
				BEGIN
2280
					ROLLBACK TRANSACTION
2281
						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ế phải lớn hơn không.' ErrorDesc
2282
						RETURN '-1'
2283
				END
2284
				--IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
2285
				--BEGIN
2286
				--		ROLLBACK TRANSACTION
2287
				--		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
2288
				--		RETURN '-1'
2289
				--END		
2290
			END
2291
				DECLARE @p_BUDGET_ID VARCHAR(15);
2292
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
2293
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
2294
				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) 
2295
				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)
2296
			IF @@error<>0 GOTO ABORT;
2297
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
2298
			END;
2299
		CLOSE XmlDataGood;
2300
		DEALLOCATE XmlDataGood;
2301
		--- END INSERT NGAN SACH
2302
		DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2303
		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)
2304
		DECLARE XmlAttach CURSOR FOR
2305
		SELECT *
2306
		FROM
2307
		OPENXML(@hdoc, 'Root/XmlAttach',2) 
2308
		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))
2309
		OPEN XmlAttach
2310
		--INSERT CHUNG TU DINH KEM
2311
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
2312
				WHILE @@fetch_status=0 
2313
				BEGIN
2314
					IF (@REF_DT='')
2315
					BEGIN
2316
						SET @REF_DT = NULL
2317
					END
2318
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
2319
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
2320
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
2321
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
2322
				IF @@error<>0 GOTO ABORT;
2323
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
2324
				END
2325
				CLOSE XmlAttach;
2326
				DEALLOCATE XmlAttach;
2327
		----END
2328
		--- BAT DAU VALIDATE
2329
		IF(@p_TYPE_FUNCTION ='SEND')
2330
		BEGIN
2331
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
2332
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2333
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
2334
			BEGIN
2335
				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)
2336
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
2337
				BEGIN
2338
					ROLLBACK TRANSACTION
2339
					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
2340
					RETURN '-1'
2341
				END
2342
			END
2343
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
2344
			BEGIN
2345
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2346
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
2347
				BEGIN
2348
					ROLLBACK TRANSACTION
2349
					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
2350
					RETURN '-1'
2351
				END
2352
			END
2353
			ELSE
2354
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
2355
			BEGIN
2356
				ROLLBACK TRANSACTION
2357
				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
2358
				RETURN '-1'
2359
			END
2360
			
2361
		END
2362
		----END
2363
		IF(@p_REQ_TYPE ='I')
2364
			BEGIN
2365
				DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID
2366
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT decimal(18,2))
2367
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
2368
				BEGIN
2369
					--DECLARE @DEP_CODE VARCHAR(15)
2370
					--SET @DEP_CODE =(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
2371
					IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06908%' OR DEP_CODE ='0690605' OR DEP_CODE ='0690405') AND DEP_ID =@p_DEP_ID)
2372
					BEGIN
2373
						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'
2374
					END
2375
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
2376
					BEGIN
2377
						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'
2378
					END
2379
					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)
2380
					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) 
2381
					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))
2382
					BEGIN
2383
						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')
2384
					END
2385
					ELSE IF (EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06907%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06909%' AND DEP_ID =@p_DEP_ID)
2386
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06911%' AND DEP_ID =@p_DEP_ID) OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06921%' AND DEP_ID =@p_DEP_ID) 
2387
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
2388
					BEGIN
2389
						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'
2390
					END
2391
					ELSE
2392
					BEGIN
2393
						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'
2394
					END
2395
				END
2396
				ELSE
2397
				BEGIN
2398
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
2399
					BEGIN
2400
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
2401
						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
2402
						--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'
2403
				END
2404
				ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
2405
					BEGIN
2406
						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
2407
						--BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
2408
						--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'
2409
				END
2410
				END
2411
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
2412
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
2413
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
2414
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A
2415
				OPEN CUR_PR
2416
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
2417
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
2418
				BEGIN								
2419
					SET @INDEX= @INDEX+1
2420
					IF @INDEX = @SL_ROLE
2421
						SET @ISLEAF = 'Y'
2422
					ELSE
2423
						SET @ISLEAF = 'N'
2424
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
2425

    
2426
					IF(@INDEX=1 )
2427
					BEGIN		
2428
						SET @PARENT_ID = NULL
2429
						SET @STATUS = 'C'							
2430
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
2431
					END				
2432
					ELSE 
2433
					BEGIN
2434
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
2435
						SET @STATUS = 'U'
2436
					END
2437
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
2438
						BEGIN
2439
							INSERT INTO dbo.PL_REQUEST_PROCESS
2440
							(
2441
								REQ_ID,
2442
								PROCESS_ID,
2443
								STATUS,
2444
								ROLE_USER,
2445
								BRANCH_ID,
2446
								CHECKER_ID,
2447
								APPROVE_DT,
2448
								PARENT_PROCESS_ID,
2449
								IS_LEAF, COST_ID, DVDM_ID, NOTES
2450
							)
2451
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
2452
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
2453
							BREAK;
2454
						END
2455
						ELSE
2456
							INSERT INTO PL_REQUEST_PROCESS (
2457
								REQ_ID,
2458
								PROCESS_ID,
2459
								STATUS,
2460
								ROLE_USER,
2461
								BRANCH_ID,
2462
								CHECKER_ID,
2463
								APPROVE_DT,
2464
								PARENT_PROCESS_ID,
2465
								IS_LEAF, COST_ID, DVDM_ID, NOTES
2466
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
2467
					--END
2468
					
2469
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
2470
				END
2471
				CLOSE CUR_PR
2472
				DEALLOCATE CUR_PR
2473
			END
2474
COMMIT TRANSACTION
2475
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
2476
		BEGIN
2477
				
2478
				--ROLLBACK TRANSACTION
2479
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
2480
				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')
2481
				BEGIN
2482
					DECLARE @USER_TP VARCHAR(15) =''
2483
					--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID 
2484
					--		AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
2485
					IF(@USER_TP IS NULL OR @USER_TP ='')
2486
					BEGIN
2487
						SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID 
2488
							AND (RoleName IN ('TBP','PP')))
2489
					END
2490
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2491
				END
2492
				--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 ='PGD' AND @p_REQ_TYPE ='I')
2493
				--BEGIN
2494
				--	DECLARE @USER_TPGD VARCHAR(15) =''
2495
				--	SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD')))
2496
				--	IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
2497
				--	BEGIN
2498
				--		SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE 
2499
				--			AND RoleName ='TPGD')
2500
				--	END
2501
				--	UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2502
				--END
2503
				DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0
2504
				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)
2505
				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)
2506
				IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
2507
				BEGIN
2508
					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
2509
					RETURN '-1'
2510
				END
2511
				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')
2512
				BEGIN
2513
					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
2514
					RETURN '-1'
2515
				END
2516
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
2517
				BEGIN
2518
					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
2519
					RETURN '-1'
2520
				END
2521
				--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')))
2522
				--BEGIN
2523
				--	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
2524
				--	RETURN '-1'
2525
				--END
2526
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U',CREATE_DT = GETDATE() WHERE REQ_PAY_ID =@p_REQ_PAY_ID
2527
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
2528
				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')
2529
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' OR TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
2530
				BEGIN
2531
					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
2532
					RETURN '4'
2533
				END
2534
				ELSE
2535
				BEGIN
2536
					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
2537
					RETURN '4'
2538
				END
2539
				--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
2540
				--RETURN '4'
2541
		END
2542
		
2543
	SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
2544
	RETURN '0'
2545
ABORT:
2546
BEGIN
2547
		ROLLBACK TRANSACTION
2548
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
2549
		RETURN '-1'
2550
End
2551
¿
2552

    
2553
ALTER PROCEDURE [dbo].[rpt_TR_ADVANCE_TEMP_PAYMENT_ByID]
2554
@p_REQ_PAY_ID	varchar(15)= NULL
2555
AS
2556
		-------
2557
		DECLARE @TITLE_APPROVE NVARCHAR(50) ='', @TITLE_APPROVE_KSV NVARCHAR(50) =''
2558
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='S'))
2559
		BEGIN
2560
			SET @TITLE_APPROVE =N'Đã từ chối '
2561
		END
2562
		ELSE
2563
		BEGIN
2564
			SET @TITLE_APPROVE =N'Đã chấp thuận '
2565
		END
2566
		----------------
2567
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='R'))
2568
		BEGIN
2569
			SET @TITLE_APPROVE_KSV =N'Đã từ chối '
2570
		END
2571
		ELSE
2572
		BEGIN
2573
			SET @TITLE_APPROVE_KSV =N'Đã chấp thuận '
2574
		END
2575
		----------------
2576
		DECLARE @TRUONG_DV NVARCHAR(50),@DVKD_APP_DT NVARCHAR(50), @SO_DU_TAM_UNG DECIMAL(18,2)
2577
		DECLARE @DATE_APPR DATETIME
2578
		SET @DATE_APPR =ISNULL((SELECT TOP 1 CONVERT(DATETIME,APPROVE_DT,103) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID),CONVERT(DATETIME,GETDATE(),103))
2579
		DECLARE @REQ_TYPE VARCHAR(15)
2580
		SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
2581
		-------------------------------------------
2582
		DECLARE @CONTENT NVARCHAR(MAX)='', @CONTENT_CK NVARCHAR(MAX)='', @REQ_PAY_TYPE VARCHAR(5), @ACCNO VARCHAR(50), @ACCNAME NVARCHAR(500), @BANK NVARCHAR(500),
2583
		@ISUED_DT DATE,@REASON NVARCHAR(MAX), @DESC NVARCHAR(MAX),@NDTM NVARCHAR(MAX) ='', @NDCK NVARCHAR(MAX) =''
2584
		DECLARE CURS CURSOR FOR SELECT A.REQ_PAY_TYPE, A.ACC_NO,A.ACC_NAME,A.ISSUED_BY,A.ISSUED_DT,A.REQ_PAY_REASON,A.REQ_PAY_ENTRIES FROM TR_REQ_PAY_METHOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
2585
		DECLARE @NOIDUNG NVARCHAR(MAX) =''
2586
		--- LAY NOI DUNG THANH TOAN NEU THANH TOAN CHO NHA CUNG CAP
2587
		DECLARE CURS_PO CURSOR FOR SELECT A.REQ_PAY_DESC,A.REQ_PAY_ENTRIES FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
2588
		DECLARE @NOIDUNG_PO NVARCHAR(MAX) =''
2589
		DECLARE @BRANCH_TYPE VARCHAR(15), @BRANCH_RQ VARCHAR(15),@TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0)
2590
		SET @BRANCH_RQ =(SELECT TOP 1 BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2591
		SET @BRANCH_TYPE  = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
2592
		IF(@BRANCH_TYPE ='HS'  AND @REQ_TYPE ='I')
2593
		BEGIN
2594
			SET @TRUONG_DV = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT top 1 CHECKER_ID FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='0' 
2595
			AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0')))
2596
			SET @DVKD_APP_DT =(SELECT  TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='0' 
2597
			AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0'))
2598
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
2599
			BEGIN
2600
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
2601
			END
2602
		END
2603
		ELSE IF (@BRANCH_TYPE = 'PGD'  AND @REQ_TYPE ='I')
2604
		BEGIN
2605
			SET @TRUONG_DV =(SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT TOP 1 CHECKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
2606
			--AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0')))
2607
			SET @DVKD_APP_DT =(SELECT  TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2608
			--AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0'))
2609
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
2610
			BEGIN
2611
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
2612
			END
2613
		END
2614
		ELSE
2615
		BEGIN
2616
			SET @TRUONG_DV = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT top 1 CHECKER_ID FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='1' 
2617
																					AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='1')))
2618
			--SET @DVKD_APP_DT =(SELECT TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='1')
2619
			SET @DVKD_APP_DT = (SELECT TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID )
2620
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
2621
			BEGIN
2622
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
2623
			END
2624
		END
2625
		DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
2626
			INSERT INTO @TMP_DVDM
2627
			SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
2628
			FROM PL_COSTCENTER A
2629
			LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
2630
			WHERE B.DEP_ID = (SELECT TOP 1 DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2631
			GROUP BY A.DVDM_ID
2632
		DECLARE @tmp_CN table(BRANCH_ID varchar(15))
2633
			IF((SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
2634
			BEGIN
2635
				INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_RQ)
2636
			END
2637
			ELSE IF((SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
2638
			BEGIN
2639
				DECLARE @FATHER_ID VARCHAR(15) = NULL
2640
				SET @FATHER_ID =(SELECT TOP 1 FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
2641
				INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@FATHER_ID)
2642
			END
2643
			SET @SO_DU_TAM_UNG = (SELECT AMT FROM TR_REQ_ADVANCE_LIMIT_LOG
2644
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ID
2645
			=(SELECT MAX(ID) FROM TR_REQ_ADVANCE_LIMIT_LOG WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
2646
		--IF(@BRANCH_TYPE='HS' AND @REQ_TYPE ='I')
2647
		--		BEGIN
2648
		--			SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
2649
		--			 DEP_ID IN
2650
		--			 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
2651
		--				LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
2652
		--				WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
2653
		--			 AND REQ_TYPE ='I' AND AUTH_STATUS ='A' AND (CONVERT(DATETIME,APPROVE_DT,103) <=@DATE_APPR OR APPROVE_DT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID),0)
2654
		--			SET @TOTAL_PAYBACK =
2655
		--			ISNULL(
2656
		--			(
2657
		--				SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
2658
		--				FROM TR_REQ_PAYMENT_DT B
2659
		--				INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
2660
		--				INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
2661
		--				WHERE A.DEP_ID IN 
2662
		--				(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
2663
		--				LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
2664
		--				WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
2665
		--				AND A.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I' AND (CONVERT(DATETIME,A.APPROVE_DT_KT,103) <=@DATE_APPR OR A.APPROVE_DT_KT IS NULL) AND B.PAY_ADV_ID <>@p_REQ_PAY_ID
2666
		--			),0)
2667
		--		END
2668
			
2669
		--		-- 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
2670
		--		ELSE IF(@BRANCH_TYPE <>'HS')
2671
		--		BEGIN
2672
		--			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)
2673
		--			 AND REQ_TYPE ='I' AND AUTH_STATUS='A' AND (CONVERT(DATETIME,APPROVE_DT,103) <=@DATE_APPR OR APPROVE_DT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)
2674
		--			SET @TOTAL_PAYBACK =
2675
		--			(
2676
		--				SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
2677
		--				FROM TR_REQ_PAYMENT_DT B
2678
		--				INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
2679
		--				INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
2680
		--				WHERE A.BRANCH_ID IN 
2681
		--				(SELECT BRANCH_ID FROM @tmp_CN)
2682
		--				AND A.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I' AND (CONVERT(DATETIME,A.APPROVE_DT_KT,103) <=@DATE_APPR OR A.APPROVE_DT_KT IS NULL) AND B.PAY_ADV_ID <>@p_REQ_PAY_ID
2683
		--			)
2684
		--		END
2685
		---
2686
        SELECT A.REQ_PAY_CODE, A.REQ_REASON,A.DEP_ID, N'Đã chấp thuận '+ISNULL(FORMAT(A.CREATE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') AS CREATE_DT, A.MAKER_ID_KT,A.CHECKER_ID,
2687
		CASE WHEN ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN N'Đã chấp thuận '+ ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS APPROVE_DT,A.CHECKER_ID_KT,MAKER_ID_KT,
2688
		CASE WHEN ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN @TITLE_APPROVE_KSV + ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS APPROVE_DT_KT , 
2689
		CASE WHEN  ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'')  <>'' THEN @TITLE_APPROVE +ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS CREATE_DT_KT,
2690
		B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, CASE WHEN A.REF_ID IS NOT NULL AND A.REF_ID <>'' THEN TL6.TLFullName ELSE TL.TLFullName END CREATE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
2691
		BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
2692
		--Luanlt--2019/10/15-Sửa AL,AL1
2693
		BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, 0 TOTAL_AMT_TEMP, 0 TOTAL_AMT_PAY_HIS,TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
2694
		DAY(A.CREATE_DT) D_, MONTH(A.CREATE_DT) M_, YEAR(A.CREATE_DT) Y_,
2695
		CASE
2696
		WHEN A.REQ_TYPE='I' THEN CAST(1 AS BIT)  
2697
		WHEN  A.REQ_TYPE <>'I'  THEN CAST(0 AS BIT)  
2698
		END AS IS_NB,
2699
		CASE
2700
		WHEN A.REQ_TYPE='P' THEN CAST(1 AS BIT)  
2701
		WHEN  A.REQ_TYPE <>'P'  THEN CAST(0 AS BIT)  
2702
		END AS IS_NCC,
2703
		CASE
2704
		WHEN A.REQ_TYPE='D' THEN CAST(1 AS BIT)  
2705
		WHEN  A.REQ_TYPE <>'D'  THEN CAST(0 AS BIT)  
2706
		END AS IS_XLN,
2707
		CASE WHEN LEN(@CONTENT) >0 THEN LEFT(@CONTENT,LEN(@CONTENT)-2) ELSE '' END AS TTTM,
2708
		CASE WHEN LEN(@CONTENT_CK) >0 THEN LEFT(@CONTENT_CK, LEN(@CONTENT_CK)-2) ELSE NULL END AS TTCK,
2709
		CASE WHEN LEN(@CONTENT) >0 THEN N'Tiền mặt:' ELSE '' END AS TM_TITLE,
2710
		CASE WHEN LEN(@CONTENT_CK) >0 THEN N'Chuyển khoản:' ELSE NULL END AS CK_TITLE,
2711
		--CASE WHEN @REQ_TYPE <>'P' THEN LEFT(@NOIDUNG, LEN(@NOIDUNG)-2) ELSE LEFT(@NOIDUNG_PO,LEN(@NOIDUNG_PO)-2) END AS NOIDUNG,
2712
		TL1.TLFullName AS APPROVE_FULLNAME,
2713
		--ISNULL(A.REQ_AMT,0) AS SO_TIEN_PTTT,
2714
		CASE WHEN LEN(@NDTM + @NDCK) >0 THEN LEFT(@NDTM + @NDCK,LEN(@NDTM + @NDCK)-2) ELSE '' END AS PHUONG_THUC_THANH_TOAN, CASE WHEN
2715
		EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
2716
										THEN (SELECT TOP 1 CURRENCY FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ELSE 'VND' END AS TYPE_CUR,
2717
		CASE WHEN
2718
		EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
2719
										THEN  (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2720
										ELSE A.REQ_AMT END  AS SO_TIEN_PTTT,
2721
		--(ISNULL(@TOTAL_ADVANCE,0) -ISNULL(@TOTAL_PAYBACK,0))+A.REQ_AMT*A.RATE AS SO_DU_TAM_UNG,
2722
		ISNULL(@SO_DU_TAM_UNG,0.00) AS SO_DU_TAM_UNG,
2723
		CASE WHEN EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
2724
										THEN  (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2725
										ELSE A.REQ_AMT END  AS REQ_AMT, @TRUONG_DV AS TRUONG_DV, @DVKD_APP_DT AS DVKD_APP_DT,CASE WHEN A.CONFIRM_NOTES <>'' AND A.CONFIRM_NOTES IS NOT NULL THEN  N'Ghi chú: '+ A.CONFIRM_NOTES ELSE '' END AS CONFIRM_NOTES
2726
        FROM TR_REQ_ADVANCE_PAYMENT A
2727
             LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
2728
             LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
2729
             LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
2730
             LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
2731
             LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
2732
             LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
2733
             LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
2734
			 LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
2735
             LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
2736
			 --Luanlt--2019/10/15-Sửa AL,AL1
2737
			 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE'
2738
			 LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE'
2739
			 LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
2740
			 LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
2741
			 LEFT JOIN TL_USER TL6 ON A.REF_ID = TL6.TLNANME
2742
			 WHERE 1=1 
2743
			 AND(A.REQ_PAY_ID=@p_REQ_PAY_ID)
2744
			ORDER BY A.CREATE_DT DESC;
2745

    
2746
¿
2747

    
2748
ALTER PROCEDURE [dbo].[rpt_TR_ADVANCE_TEMP_PAYMENT_ByID]
2749
@p_REQ_PAY_ID	varchar(15)= NULL
2750
AS
2751
		-------
2752
		DECLARE @TITLE_APPROVE NVARCHAR(50) ='', @TITLE_APPROVE_KSV NVARCHAR(50) =''
2753
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='S'))
2754
		BEGIN
2755
			SET @TITLE_APPROVE =N'Đã từ chối '
2756
		END
2757
		ELSE
2758
		BEGIN
2759
			SET @TITLE_APPROVE =N'Đã chấp thuận '
2760
		END
2761
		----------------
2762
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT='R'))
2763
		BEGIN
2764
			SET @TITLE_APPROVE_KSV =N'Đã từ chối '
2765
		END
2766
		ELSE
2767
		BEGIN
2768
			SET @TITLE_APPROVE_KSV =N'Đã chấp thuận '
2769
		END
2770
		----------------
2771
		DECLARE @TRUONG_DV NVARCHAR(50),@DVKD_APP_DT NVARCHAR(50), @SO_DU_TAM_UNG DECIMAL(18,2)
2772
		DECLARE @DATE_APPR DATETIME
2773
		SET @DATE_APPR =ISNULL((SELECT TOP 1 CONVERT(DATETIME,APPROVE_DT,103) FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID),CONVERT(DATETIME,GETDATE(),103))
2774
		DECLARE @REQ_TYPE VARCHAR(15)
2775
		SET @REQ_TYPE =(SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
2776
		-------------------------------------------
2777
		DECLARE @CONTENT NVARCHAR(MAX)='', @CONTENT_CK NVARCHAR(MAX)='', @REQ_PAY_TYPE VARCHAR(5), @ACCNO VARCHAR(50), @ACCNAME NVARCHAR(500), @BANK NVARCHAR(500),
2778
		@ISUED_DT DATE,@REASON NVARCHAR(MAX), @DESC NVARCHAR(MAX),@NDTM NVARCHAR(MAX) ='', @NDCK NVARCHAR(MAX) =''
2779
		DECLARE CURS CURSOR FOR SELECT A.REQ_PAY_TYPE, A.ACC_NO,A.ACC_NAME,A.ISSUED_BY,A.ISSUED_DT,A.REQ_PAY_REASON,A.REQ_PAY_ENTRIES FROM TR_REQ_PAY_METHOD A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
2780
		DECLARE @NOIDUNG NVARCHAR(MAX) =''
2781
		--- LAY NOI DUNG THANH TOAN NEU THANH TOAN CHO NHA CUNG CAP
2782
		DECLARE CURS_PO CURSOR FOR SELECT A.REQ_PAY_DESC,A.REQ_PAY_ENTRIES FROM TR_REQ_PAY_SCHEDULE A WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID
2783
		DECLARE @NOIDUNG_PO NVARCHAR(MAX) =''
2784
		DECLARE @BRANCH_TYPE VARCHAR(15), @BRANCH_RQ VARCHAR(15),@TOTAL_ADVANCE DECIMAL(18,0), @TOTAL_PAYBACK DECIMAL(18,0)
2785
		SET @BRANCH_RQ =(SELECT TOP 1 BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2786
		SET @BRANCH_TYPE  = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
2787
		IF(@BRANCH_TYPE ='HS'  AND @REQ_TYPE ='I')
2788
		BEGIN
2789
			SET @TRUONG_DV = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT top 1 CHECKER_ID FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='0' 
2790
			AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0')))
2791
			SET @DVKD_APP_DT =(SELECT  TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='0' 
2792
			AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0'))
2793
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
2794
			BEGIN
2795
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
2796
			END
2797
		END
2798
		ELSE IF (@BRANCH_TYPE = 'PGD'  AND @REQ_TYPE ='I')
2799
		BEGIN
2800
			SET @TRUONG_DV =(SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT TOP 1 CHECKER_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
2801
			--AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0')))
2802
			SET @DVKD_APP_DT =(SELECT  TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2803
			--AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='0'))
2804
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
2805
			BEGIN
2806
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
2807
			END
2808
		END
2809
		ELSE
2810
		BEGIN
2811
			SET @TRUONG_DV = (SELECT TOP 1 TLFullName FROM TL_USER WHERE TLNANME = (SELECT top 1 CHECKER_ID FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='1' 
2812
																					AND ID =(SELECT MAX(ID) FROM PL_PROCESS WHERE REQ_ID= @p_REQ_PAY_ID AND PROCESS_ID ='1')))
2813
			--SET @DVKD_APP_DT =(SELECT TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID='1')
2814
			SET @DVKD_APP_DT = (SELECT TOP 1 ISNULL(FORMAT(APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID )
2815
			IF(@DVKD_APP_DT IS NOT NULL AND @DVKD_APP_DT <>'')
2816
			BEGIN
2817
				SET @DVKD_APP_DT =N'Đã chấp thuận '+ @DVKD_APP_DT
2818
			END
2819
		END
2820
		DECLARE @TMP_DVDM TABLE(DVDM_ID VARCHAR(15))
2821
			INSERT INTO @TMP_DVDM
2822
			SELECT A.DVDM_ID--, A.COST_CODE, A.COST_NAME, B.DEP_ID --, C.DEP_CODE, C.DEP_NAME
2823
			FROM PL_COSTCENTER A
2824
			LEFT JOIN PL_COSTCENTER_DT B ON A.COST_ID = B.COST_ID
2825
			WHERE B.DEP_ID = (SELECT TOP 1 DEP_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2826
			GROUP BY A.DVDM_ID
2827
		DECLARE @tmp_CN table(BRANCH_ID varchar(15))
2828
			IF((SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='CN')
2829
			BEGIN
2830
				INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_RQ)
2831
			END
2832
			ELSE IF((SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)='PGD')
2833
			BEGIN
2834
				DECLARE @FATHER_ID VARCHAR(15) = NULL
2835
				SET @FATHER_ID =(SELECT TOP 1 FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID =@BRANCH_RQ)
2836
				INSERT into @tmp_CN  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@FATHER_ID)
2837
			END
2838
			SET @SO_DU_TAM_UNG = (SELECT AMT FROM TR_REQ_ADVANCE_LIMIT_LOG
2839
			WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ID
2840
			=(SELECT MAX(ID) FROM TR_REQ_ADVANCE_LIMIT_LOG WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
2841
		--IF(@BRANCH_TYPE='HS' AND @REQ_TYPE ='I')
2842
		--		BEGIN
2843
		--			SET @TOTAL_ADVANCE =ISNULL((SELECT SUM(REQ_AMT*ISNULL(RATE,1)) FROM TR_REQ_ADVANCE_PAYMENT WHERE
2844
		--			 DEP_ID IN
2845
		--			 (SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
2846
		--				LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
2847
		--				WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
2848
		--			 AND REQ_TYPE ='I' AND AUTH_STATUS ='A' AND (CONVERT(DATETIME,APPROVE_DT,103) <=@DATE_APPR OR APPROVE_DT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID),0)
2849
		--			SET @TOTAL_PAYBACK =
2850
		--			ISNULL(
2851
		--			(
2852
		--				SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
2853
		--				FROM TR_REQ_PAYMENT_DT B
2854
		--				INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
2855
		--				INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
2856
		--				WHERE A.DEP_ID IN 
2857
		--				(SELECT A.DEP_ID FROM PL_COSTCENTER_DT A
2858
		--				LEFT JOIN PL_COSTCENTER B ON A.COST_ID = B.COST_ID
2859
		--				WHERE B.DVDM_ID IN (SELECT DVDM_ID FROM @TMP_DVDM) AND A.BRANCH_ID =@BRANCH_RQ)
2860
		--				AND A.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I' AND (CONVERT(DATETIME,A.APPROVE_DT_KT,103) <=@DATE_APPR OR A.APPROVE_DT_KT IS NULL) AND B.PAY_ADV_ID <>@p_REQ_PAY_ID
2861
		--			),0)
2862
		--		END
2863
			
2864
		--		-- 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
2865
		--		ELSE IF(@BRANCH_TYPE <>'HS')
2866
		--		BEGIN
2867
		--			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)
2868
		--			 AND REQ_TYPE ='I' AND AUTH_STATUS='A' AND (CONVERT(DATETIME,APPROVE_DT,103) <=@DATE_APPR OR APPROVE_DT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID)
2869
		--			SET @TOTAL_PAYBACK =
2870
		--			(
2871
		--				SELECT (SUM(B.AMT_USE) - SUM(B.AMT_ADD) + SUM (B.AMT_REVERT))
2872
		--				FROM TR_REQ_PAYMENT_DT B
2873
		--				INNER JOIN TR_REQ_PAYMENT A ON B.PAY_ID = A.REQ_PAY_ID
2874
		--				INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON C.REQ_PAY_ID = B.PAY_ADV_ID
2875
		--				WHERE A.BRANCH_ID IN 
2876
		--				(SELECT BRANCH_ID FROM @tmp_CN)
2877
		--				AND A.AUTH_STATUS_KT ='A' AND C.REQ_TYPE='I' AND (CONVERT(DATETIME,A.APPROVE_DT_KT,103) <=@DATE_APPR OR A.APPROVE_DT_KT IS NULL) AND B.PAY_ADV_ID <>@p_REQ_PAY_ID
2878
		--			)
2879
		--		END
2880
		---
2881
        SELECT A.REQ_PAY_CODE, A.REQ_REASON,A.DEP_ID, N'Đã chấp thuận '+ISNULL(FORMAT(A.CREATE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') AS CREATE_DT, A.MAKER_ID_KT,A.CHECKER_ID,
2882
		CASE WHEN ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN N'Đã chấp thuận '+ ISNULL(FORMAT(A.APPROVE_DT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS APPROVE_DT,A.CHECKER_ID_KT,MAKER_ID_KT,
2883
		CASE WHEN ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') <>'' THEN @TITLE_APPROVE_KSV + ISNULL(FORMAT(A.APPROVE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS APPROVE_DT_KT , 
2884
		CASE WHEN  ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'')  <>'' THEN @TITLE_APPROVE +ISNULL(FORMAT(A.CREATE_DT_KT,'dd/MM/yyyy,hh:mm:ss tt'),'') ELSE '' END AS CREATE_DT_KT,
2885
		B.AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, CASE WHEN A.REF_ID IS NOT NULL AND A.REF_ID <>'' THEN TL6.TLFullName ELSE TL.TLFullName END CREATE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
2886
		BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
2887
		--Luanlt--2019/10/15-Sửa AL,AL1
2888
		BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, 0 TOTAL_AMT_TEMP, 0 TOTAL_AMT_PAY_HIS,TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
2889
		DAY(A.CREATE_DT) D_, MONTH(A.CREATE_DT) M_, YEAR(A.CREATE_DT) Y_,
2890
		CASE
2891
		WHEN A.REQ_TYPE='I' THEN CAST(1 AS BIT)  
2892
		WHEN  A.REQ_TYPE <>'I'  THEN CAST(0 AS BIT)  
2893
		END AS IS_NB,
2894
		CASE
2895
		WHEN A.REQ_TYPE='P' THEN CAST(1 AS BIT)  
2896
		WHEN  A.REQ_TYPE <>'P'  THEN CAST(0 AS BIT)  
2897
		END AS IS_NCC,
2898
		CASE
2899
		WHEN A.REQ_TYPE='D' THEN CAST(1 AS BIT)  
2900
		WHEN  A.REQ_TYPE <>'D'  THEN CAST(0 AS BIT)  
2901
		END AS IS_XLN,
2902
		CASE WHEN LEN(@CONTENT) >0 THEN LEFT(@CONTENT,LEN(@CONTENT)-2) ELSE '' END AS TTTM,
2903
		CASE WHEN LEN(@CONTENT_CK) >0 THEN LEFT(@CONTENT_CK, LEN(@CONTENT_CK)-2) ELSE NULL END AS TTCK,
2904
		CASE WHEN LEN(@CONTENT) >0 THEN N'Tiền mặt:' ELSE '' END AS TM_TITLE,
2905
		CASE WHEN LEN(@CONTENT_CK) >0 THEN N'Chuyển khoản:' ELSE NULL END AS CK_TITLE,
2906
		--CASE WHEN @REQ_TYPE <>'P' THEN LEFT(@NOIDUNG, LEN(@NOIDUNG)-2) ELSE LEFT(@NOIDUNG_PO,LEN(@NOIDUNG_PO)-2) END AS NOIDUNG,
2907
		TL1.TLFullName AS APPROVE_FULLNAME,
2908
		--ISNULL(A.REQ_AMT,0) AS SO_TIEN_PTTT,
2909
		CASE WHEN LEN(@NDTM + @NDCK) >0 THEN LEFT(@NDTM + @NDCK,LEN(@NDTM + @NDCK)-2) ELSE '' END AS PHUONG_THUC_THANH_TOAN, CASE WHEN
2910
		EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
2911
										THEN (SELECT TOP 1 CURRENCY FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ELSE 'VND' END AS TYPE_CUR,
2912
		CASE WHEN
2913
		EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
2914
										THEN  (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2915
										ELSE A.REQ_AMT END  AS SO_TIEN_PTTT,
2916
		--(ISNULL(@TOTAL_ADVANCE,0) -ISNULL(@TOTAL_PAYBACK,0))+A.REQ_AMT*A.RATE AS SO_DU_TAM_UNG,
2917
		ISNULL(@SO_DU_TAM_UNG,0.00) AS SO_DU_TAM_UNG,
2918
		CASE WHEN EXISTS(SELECT * FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND CURRENCY <>'VND')
2919
										THEN  (SELECT SUM(TOTAL_AMT) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
2920
										ELSE A.REQ_AMT END  AS REQ_AMT, @TRUONG_DV AS TRUONG_DV, @DVKD_APP_DT AS DVKD_APP_DT,CASE WHEN A.CONFIRM_NOTES <>'' AND A.CONFIRM_NOTES IS NOT NULL THEN  N'Ghi chú: '+ A.CONFIRM_NOTES ELSE '' END AS CONFIRM_NOTES
2921
        FROM TR_REQ_ADVANCE_PAYMENT A
2922
             LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
2923
             LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
2924
             LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
2925
             LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
2926
             LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
2927
             LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
2928
             LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
2929
			 LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
2930
             LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
2931
			 --Luanlt--2019/10/15-Sửa AL,AL1
2932
			 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE'
2933
			 LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE'
2934
			 LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
2935
			 LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
2936
			 LEFT JOIN TL_USER TL6 ON A.REF_ID = TL6.TLNANME
2937
			 WHERE 1=1 
2938
			 AND(A.REQ_PAY_ID=@p_REQ_PAY_ID)
2939
			ORDER BY A.CREATE_DT DESC;
2940
¿
2941

    
2942
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Search]
2943
@p_REQ_PAY_ID	varchar(15)= NULL,
2944
@p_REQ_PAY_CODE	varchar(50)	= NULL,
2945
@p_REQ_DT VARCHAR(20)= NULL,
2946
@p_BRANCH_ID	varchar(15)	= NULL,
2947
@p_DEP_ID	varchar(15)	= NULL,
2948
@p_REQ_REASON	nvarchar(MAX)	= NULL,
2949
@p_REQ_TYPE	varchar(15)	= NULL,
2950
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
2951
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
2952
@p_REF_ID	varchar(15)	= NULL,
2953
@p_RECEIVER_PO	nvarchar(250)	= NULL,
2954
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
2955
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
2956
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
2957
@p_REQ_AMT	decimal(18, 0)	= NULL,
2958
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
2959
@p_MAKER_ID	varchar(15)	= NULL,
2960
@p_CREATE_DT	varchar(25)	= NULL,
2961
@p_EDITOR_ID	varchar(15)	= NULL,
2962
@p_AUTH_STATUS	varchar(1)	= NULL,
2963
@p_CHECKER_ID	varchar(15)	= NULL,
2964
@p_APPROVE_DT	varchar(25)	= NULL,
2965
@p_CREATE_DT_KT	varchar(25)	= NULL,
2966
@p_MAKER_ID_KT	varchar(15)	= NULL,
2967
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
2968
@p_CHECKER_ID_KT	varchar(1)	= NULL,
2969
@p_APPROVE_DT_KT  varchar(25)= null,
2970
@p_CORE_NOTE	nvarchar(500)	= NULL,
2971
@p_BRANCH_CREATE	varchar(15)	= NULL,
2972
@p_NOTES	varchar(15)	= NULL,
2973
@p_RECORD_STATUS	varchar(1)	= NULL,
2974
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
2975
@p_TRANSFER_DT	varchar(25)	= NULL,
2976
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
2977
@p_PROCESS	varchar(15)	= NULL,
2978
@p_PAY_PHASE VARCHAR(15)= NULL,
2979
@p_XMP_TEMP XML = NULL,
2980
@p_TOP INT = 10,
2981
@p_LEVEL varchar(10) = NULL,
2982
@p_FRMDATE VARCHAR(20)= NULL,
2983
@p_TODATE VARCHAR(20) = NULL,
2984
@p_BRANCH_LOGIN VARCHAR(15) = NULL,
2985
@p_IS_UPDATE_KT VARCHAR(15) = NULL,
2986
@p_IS_TRANSFER VARCHAR(15)= NULL,
2987
@p_DVDM_ID VARCHAR(15)= NULL,
2988
@p_USER_LOGIN VARCHAR(15) = NULL,
2989
@p_RATE DECIMAL(18,0) =0,
2990
@p_FUNCTION VARCHAR(15) = NULL,
2991
@p_TYPE_SEARCH VARCHAR(15) = NULL,
2992
@p_TEMP_PAY_STATUS VARCHAR(10) = NULL
2993
--select * from CM_ALLCODE where  CDTYPE = 'TEMPPAYSTATUS'
2994
--HT	Hoàn tất
2995
--DCHU	Đang chờ hoàn ứng
2996
--DHU	Đã hoàn ứng
2997
--''	tất cả
2998
AS
2999
SET @p_TOP = NULL
3000
DECLARE @TB_TYPE TABLE (BRANCH_TYPE VARCHAR(15))
3001
IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_LOGIN)='HS')
3002
BEGIN
3003
	INSERT INTO @TB_TYPE VALUES('HS')
3004
END
3005
ELSE
3006
BEGIN
3007
	INSERT INTO @TB_TYPE VALUES('PGD')
3008
	INSERT INTO @TB_TYPE VALUES('CN')
3009
END
3010
declare @tmp table(BRANCH_ID varchar(15))
3011
insert into @tmp  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
3012
declare @tmp_Login table(BRANCH_ID varchar(15))
3013
insert into @tmp_Login  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)
3014
DECLARE @ROLE_ID VARCHAR(20) , @DEP_ID_LG VARCHAR(15) = NULL, @COST_LG VARCHAR(15), @DVDM_ID VARCHAR(15)
3015
DECLARE @BRANCH_TYPE VARCHAR(15)
3016
SET @BRANCH_TYPE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=(SELECT BRANCH_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
3017
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
3018
SET @DEP_ID_LG =(SELECT SECUR_CODE FROM TL_USER WHERE TLNANME=@p_USER_LOGIN)
3019
DECLARE @TMP_DEP TABLE(DEP_ID VARCHAR(15))
3020
SET @COST_LG =(SELECT TOP 1 COST_ID FROM PL_COSTCENTER_DT WHERE DEP_ID =@DEP_ID_LG)
3021
SET @DVDM_ID =(SELECT TOP 1 DVDM_ID FROM PL_COSTCENTER WHERE COST_ID =@COST_LG)
3022
print @DVDM_ID
3023
INSERT INTO @TMP_DEP SELECT B.DEP_ID FROM PL_COSTCENTER_DT B  WHERE COST_ID =@COST_LG
3024
DECLARE @BRANCH_TYPE_LG VARCHAR(15)
3025
SET @BRANCH_TYPE_LG = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN)
3026

    
3027
--IF(EXISTS(SELECT * FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))
3028
--	SET @ROLE_ID=(SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)
3029
	SET  @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
3030
	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','PPGD'))
3031
	BEGIN
3032
		PRINT @ROLE_ID
3033
	END
3034
	ELSE
3035
	BEGIN
3036
	--SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN)
3037
		SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_USER_LOGIN)
3038
		IF(@ROLE_ID IS NULL OR @ROLE_ID ='')
3039
		BEGIN
3040
			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_USER_LOGIN))
3041
		END
3042
	END
3043
-- KHAI BAO THEM ROLE NHAN UY QUYEN
3044
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
3045
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID 
3046
--AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
3047
-- KHAI BAO NHUNG PHONG BAN MA 1 USER KIEM NHIEM
3048
DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
3049
--INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@P_USER_LOGIN AND CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103)
3050
IF(@p_TOP=NULL OR @p_TOP='' OR @p_TOP=0)BEGIN
3051
		SELECT A.*,'' as TEMP_PAY_STATUS ,
3052
		PR.PROCESS_DESC AS AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
3053
		TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
3054
		BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME, DP.DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
3055
		--Luanlt--2019/10/15-Sửa AL,AL1
3056
		BR1.BRANCH_CODE BRANCH_CODE_CRE,  AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME,
3057
		A.REQ_AMT AS TOTAL_AMT_TEMP,
3058
		--CASE WHEN H.SOTIEN_TT IS NULL THEN ISNULL(A.PAY_AMT,0) ELSE  ISNULL(H.SOTIEN_TT,0) END AS TOTAL_AMT_PAY_HIS,
3059
		ISNULL(A.PAY_AMT,0) AS TOTAL_AMT_PAY_HIS,
3060
		TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE,
3061
		TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
3062
		PO.PO_CODE, PO.PO_NAME,SUP.SUP_NAME,SUP.TAX_NO AS SUP_TAX_NO,CUS.CUSTOMER_CODE AS CUST_CODE, CUS.CUSTOMER_NAME AS CUST_NAME, PM.PAY_PHASE AS KY_TAM_UNG,
3063
		DV.DVDM_CODE, DV.DVDM_NAME, PC.ROLE_USER AS ROLE_CONF, PR.PROCESS_DESC AS CONF_STATUS, PC1.NOTES AS NEXT_STEP, PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,
3064
		PC3.TLNAME AS EXEC_USER, TL8.TLFullName AS RECIVER_MONEY_FULLNAME, BR1.BRANCH_TYPE AS BRANCH_TYPE_CR, BR.BRANCH_TYPE, @p_TYPE_SEARCH AS TYPE_SEARCH,SR.ROLE_ID AS ROLE_ID_CRE,
3065
		BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE
3066
        FROM TR_REQ_ADVANCE_PAYMENT A
3067
             LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
3068
             LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
3069
             LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
3070
             LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
3071
             LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
3072
             LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
3073
             LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
3074
			 LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
3075
             LEFT JOIN dbo.CM_DEPARTMENT DP ON DP.DEP_ID=A.DEP_ID
3076
			 --Luanlt--2019/10/15-Sửa AL,AL1
3077
			 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE'--Loại thanh toán (Nội bộ/Thanh toán/Nợ)
3078
			 LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE'--Hình thức thanh toán( Tiền mặt/Chuyển khoản)			 
3079
			 LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
3080
			 LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
3081
			 LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
3082
			 LEFT JOIN
3083
			 (
3084
			 SELECT PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) AS SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID
3085
			 ) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
3086
			 LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
3087
			 LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
3088
			 LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
3089
			 LEFT JOIN LS_CUSTOMER CUS ON A.REF_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
3090
			 LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
3091
			 LEFT JOIN CM_DVDM DV ON A.DVDM_ID = DV.DVDM_ID
3092
			 LEFT JOIN PL_PROCESS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID
3093
			 LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND PC.ROLE_USER = @ROLE_ID AND PC.STATUS='C'
3094
			 LEFT JOIN PL_REQUEST_PROCESS PC1 ON PC1.REQ_ID= A.REQ_PAY_ID AND PC1.STATUS='C'
3095
			 LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C'
3096
			 LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C'
3097
			 LEFT JOIN TL_USER TL8 ON A.RECIVER_MONEY = TL8.TLNANME
3098
			 LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID
3099
			 LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID
3100
        WHERE 1=1 
3101
			 AND (A.REQ_PAY_ID =@p_REQ_PAY_ID OR @p_REQ_PAY_ID IS NULL OR @p_REQ_PAY_ID ='')
3102
			  AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' OR @p_REQ_REASON='' OR @p_REQ_REASON IS NULL)
3103
			  AND(A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL)
3104
			  AND((A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
3105
              OR((A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N'))OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='')
3106
			  AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL)
3107
			  --Luanlt-2019/10/14-Thêm Filter  REQ_TYPE,FROMDATE TODATE REF_ID
3108
			  AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL)
3109
			  AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @p_FRMDATE, 103)OR @p_FRMDATE IS NULL OR @p_FRMDATE='')
3110
              AND(CONVERT(DATE, A.CREATE_DT)<=CONVERT(DATE, @p_TODATE, 103)OR @p_TODATE IS NULL OR @p_TODATE='')
3111
			  --Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME  BRANCH_ID DEP_ID KT_AUTH
3112
			  AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
3113
			  AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'')
3114
			  AND(A.BRANCH_CREATE = @p_BRANCH_CREATE or @p_BRANCH_CREATE='' OR @p_BRANCH_CREATE IS NULL)
3115
			  AND(A.DEP_ID = @p_DEP_ID  or @p_DEP_ID='' OR @p_DEP_ID IS NULL)
3116
			  AND(A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL)
3117
			  AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL)
3118
			  AND((A.TRANSFER_MAKER IS NOT NULL AND @p_IS_TRANSFER='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
3119
              OR((A.TRANSFER_MAKER IS NULL AND @p_IS_TRANSFER='N'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
3120
			  AND((@p_LEVEL='ALL' AND A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp))
3121
              OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)))
3122
			  AND((@p_LEVEL='ALL' AND A.BRANCH_CREATE IN(SELECT BRANCH_ID FROM @tmp_Login))
3123
              OR((@p_LEVEL='UNIT' AND A.BRANCH_CREATE=@p_BRANCH_CREATE)OR(@p_BRANCH_CREATE='' OR @p_BRANCH_CREATE IS NULL)))
3124
			  --- KIEM TRA NEU LA MAN HINH TIM KIEM PHIEU TAM UNG DE HOAN TAM UNG THI CHI LAY NHUNG PHIEU TAM UNG CO SO TIEN TAM UNG CON LAI =0
3125
			  AND(((@p_PROCESS='PM' AND  (A.REQ_AMT- ISNULL(H.SOTIEN_TT,0)) >0) AND A.REQ_TYPE='I') OR @p_PROCESS IS NULL OR @p_PROCESS ='')
3126
			  AND ((@p_FUNCTION ='KT' AND A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT ='') OR @p_FUNCTION IS NULL OR @p_FUNCTION ='')	  
3127
			  AND(PC4.TLNAME = @p_TRASFER_USER_RECIVE OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='')
3128
			  AND (
3129
			    (A.REQ_TYPE IN ('I','P','D')
3130
				AND (@p_TYPE_SEARCH='HC' AND EXISTS(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN AND BRANCH_TYPE ='HS') 
3131
										  AND ( (A.PROCESS IS NOT NULL AND A.PROCESS <> '' AND (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =A.MAKER_ID) = (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME =@p_USER_LOGIN))
3132
										   OR(A.MAKER_ID =@P_USER_LOGIN OR A.TRASFER_USER_RECIVE =@p_USER_LOGIN))
3133
				OR (@p_TYPE_SEARCH='HC' AND NOT EXISTS(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_LOGIN AND BRANCH_TYPE ='HS')
3134
										  AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
3135
				OR (@p_TYPE_SEARCH ='HC' AND (A.DVDM_ID IS NOT NULL OR A.DVDM_ID <>'' AND A.DVDM_ID =@DVDM_ID AND A.PROCESS IS NOT NULL AND A.PROCESS <>'') OR (A.DEP_ID IN (SELECT * FROM @TMP_DEP) AND A.PROCESS IS NOT NULL AND A.PROCESS <>''))
3136
				OR (@p_TYPE_SEARCH ='HC' AND EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID= A.REQ_PAY_ID AND ROLE_USER ='TGD' AND STATUS ='C'))
3137
				-- HOAC NGUOC LAI NEU HC NHUNG PHIEU DUOC TAO O PGD, CN
3138
				OR (@p_TYPE_SEARCH='KT' AND  A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login)))
3139
				)
3140
				OR @p_TYPE_SEARCH IS NULL OR @p_TYPE_SEARCH ='')
3141
			 --AND (
3142
				--(A.PAY_AMT = A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'HT'))
3143
				--OR (A.PAY_AMT = 0 AND (@p_TEMP_PAY_STATUS = 'DCHU') )
3144
				--OR (A.PAY_AMT <> 0 and A.PAY_AMT < A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'DHU')) 
3145
				--OR @p_TEMP_PAY_STATUS IS NULL OR @p_TEMP_PAY_STATUS = ''
3146
				--)	 
3147
		ORDER BY A.CREATE_DT DESC;
3148
    END;
3149
    ELSE BEGIN
3150
        SELECT A.*,'' as TEMP_PAY_STATUS ,ISNULL(B.AUTH_STATUS_NAME,N'Chờ duyệt') AS AUTH_STATUS_NAME, C.AUTH_STATUS_NAME AUTH_STATUS_NAME_KT, TL.TLFullName CREATE_FULLNAME,
3151
		TL1.TLFullName APPROVE_FULLNAME,TL2.TLFullName CREATE_FULLNAME_KT,TL3.TLFullName APPROVE_FULLNAME_KT,
3152
		BR.BRANCH_NAME BRANCH_NAME_REQ, BR1.BRANCH_NAME BRANCH_NAME_CRE, DP.DEP_NAME AS DEP_NAME, DP.DEP_CODE AS DEP_CODE, BR.BRANCH_CODE BRANCH_CODE_REQ,
3153
		--Luanlt--2019/10/15-Sửa AL,AL1
3154
		BR1.BRANCH_CODE BRANCH_CODE_CRE, AL.CONTENT REQ_TYPE_NAME,AL1.CONTENT REQ_PAY_TYPE_NAME, 
3155
		A.REQ_AMT AS TOTAL_AMT_TEMP,CASE WHEN H.SOTIEN_TT IS NULL THEN ISNULL(A.PAY_AMT,0) ELSE  ISNULL(A.PAY_AMT,0) END AS TOTAL_AMT_PAY_HIS,
3156
		TL4.TLFullName AS TRANSFER_FULLNAME,TL5.TLFullName AS TRANSFER_RECIEVER_FULLNAME,
3157
		TL6.TLFullName AS REC_DEBIT_NAME, TL6.TLNANME AS REC_DEBIT_CODE, TL7.TLFullName AS EMP_NAME, TL7.TLNANME AS EMP_CODE,
3158
		PO.PO_CODE, PO.PO_NAME,SUP.SUP_NAME,SUP.TAX_NO AS SUP_TAX_NO,CUS.CUSTOMER_CODE AS CUST_CODE, CUS.CUSTOMER_NAME AS CUST_NAME,PM.PAY_PHASE AS KY_TAM_UNG,
3159
		DV.DVDM_CODE, DV.DVDM_NAME, CASE WHEN PC.ROLE_USER ='GDDV' THEN (SELECT RoleName FROM TL_USER WHERE TLNANME =@p_USER_LOGIN) ELSE PC.ROLE_USER END AS ROLE_CONF, PR.PROCESS_DESC +N' vào lúc '+ CONVERT(VARCHAR(30), CONVERT(DATETIME, PR.APP_DT,103))  AS CONF_STATUS, PC1.NOTES AS NEXT_STEP,
3160
		PC3.LEVEL_JOB, PC3.STATUS_JOB,PC3.TYPE_JOB,PC3.TLNAME AS EXEC_USER,TL8.TLFullName AS RECIVER_MONEY_FULLNAME, CASE WHEN BR1.BRANCH_TYPE <> 'PGD'THEN BR1.BRANCH_TYPE ELSE 'CN' END AS BRANCH_TYPE_CR, BR.BRANCH_TYPE,@p_TYPE_SEARCH AS TYPE_SEARCH,
3161
		SR.ROLE_ID AS ROLE_ID_CRE, ISNULL(H.SOTIEN_TT,0) AS STTT, A.REQ_AMT - ISNULL(H.SOTIEN_TT,0) AS SL_CL,BR_CORE.BRANCH_CODE AS BRANCH_CODE_CORE, BR_CORE.BRANCH_NAME AS BRANCH_NAME_CORE
3162
        FROM TR_REQ_ADVANCE_PAYMENT A
3163
             LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
3164
             LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS_KT=C.AUTH_STATUS
3165
             LEFT JOIN TL_USER TL ON A.MAKER_ID=TL.TLNANME
3166
             LEFT JOIN TL_USER TL1 ON A.CHECKER_ID=TL1.TLNANME
3167
             LEFT JOIN TL_USER TL2 ON A.MAKER_ID_KT=TL2.TLNANME
3168
             LEFT JOIN TL_USER TL3 ON A.CHECKER_ID_KT=TL3.TLNANME
3169
             LEFT JOIN dbo.CM_BRANCH BR ON A.BRANCH_ID=BR.BRANCH_ID
3170
			 LEFT JOIN dbo.CM_BRANCH BR1 ON A.BRANCH_CREATE=BR1.BRANCH_ID
3171
             LEFT JOIN dbo.CM_DEPARTMENT DP ON A.DEP_ID= DP.DEP_ID
3172
			 --Luanlt--2019/10/15-Sửa AL,AL1
3173
			 LEFT JOIN CM_ALLCODE AL ON A.REQ_TYPE = AL.CDVAL AND AL.CDNAME='REQ_TYPE'
3174
			 LEFT JOIN CM_ALLCODE AL1 ON A.REQ_PAY_TYPE = AL1.CDVAL AND AL1.CDNAME='REQ_PAY_TYPE'
3175
			 LEFT JOIN TL_USER TL4 ON A.TRANSFER_MAKER = TL4.TLNANME
3176
			 LEFT JOIN TL_USER TL5 ON A.TRASFER_USER_RECIVE = TL5.TLNANME
3177
			LEFT JOIN TL_USER TL6 ON A.RECEIVER_DEBIT = TL6.TLNANME AND A.REQ_TYPE='D'
3178
			 LEFT JOIN
3179
			 (
3180
			 SELECT PAY_ADV_ID,(ISNULL(SUM(AMT_USE),0) - ISNULL(SUM(AMT_ADD),0) + ISNULL(SUM(AMT_REVERT),0)) AS SOTIEN_TT FROM TR_REQ_PAYMENT_DT WHERE AUTH_STATUS_KT ='A' GROUP BY PAY_ADV_ID
3181
			 ) H ON A.REQ_PAY_ID = H.PAY_ADV_ID
3182
			 LEFT JOIN TL_USER TL7 ON TL7.TLNANME = A.REF_ID AND A.REQ_TYPE='I'
3183
			 LEFT JOIN TR_PO_MASTER PO ON A.REF_ID = PO.PO_ID AND A.REQ_TYPE='P'
3184
			 LEFT JOIN CM_SUPPLIER SUP ON PO.SUP_ID = SUP.SUP_ID AND A.REQ_TYPE='P'
3185
			 LEFT JOIN LS_CUSTOMER CUS ON A.REF_ID = CUS.CUSTOMER_ID AND A.REQ_TYPE='D'
3186
			 LEFT JOIN TR_PO_PAYMENT PM ON A.PAY_PHASE = PM.PAY_ID AND A.REQ_TYPE='P'
3187
			 LEFT JOIN CM_DVDM DV ON A.DVDM_ID = DV.DVDM_ID
3188
			 --LEFT JOIN PL_PROCESS PR ON A.PROCESS = PR.PROCESS_ID AND A.REQ_PAY_ID = PR.REQ_ID
3189
			 LEFT JOIN 
3190
			 (
3191
				SELECT P.REQ_ID, P.PROCESS_DESC, P.APPROVE_DT AS APP_DT FROM PL_PROCESS P
3192
				INNER JOIN 
3193
				(
3194
					SELECT MAX (PR.ID) AS ID, MAX(PR.REQ_ID) AS REQ_ID FROM PL_PROCESS PR
3195
					GROUP BY PR.REQ_ID
3196
				) PR ON PR.REQ_ID = P.REQ_ID AND P.ID = PR.ID
3197
			 ) AS PR ON A.REQ_PAY_ID = PR.REQ_ID
3198
			 --LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND PC.ROLE_USER = @ROLE_ID AND PC.STATUS='C'
3199
			 LEFT JOIN PL_REQUEST_PROCESS PC ON PC.REQ_ID= A.REQ_PAY_ID AND PC.ROLE_USER  IN (SELECT * FROM @TABLE_ROLE) AND PC.STATUS='C'
3200
			 LEFT JOIN PL_REQUEST_PROCESS PC1 ON PC1.REQ_ID= A.REQ_PAY_ID AND PC1.STATUS='C'
3201
			 LEFT JOIN PL_REQUEST_PROCESS_CHILD PC3 ON PC3.REQ_ID = A.REQ_PAY_ID AND PC3.STATUS_JOB ='C'
3202
			 LEFT JOIN PL_REQUEST_PROCESS_CHILD PC4 ON PC4.REQ_ID = A.REQ_PAY_ID AND PC4.STATUS_JOB ='C'
3203
			 LEFT JOIN TL_USER TL8 ON A.RECIVER_MONEY = TL8.TLNANME	
3204
			 LEFT JOIN TL_SYSROLE SR ON TL.RoleName = SR.ROLE_ID
3205
			 LEFT JOIN CM_BRANCH BR_CORE ON TL2.TLSUBBRID = BR_CORE.BRANCH_ID
3206
        WHERE 1=1 
3207
		      AND
3208
			  (( @p_REQ_PAY_CODE IS NOT NULL AND @p_REQ_PAY_CODE <> '' AND A.REQ_PAY_CODE =@p_REQ_PAY_CODE AND A.AUTH_STATUS_KT ='A' AND (A.REQ_AMT - ISNULL(A.PAY_AMT,0))>0)
3209
			  OR
3210
			  (
3211
			  (A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' OR @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
3212
			  AND(A.REQ_REASON LIKE N'%'+@p_REQ_REASON+'%' OR @p_REQ_REASON='' OR @p_REQ_REASON IS NULL)
3213
			  AND(A.AUTH_STATUS=@p_AUTH_STATUS OR @p_AUTH_STATUS='' OR @p_AUTH_STATUS IS NULL)
3214
			  AND((A.MAKER_ID_KT IS NOT NULL AND @p_IS_UPDATE_KT='Y') --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
3215
			 OR((A.MAKER_ID_KT IS NULL AND @p_IS_UPDATE_KT='N'))OR @p_IS_UPDATE_KT IS NULL OR @p_IS_UPDATE_KT='')
3216
			  AND(A.NOTES LIKE N'%'+@p_NOTES+'%' OR @p_NOTES='' OR @p_NOTES IS NULL)
3217
			  --Luanlt-2019/10/14-Thêm Filter  REQ_TYPE,FROMDATE TODATE REF_ID
3218
			  AND(A.REQ_TYPE LIKE N'%'+@p_REQ_TYPE+'%' OR @p_REQ_TYPE = '' OR @p_REQ_TYPE IS NULL)
3219
			  AND(CONVERT(DATE, A.CREATE_DT)>=CONVERT(DATE, @p_FRMDATE, 103)OR @p_FRMDATE IS NULL OR @p_FRMDATE='' OR A.CREATE_DT IS NULL OR A.REQ_DT IS NULL)
3220
              AND(CONVERT(DATE, A.CREATE_DT)<=CONVERT(DATE, @p_TODATE, 103)OR @p_TODATE IS NULL OR @p_TODATE='' OR A.CREATE_DT IS NULL OR A.REQ_DT IS NULL)
3221
			  --Luanlt-2019/10/17-Thêm Filter REQ_PAY_CODE REQ_PAY_NAME  BRANCH_ID DEP_ID KT_AUTH
3222
			  AND(A.REQ_PAY_CODE LIKE N'%'+@p_REQ_PAY_CODE+'%' or @p_REQ_PAY_CODE='' OR @p_REQ_PAY_CODE IS NULL)
3223
			  --AND(A.TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE or @p_TRASFER_USER_RECIVE='' OR @p_TRASFER_USER_RECIVE IS NULL OR A.MAKER_ID_KT IS NOT NULL OR A.MAKER_ID_KT <>'')
3224
			  AND(A.DEP_ID = @p_DEP_ID  or @p_DEP_ID='' OR @p_DEP_ID IS NULL)
3225
			  AND((A.AUTH_STATUS_KT=@p_AUTH_STATUS_KT OR @p_AUTH_STATUS_KT='' OR @p_AUTH_STATUS_KT IS NULL) OR (@p_AUTH_STATUS_KT ='P' AND A.AUTH_STATUS_KT IN ('P','S')))
3226
			  AND(A.REF_ID =@p_REF_ID OR @p_REF_ID='' OR @p_REF_ID IS NULL)
3227
			  AND(( @p_IS_TRANSFER='Y' AND (EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) OR A.AUTH_STATUS_KT ='A')) --Lay danh sach chua duoc phong KT cap nhat va duoc cap nhat
3228
              OR((@p_IS_TRANSFER='N' AND NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID) AND A.AUTH_STATUS_KT <>'A'))OR @p_IS_TRANSFER IS NULL OR @p_IS_TRANSFER='')
3229
			 AND(((@p_PROCESS='PM' AND  (A.REQ_AMT- ISNULL(A.PAY_AMT,0.00)) >0) 
3230
					AND (A.REQ_TYPE IN('I','D') OR (@DEP_ID_LG ='DEP000000000014' AND A.REQ_TYPE IN ('I','P','D'))) AND 
3231
					((A.DEP_ID =@DEP_ID_LG OR A.MAKER_ID =@p_USER_LOGIN OR A.MAKER_ID IS NULL) OR(@BRANCH_TYPE_LG <>'HS' AND A.BRANCH_ID =@p_BRANCH_LOGIN))) 
3232
					OR @p_PROCESS IS NULL OR @p_PROCESS ='')	
3233
			  AND((@p_LEVEL='ALL' AND A.BRANCH_ID IN(SELECT BRANCH_ID FROM @tmp))
3234
              OR((@p_LEVEL='UNIT' AND A.BRANCH_ID=@p_BRANCH_ID)OR(@p_BRANCH_ID='' OR @p_BRANCH_ID IS NULL)))
3235

    
3236
			 --AND((@p_LEVEL='ALL' AND A.BRANCH_CREATE IN(SELECT BRANCH_ID FROM @tmp_Login))
3237
             -- OR((@p_LEVEL='UNIT' AND A.BRANCH_CREATE=@p_BRANCH_CREATE)OR(@p_BRANCH_CREATE='' OR @p_BRANCH_CREATE IS NULL)))
3238
			  --AND ((@p_TRASFER_USER_RECIVE IS NOT NULL AND EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE TLNAME = @p_TRASFER_USER_RECIVE ))
3239
			  --OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='')	
3240
			  AND ((@p_FUNCTION ='KT' AND (EXISTS(SELECT TOP 1 * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.REQ_PAY_ID AND TLNAME= @p_USER_LOGIN)) OR A.CHECKER_ID_KT ='admin' OR A.AUTH_STATUS_KT ='A')
3241
					OR @p_FUNCTION IS NULL OR @p_FUNCTION ='' OR @p_FUNCTION ='TF')	  
3242
			  AND(A.MAKER_ID LIKE '%'+@p_MAKER_ID+'%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID ='')
3243
			  --AND(A.MAKER_ID_KT LIKE '%'+@p_TRASFER_USER_RECIVE+'%' OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='')
3244
			  --AND(PC4.TLNAME = @p_TRASFER_USER_RECIVE OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE ='')
3245
			 AND(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE TLNAME =@p_TRASFER_USER_RECIVE AND TYPE_JOB='XL' AND REQ_ID = A.REQ_PAY_ID) OR @p_TRASFER_USER_RECIVE IS NULL OR @p_TRASFER_USER_RECIVE='')
3246
			  AND
3247
			  ( 
3248
			  A.MAKER_ID =@p_USER_LOGIN OR (A.TRASFER_USER_RECIVE = @p_USER_LOGIN AND A.AUTH_STATUS NOT IN ('E','R'))
3249
			  OR(
3250
			  --A.AUTH_STATUS <>'E' AND((@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG ='HS' AND A.REQ_TYPE ='I' 
3251
					--					AND (A.TRASFER_USER_RECIVE = @p_USER_LOGIN 
3252
					--					OR (@ROLE_ID = (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID AND ROLE_USER =@ROLE_ID)
3253
					--					OR (A.DVDM_ID IS NULL AND A.DEP_ID =@DEP_ID_LG))
3254
					--					))
3255
			A.AUTH_STATUS <>'E' AND((@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG ='HS' AND A.REQ_TYPE ='I' 
3256
										AND (
3257
												(@ROLE_ID IN ('GDDV','TP','PP') AND A.BRANCH_ID =@p_BRANCH_LOGIN AND A.DEP_ID = @DEP_ID_LG)
3258
												OR
3259
												(@ROLE_ID NOT IN ('GDDV','TP','PP') AND
3260
												(A.TRASFER_USER_RECIVE = @p_USER_LOGIN 
3261
												OR (@ROLE_ID = (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID AND ROLE_USER =@ROLE_ID)
3262
												OR (A.DVDM_ID IS NULL AND A.DEP_ID =@DEP_ID_LG)
3263
												OR(A.DEP_ID =@DEP_ID_LG) OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH))
3264
													)))
3265
											AND ( 1=1 AND
3266
												( @ROLE_ID IN ('GDK','PTGD') AND (A.DVDM_ID =@DVDM_ID OR (A.DVDM_ID IS NULL OR A.DVDM_ID ='')) AND ((A.PROCESS IS NOT NULL AND A.PROCESS <>'')
3267
												OR A.DEP_ID ='DEP000000000052' OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH)))
3268
												OR (@ROLE_ID NOT IN ('GDK','PTGD'))
3269
												)
3270
											)
3271
			  OR(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG ='HS' AND A.REQ_TYPE <> 'I' AND 
3272
			  (A.TRASFER_USER_RECIVE = @p_USER_LOGIN OR (@ROLE_ID IN ('GDDV','GDK','KTT','TPTC','PP','TBP','TP','TC') AND A.BRANCH_ID =@p_BRANCH_LOGIN AND (A.DEP_ID =@DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH))
3273
																					AND( A.TRASFER_USER_RECIVE IS NULL OR A.TRASFER_USER_RECIVE ='' OR
3274
																					(A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'')))
3275
													OR (@ROLE_ID NOT IN ('GDDV','GDK','KTT','TPTC','PP','TBP','TP','TC') AND (A.DEP_ID =@DEP_ID_LG OR A.DEP_ID IN (SELECT * FROM @DEP_AUTH)))
3276
		      ))
3277
			  --OR(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND (@ROLE_ID IN ('GDDV','PGD','TPGD') AND 
3278
			  --(
3279
			  --(A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'' AND A.PROCESS IS NOT NULL AND A.PROCESS <>'')
3280
			  --OR A.TRASFER_USER_RECIVE ='' OR A.TRASFER_USER_RECIVE IS NULL)
3281

    
3282
			  --OR ((A.BRANCH_CREATE <> @p_BRANCH_LOGIN AND A.TRASFER_USER_RECIVE IS NOT NULL AND A.TRASFER_USER_RECIVE <>'') OR A.BRANCH_CREATE = @p_BRANCH_LOGIN)
3283
			  ----AND A.BRANCH_ID IN (SELECT * FROM @tmp)))
3284
			  --AND A.BRANCH_ID =@p_BRANCH_LOGIN))
3285
			  --OR (@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND A.BRANCH_ID IN (SELECT * FROM @tmp))
3286
			 -- OR (@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG = 'CN' AND (@ROLE_ID IN ('GDDV','TPGD','PPGD','PGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN)
3287
			  OR(@p_TYPE_SEARCH ='HC' AND @BRANCH_TYPE_LG IN  ('PGD','CN') AND (@ROLE_ID IN ('GDDV','TPGD','PPGD','PGD') AND A.BRANCH_ID =@p_BRANCH_LOGIN))
3288
			  OR(@p_TYPE_SEARCH ='HC' AND (A.DVDM_ID IS NOT NULL AND A.DVDM_ID <>'' AND A.DVDM_ID =@DVDM_ID AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' AND
3289
			  @ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID))
3290
			  OR(A.DEP_ID IN (SELECT * FROM @TMP_DEP) AND A.PROCESS IS NOT NULL AND A.PROCESS <>'' AND @ROLE_ID IN (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID =A.REQ_PAY_ID)))
3291
			  OR(@p_TYPE_SEARCH ='HC' AND (@ROLE_ID = (SELECT ROLE_USER FROM PL_REQUEST_PROCESS WHERE REQ_ID= A.REQ_PAY_ID AND ROLE_USER  IN ('TGD','HDQT') AND STATUS ='C')))
3292
			  OR(@p_TYPE_SEARCH='KT' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
3293
			  OR(@p_TYPE_SEARCH='HC' AND @ROLE_ID IN ('KSV','GDV') AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp_Login))
3294
			  OR(@p_TYPE_SEARCH='PAY' AND (A.REQ_AMT -ISNULL(A.PAY_AMT,0)) >=0 AND (
3295
										(@BRANCH_TYPE_LG ='HS' AND (A.DEP_ID =@DEP_ID_LG OR A.MAKER_ID =@p_USER_LOGIN OR A.MAKER_ID IS NULL))
3296
										 OR (@BRANCH_TYPE_LG <> 'HS' AND A.BRANCH_ID = @p_BRANCH_LOGIN)))
3297
			  )))
3298
			  AND (
3299
				(A.PAY_AMT = A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'HT'))
3300
				OR (A.PAY_AMT = 0 AND (@p_TEMP_PAY_STATUS = 'DCHU') )
3301
				OR (A.PAY_AMT <> 0 and A.PAY_AMT < A.REQ_AMT AND (@p_TEMP_PAY_STATUS = 'DHU')) 
3302
				OR @p_TEMP_PAY_STATUS IS NULL OR @p_TEMP_PAY_STATUS = ''
3303
				)	 
3304
				)
3305
			)
3306
		ORDER BY A.CREATE_DT DESC;
3307
    END;
3308
¿
3309

    
3310
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_SendApp]
3311
@p_REQ_ID VARCHAR(20),
3312
@p_PROCESS_ID VARCHAR(20),
3313
@p_TLNAME VARCHAR(20),
3314
@p_MAKER_ID VARCHAR(20)
3315
AS
3316
BEGIN TRANSACTION
3317
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_DT IS NULL OR REQ_DT='')) )
3318
	BEGIN
3319
			ROLLBACK TRANSACTION
3320
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày yêu cầu bắt buộc nhập' ErrorDesc
3321
			RETURN '-1'
3322
	END
3323
	IF((SELECT CONVERT(DATE, REQ_DT, 103) FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID) > CONVERT(DATE, GETDATE(),103))
3324
	BEGIN
3325
			ROLLBACK TRANSACTION
3326
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày yêu cầu mua sắm không được phép lớn hơn ngày hiện tại' ErrorDesc
3327
			RETURN '-1'
3328
	END
3329
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_REASON IS NULL OR REQ_REASON='')) )
3330
	BEGIN
3331
			ROLLBACK TRANSACTION
3332
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Mục đích yêu cầu bắt buộc nhập' ErrorDesc
3333
			RETURN '-1'
3334
	END
3335
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (PL_REQ_ID IS NULL OR PL_REQ_ID='')) )
3336
	BEGIN
3337
			ROLLBACK TRANSACTION
3338
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Tờ trình chủ trương bắt buộc nhập' ErrorDesc
3339
			RETURN '-1'
3340
	END
3341
	IF(NOT EXISTS(SELECT REQ_DOC_ID FROM dbo.TR_REQUEST_DOC_DT WHERE  REQ_DOC_ID=@p_REQ_ID ) )
3342
	BEGIN
3343
			ROLLBACK TRANSACTION
3344
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Chi tiết hàng hóa bắt buộc nhập' ErrorDesc
3345
			RETURN '-1'
3346
	END
3347

    
3348
	--- XOA DATA CU
3349
	DELETE PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID
3350
	-----
3351
	DECLARE @NS_TO_TRINH DECIMAL(18,0), @NS_PYCMS_USE DECIMAL(18,0), @NS_LUY_KE DECIMAL(18,0),@PL_REQ_CODE VARCHAR(50)
3352
	SET @PL_REQ_CODE =(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
3353
	SET @NS_TO_TRINH =(SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
3354
	SET @NS_PYCMS_USE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID)
3355
	SET @NS_LUY_KE =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN 
3356
	(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) AND PROCESS_ID='APPROVE')),0)
3357
	DECLARE @p_PL_REQ_ID VARCHAR(15),@p_REQ_DATE DATETIME
3358
	SELECT @p_PL_REQ_ID=PL_REQ_ID,@p_REQ_DATE=REQ_DT  FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
3359
	--IF( EXISTS(
3360
	--		SELECT Temp.GD_ID FROM (SELECT GD_ID,SUM(TOTAL_AMT) AS TOTAL_AMT_ETM FROM dbo.TR_REQUEST_DOC_DT   WHERE REQ_DOC_ID=@p_REQ_ID
3361
	--		GROUP BY GD_ID) Temp WHERE    TOTAL_AMT_ETM > 
3362
	--		((SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT_APP FROM
3363
	--		(SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
3364
	--		WHERE REQ_ID=@p_PL_REQ_ID
3365
	--		UNION 
3366
	--		SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
3367
	--		WHERE REQ_ID=(SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_PL_REQ_ID) ) TEMP2 WHERE TEMP2.GOODS_ID=Temp.GD_ID
3368
	--		GROUP BY TEMP2.GOODS_ID) - (SELECT ISNULL(SUM(TOTAL_AMT),0) AS TOTAL_AMT_EXE FROM dbo.TR_REQUEST_DOC_DT WHERE GD_ID=Temp.GD_ID AND REQ_DOC_ID IN (SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=@p_PL_REQ_ID AND PROCESS_ID='APPROVE')
3369
	--		GROUP BY GD_ID))))
3370
	--	BEGIN
3371
	--		ROLLBACK TRANSACTION
3372
	--		SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
3373
	--		N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE
3374
	--		+CHAR(10)+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@NS_LUY_KE ,'#,#', 'vi-VN')
3375
	--		+CHAR(10)+N'Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(@NS_TO_TRINH -@NS_LUY_KE ,'#,#', 'vi-VN')
3376
	--		+CHAR(10)+ N'Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(@NS_LUY_KE+@NS_PYCMS_USE -@NS_TO_TRINH ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.'
3377
	--		+CHAR(10) +N'Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm để biết thêm thông tin chi tiêt!' ErrorDesc 
3378
	--		RETURN '0'
3379
	--	END
3380
	-- LUCTV: 05-12-2020: KHAI BAO CURSOR DE  KIEM TRA TONG HAN MUC SU DUNG PYC LINK TỚI TỜ TRÌNH
3381
	-- LẤY SUM TỜ TRÌNH CHA
3382
	DECLARE @SUM_TO_TRINH_CHINH DECIMAL(18) =0, @SUM_TO_TRINH_CON DECIMAL(18,0), @SUM_PYC_LUY_KE DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(100)
3383
	SET @SUM_TO_TRINH_CHINH =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM  PL_REQUEST_DOC_DT WHERE REQ_ID =@p_PL_REQ_ID)
3384
	-- LẤY SUM TỜ TRÌNH CON
3385
	SET @SUM_TO_TRINH_CON =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM  PL_REQUEST_DOC_DT WHERE REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_DOC WHERE REQ_PARENT_ID =@p_PL_REQ_ID))
3386
	---
3387
	SET @SUM_PYC_LUY_KE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID 
3388
							IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN  ('U','A')) 
3389
							AND REQ_DOC_ID <> @p_REQ_ID)   
3390
	IF(ISNULL(@SUM_TO_TRINH_CHINH,0) + ISNULL(@SUM_TO_TRINH_CON,0) <@SUM_PYC_LUY_KE+@NS_PYCMS_USE)
3391
	BEGIN
3392
	ROLLBACK TRANSACTION
3393
			SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN  ('U','A')
3394
			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
3395
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
3396
			N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE
3397
			+CHAR(10)+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@SUM_PYC_LUY_KE ,'#,#', 'vi-VN')
3398
			+CHAR(10)+N'Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0) -@SUM_PYC_LUY_KE ,'#,#', 'vi-VN')
3399
			+CHAR(10)+ N'Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(ISNULL(@SUM_PYC_LUY_KE,0)+@NS_PYCMS_USE -(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0)) ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.'
3400
			+CHAR(10) +N'Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm số: '+ISNULL(@PYCMS_CODE_LIST,'')+N' để biết thêm thông tin chi tiêt!' ErrorDesc 
3401
			RETURN '0'
3402
	END
3403
	-- KHAI BÁO CURRS0R ĐỂ CHECK LŨY KẾ TỪNG HẠNG MỤC
3404
	DECLARE @PL_DT_ID VARCHAR(15), @SUM_@PL_DT_ID  DECIMAL(18,0), @INDEX INT =0, @TOTAL_AMT_DETAIL DECIMAL(18,0), @REMAIN_AMT DECIMAL(18,0), @AMT_PL_DT DECIMAL(18,0), @AMT_PL_DT_EX DECIMAL(18,0)
3405
	DECLARE CURS CURSOR FOR SELECT PL_REQDT_ID, TOTAL_AMT  FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID
3406
		OPEN CURS
3407
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
3408
			WHILE @@FETCH_STATUS = 0
3409
			BEGIN
3410
				SET @INDEX = @INDEX +1
3411
				-- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
3412
				--IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)=0)
3413

    
3414
				SET @SUM_@PL_DT_ID =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN ('U','A')) 
3415
										     AND PL_REQDT_ID =@PL_DT_ID)
3416
				SET @AMT_PL_DT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID)
3417
				SET @REMAIN_AMT = ISNULL(@AMT_PL_DT,0) -ISNULL(@SUM_@PL_DT_ID,0)
3418
				--SET @SUM_@PL_DT_ID = ISNULL(@SUM_@PL_DT_ID,0)+ISNULL(@TOTAL_AMT_DETAIL,0)
3419
				SET @AMT_PL_DT_EX =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID AND PL_REQDT_ID =@PL_DT_ID)
3420
										     --AND PL_REQDT_ID =@PL_DT_ID)
3421
				--PRINT @SUM_@PL_DT_ID
3422
				IF(ISNULL(@SUM_@PL_DT_ID,0)+ ISNULL(@AMT_PL_DT_EX,0) >  @AMT_PL_DT)
3423
				--IF(1<2)
3424
				BEGIN
3425
					ROLLBACK TRANSACTION
3426
					SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Ngân sách sử dụng của hạng mục: '+
3427
					(SELECT ISNULL(DESCRIPTION,'') FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID) +N' đã vượt quá số tiền trình chủ trương.'
3428
					+CHAR(10)+N'Số tiền đã gửi phê duyệt thành công trong những PUR khác: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) ,'#,#', 'vi-VN')
3429
					+CHAR(10)+ N'Số tiền còn lại có thể sử dụng: '+ CASE WHEN @REMAIN_AMT >0 THEN FORMAT(ISNULL(@REMAIN_AMT,0) ,'#,#', 'vi-VN') ELSE '0.00' END
3430
					--+CHAR(10)+N'Số tiền vượt hạn mức: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) +ISNULL(@TOTAL_AMT_DETAIL,0) -  (@AMT_PL_DT) ,'#,#', 'vi-VN') 
3431
					ErrorDesc
3432
					RETURN '-1'
3433
				END
3434
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT,0) + ISNULL(@AMT_PAY,0.00) +ISNULL(@AMT_REVERT,0.00) WHERE REQ_PAY_ID =@PAY_ADVANCE_ID
3435
				-- SO SÁNH TỔNG BREAK DOWN TỪ 1 HẠNG MỤC
3436
				--IF(SELECT SUM())
3437
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
3438
		END
3439
		CLOSE CURS
3440
		DEALLOCATE CURS
3441
	--: HẾT ĐOẠN BỔ SUNG CỦA LỰCTV
3442
	--IF(EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
3443
	--IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
3444
	--	BEGIN
3445
	--		ROLLBACK TRANSACTION
3446
	--		SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa theo tờ trình: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
3447
	--		RETURN '0'
3448
	--END
3449
	IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
3450
		BEGIN
3451
			ROLLBACK TRANSACTION
3452
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
3453
			RETURN '0'
3454
	END
3455
	IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND (REQ_DT IS NULL OR REQ_DT ='')))
3456
		BEGIN
3457
			ROLLBACK TRANSACTION
3458
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
3459
			RETURN '0'
3460
	END
3461
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
3462
	@BRANCH_CREATE_TYPE VARCHAR(10)
3463

    
3464
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
3465

    
3466
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
3467
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
3468
	-- KIEM TRA XEM CO CAP PHE DUYET HAY KHONG
3469
	IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
3470
	BEGIN
3471
		UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN' WHERE REQ_ID=@p_REQ_ID
3472
		INSERT INTO dbo.PL_REQUEST_PROCESS
3473
		(
3474
		    REQ_ID,
3475
		    PROCESS_ID,
3476
		    STATUS,
3477
		    ROLE_USER,
3478
		    BRANCH_ID,
3479
			DEP_ID,
3480
		    CHECKER_ID,
3481
		    APPROVE_DT,
3482
		    PARENT_PROCESS_ID,
3483
		    IS_LEAF,
3484
		    COST_ID,
3485
		    DVDM_ID,
3486
		    NOTES,
3487
		    IS_HAS_CHILD
3488
		)
3489
		VALUES
3490
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3491
		    'SIGN',        -- PROCESS_ID - varchar(10)
3492
		    'C',        -- STATUS - varchar(5)
3493
		    (SELECT RoleName FROM TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)),  -- ROLE_USER - varchar(50)
3494
		    @BRANCH_CREATE,  
3495
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
3496
		    '',        -- CHECKER_ID - varchar(15)
3497
		    NULL,      -- APPROVE_DT - datetime
3498
		    '',        -- PARENT_PROCESS_ID - varchar(10)
3499
		    'N',        -- IS_LEAF - varchar(1)
3500
		    '',        -- COST_ID - varchar(15)
3501
		    '',        -- DVDM_ID - varchar(15)
3502
		    N'Chờ cấp phê duyệt trung gian xác nhận phiếu',       -- NOTES - nvarchar(500)
3503
		    NULL       -- IS_HAS_CHILD - bit
3504
		 )
3505
	END
3506
	ELSE
3507
	BEGIN
3508
	--IF(@BRANCH_CREATE_TYPE='PGD')
3509
	--	SET @BRANCH_CREATE=(SELECT FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
3510
	
3511
	UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
3512
	INSERT INTO dbo.PL_REQUEST_PROCESS
3513
		(
3514
		    REQ_ID,
3515
		    PROCESS_ID,
3516
		    STATUS,
3517
		    ROLE_USER,
3518
		    BRANCH_ID,
3519
			DEP_ID,
3520
		    CHECKER_ID,
3521
		    APPROVE_DT,
3522
		    PARENT_PROCESS_ID,
3523
		    IS_LEAF,
3524
		    COST_ID,
3525
		    DVDM_ID,
3526
		    NOTES,
3527
		    IS_HAS_CHILD
3528
		)
3529
		VALUES
3530
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3531
		    'APPNEW',        -- PROCESS_ID - varchar(10)
3532
		    'C',        -- STATUS - varchar(5)
3533
		    'GDDV',        -- ROLE_USER - varchar(50)
3534
		    @BRANCH_CREATE,  
3535
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
3536
		    '',        -- CHECKER_ID - varchar(15)
3537
		    NULL,      -- APPROVE_DT - datetime
3538
		    '',        -- PARENT_PROCESS_ID - varchar(10)
3539
		    'N',        -- IS_LEAF - varchar(1)
3540
		    '',        -- COST_ID - varchar(15)
3541
		    '',        -- DVDM_ID - varchar(15)
3542
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
3543
		    NULL       -- IS_HAS_CHILD - bit
3544
		 )
3545
	END	
3546
	INSERT INTO dbo.PL_PROCESS
3547
					(
3548
					    REQ_ID,
3549
					    PROCESS_ID,
3550
					    CHECKER_ID,
3551
					    APPROVE_DT,
3552
					    PROCESS_DESC,
3553
					    NOTES
3554
					)
3555
					VALUES
3556
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3557
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
3558
						'SEND',
3559
					    @p_TLNAME,        -- CHECKER_ID - varchar(15)
3560
					    GETDATE(), -- APPROVE_DT - datetime
3561
					    N'Nhân viên tạo phiếu và gửi phê duyệt thành công' ,       -- PROCESS_DESC - nvarchar(1000)
3562
					    N'Nhân viên gửi phê duyệt '        -- NOTES - nvarchar(1000)
3563
					 )
3564
	
3565
		IF @@Error <> 0 GOTO ABORT
3566
COMMIT TRANSACTION
3567
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
3568
RETURN '0'
3569
ABORT:
3570
BEGIN
3571
		ROLLBACK TRANSACTION
3572
		SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
3573
		RETURN '-1'
3574
End
3575
¿
3576
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_SendApp]
3577
@p_REQ_ID VARCHAR(20),
3578
@p_PROCESS_ID VARCHAR(20),
3579
@p_TLNAME VARCHAR(20),
3580
@p_MAKER_ID VARCHAR(20)
3581
AS
3582
BEGIN TRANSACTION
3583
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_DT IS NULL OR REQ_DT='')) )
3584
	BEGIN
3585
			ROLLBACK TRANSACTION
3586
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày yêu cầu bắt buộc nhập' ErrorDesc
3587
			RETURN '-1'
3588
	END
3589
	IF((SELECT CONVERT(DATE, REQ_DT, 103) FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID) > CONVERT(DATE, GETDATE(),103))
3590
	BEGIN
3591
			ROLLBACK TRANSACTION
3592
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày yêu cầu mua sắm không được phép lớn hơn ngày hiện tại' ErrorDesc
3593
			RETURN '-1'
3594
	END
3595
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_REASON IS NULL OR REQ_REASON='')) )
3596
	BEGIN
3597
			ROLLBACK TRANSACTION
3598
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Mục đích yêu cầu bắt buộc nhập' ErrorDesc
3599
			RETURN '-1'
3600
	END
3601
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (PL_REQ_ID IS NULL OR PL_REQ_ID='')) )
3602
	BEGIN
3603
			ROLLBACK TRANSACTION
3604
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Tờ trình chủ trương bắt buộc nhập' ErrorDesc
3605
			RETURN '-1'
3606
	END
3607
	IF(NOT EXISTS(SELECT REQ_DOC_ID FROM dbo.TR_REQUEST_DOC_DT WHERE  REQ_DOC_ID=@p_REQ_ID ) )
3608
	BEGIN
3609
			ROLLBACK TRANSACTION
3610
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Chi tiết hàng hóa bắt buộc nhập' ErrorDesc
3611
			RETURN '-1'
3612
	END
3613

    
3614
	--- XOA DATA CU
3615
	DELETE PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID
3616
	-----
3617
	DECLARE @NS_TO_TRINH DECIMAL(18,0), @NS_PYCMS_USE DECIMAL(18,0), @NS_LUY_KE DECIMAL(18,0),@PL_REQ_CODE VARCHAR(50)
3618
	SET @PL_REQ_CODE =(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
3619
	SET @NS_TO_TRINH =(SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
3620
	SET @NS_PYCMS_USE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID)
3621
	SET @NS_LUY_KE =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN 
3622
	(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) AND PROCESS_ID='APPROVE')),0)
3623
	DECLARE @p_PL_REQ_ID VARCHAR(15),@p_REQ_DATE DATETIME
3624
	SELECT @p_PL_REQ_ID=PL_REQ_ID,@p_REQ_DATE=REQ_DT  FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
3625
	--IF( EXISTS(
3626
	--		SELECT Temp.GD_ID FROM (SELECT GD_ID,SUM(TOTAL_AMT) AS TOTAL_AMT_ETM FROM dbo.TR_REQUEST_DOC_DT   WHERE REQ_DOC_ID=@p_REQ_ID
3627
	--		GROUP BY GD_ID) Temp WHERE    TOTAL_AMT_ETM > 
3628
	--		((SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT_APP FROM
3629
	--		(SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
3630
	--		WHERE REQ_ID=@p_PL_REQ_ID
3631
	--		UNION 
3632
	--		SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
3633
	--		WHERE REQ_ID=(SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_PL_REQ_ID) ) TEMP2 WHERE TEMP2.GOODS_ID=Temp.GD_ID
3634
	--		GROUP BY TEMP2.GOODS_ID) - (SELECT ISNULL(SUM(TOTAL_AMT),0) AS TOTAL_AMT_EXE FROM dbo.TR_REQUEST_DOC_DT WHERE GD_ID=Temp.GD_ID AND REQ_DOC_ID IN (SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=@p_PL_REQ_ID AND PROCESS_ID='APPROVE')
3635
	--		GROUP BY GD_ID))))
3636
	--	BEGIN
3637
	--		ROLLBACK TRANSACTION
3638
	--		SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
3639
	--		N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE
3640
	--		+CHAR(10)+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@NS_LUY_KE ,'#,#', 'vi-VN')
3641
	--		+CHAR(10)+N'Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(@NS_TO_TRINH -@NS_LUY_KE ,'#,#', 'vi-VN')
3642
	--		+CHAR(10)+ N'Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(@NS_LUY_KE+@NS_PYCMS_USE -@NS_TO_TRINH ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.'
3643
	--		+CHAR(10) +N'Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm để biết thêm thông tin chi tiêt!' ErrorDesc 
3644
	--		RETURN '0'
3645
	--	END
3646
	-- LUCTV: 05-12-2020: KHAI BAO CURSOR DE  KIEM TRA TONG HAN MUC SU DUNG PYC LINK TỚI TỜ TRÌNH
3647
	-- LẤY SUM TỜ TRÌNH CHA
3648
	DECLARE @SUM_TO_TRINH_CHINH DECIMAL(18) =0, @SUM_TO_TRINH_CON DECIMAL(18,0), @SUM_PYC_LUY_KE DECIMAL(18,0), @PYCMS_CODE_LIST VARCHAR(100)
3649
	SET @SUM_TO_TRINH_CHINH =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM  PL_REQUEST_DOC_DT WHERE REQ_ID =@p_PL_REQ_ID)
3650
	-- LẤY SUM TỜ TRÌNH CON
3651
	SET @SUM_TO_TRINH_CON =(SELECT ISNULL(SUM(TOTAL_AMT),0) FROM  PL_REQUEST_DOC_DT WHERE REQ_ID IN (SELECT REQ_ID FROM PL_REQUEST_DOC WHERE REQ_PARENT_ID =@p_PL_REQ_ID))
3652
	---
3653
	SET @SUM_PYC_LUY_KE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID 
3654
							IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN  ('U','A')) 
3655
							AND REQ_DOC_ID <> @p_REQ_ID)   
3656
	IF(ISNULL(@SUM_TO_TRINH_CHINH,0) + ISNULL(@SUM_TO_TRINH_CON,0) <@SUM_PYC_LUY_KE+@NS_PYCMS_USE)
3657
	BEGIN
3658
	ROLLBACK TRANSACTION
3659
			SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN  ('U','A')
3660
			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
3661
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
3662
			N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE
3663
			+CHAR(10)+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@SUM_PYC_LUY_KE ,'#,#', 'vi-VN')
3664
			+CHAR(10)+N'Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0) -@SUM_PYC_LUY_KE ,'#,#', 'vi-VN')
3665
			+CHAR(10)+ N'Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(ISNULL(@SUM_PYC_LUY_KE,0)+@NS_PYCMS_USE -(ISNULL(@SUM_TO_TRINH_CHINH,0)+ ISNULL(@SUM_TO_TRINH_CON,0)) ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.'
3666
			+CHAR(10) +N'Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm số: '+ISNULL(@PYCMS_CODE_LIST,'')+N' để biết thêm thông tin chi tiêt!' ErrorDesc 
3667
			RETURN '0'
3668
	END
3669
	-- KHAI BÁO CURRS0R ĐỂ CHECK LŨY KẾ TỪNG HẠNG MỤC
3670
	DECLARE @PL_DT_ID VARCHAR(15), @SUM_@PL_DT_ID  DECIMAL(18,0), @INDEX INT =0, @TOTAL_AMT_DETAIL DECIMAL(18,0), @REMAIN_AMT DECIMAL(18,0), @AMT_PL_DT DECIMAL(18,0), @AMT_PL_DT_EX DECIMAL(18,0)
3671
	DECLARE CURS CURSOR FOR SELECT PL_REQDT_ID, TOTAL_AMT  FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID
3672
		OPEN CURS
3673
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
3674
			WHILE @@FETCH_STATUS = 0
3675
			BEGIN
3676
				SET @INDEX = @INDEX +1
3677
				-- KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
3678
				--IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADVANCE_ID)=0)
3679

    
3680
				SET @SUM_@PL_DT_ID =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@p_PL_REQ_ID AND AUTH_STATUS  IN ('U','A')) 
3681
										     AND PL_REQDT_ID =@PL_DT_ID)
3682
				SET @AMT_PL_DT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID)
3683
				SET @REMAIN_AMT = ISNULL(@AMT_PL_DT,0) -ISNULL(@SUM_@PL_DT_ID,0)
3684
				--SET @SUM_@PL_DT_ID = ISNULL(@SUM_@PL_DT_ID,0)+ISNULL(@TOTAL_AMT_DETAIL,0)
3685
				SET @AMT_PL_DT_EX =(SELECT SUM (TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID  =@p_REQ_ID AND PL_REQDT_ID =@PL_DT_ID)
3686
										     --AND PL_REQDT_ID =@PL_DT_ID)
3687
				--PRINT @SUM_@PL_DT_ID
3688
				IF(ISNULL(@SUM_@PL_DT_ID,0)+ ISNULL(@AMT_PL_DT_EX,0) >  @AMT_PL_DT)
3689
				--IF(1<2)
3690
				BEGIN
3691
					ROLLBACK TRANSACTION
3692
					SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Ngân sách sử dụng của hạng mục: '+
3693
					(SELECT ISNULL(DESCRIPTION,'') FROM PL_REQUEST_DOC_DT WHERE REQDT_ID =@PL_DT_ID) +N' đã vượt quá số tiền trình chủ trương.'
3694
					+CHAR(10)+N'Số tiền đã gửi phê duyệt thành công trong những PUR khác: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) ,'#,#', 'vi-VN')
3695
					+CHAR(10)+ N'Số tiền còn lại có thể sử dụng: '+ CASE WHEN @REMAIN_AMT >0 THEN FORMAT(ISNULL(@REMAIN_AMT,0) ,'#,#', 'vi-VN') ELSE '0.00' END
3696
					--+CHAR(10)+N'Số tiền vượt hạn mức: '+ FORMAT(ISNULL(@SUM_@PL_DT_ID,0) +ISNULL(@TOTAL_AMT_DETAIL,0) -  (@AMT_PL_DT) ,'#,#', 'vi-VN') 
3697
					ErrorDesc
3698
					RETURN '-1'
3699
				END
3700
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET PAY_AMT = ISNULL(PAY_AMT,0) + ISNULL(@AMT_PAY,0.00) +ISNULL(@AMT_REVERT,0.00) WHERE REQ_PAY_ID =@PAY_ADVANCE_ID
3701
				-- SO SÁNH TỔNG BREAK DOWN TỪ 1 HẠNG MỤC
3702
				--IF(SELECT SUM())
3703
			FETCH NEXT FROM CURS INTO @PL_DT_ID,@TOTAL_AMT_DETAIL
3704
		END
3705
		CLOSE CURS
3706
		DEALLOCATE CURS
3707
	--: HẾT ĐOẠN BỔ SUNG CỦA LỰCTV
3708
	--IF(EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
3709
	--IF(EXISTS(SELECT REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
3710
	--	BEGIN
3711
	--		ROLLBACK TRANSACTION
3712
	--		SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa theo tờ trình: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
3713
	--		RETURN '0'
3714
	--END
3715
	IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
3716
		BEGIN
3717
			ROLLBACK TRANSACTION
3718
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
3719
			RETURN '0'
3720
	END
3721
	IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND (REQ_DT IS NULL OR REQ_DT ='')))
3722
		BEGIN
3723
			ROLLBACK TRANSACTION
3724
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa mua sắm thực tế: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
3725
			RETURN '0'
3726
	END
3727
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
3728
	@BRANCH_CREATE_TYPE VARCHAR(10)
3729

    
3730
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
3731

    
3732
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
3733
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
3734
	-- KIEM TRA XEM CO CAP PHE DUYET HAY KHONG
3735
	IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
3736
	BEGIN
3737
		UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN' WHERE REQ_ID=@p_REQ_ID
3738
		INSERT INTO dbo.PL_REQUEST_PROCESS
3739
		(
3740
		    REQ_ID,
3741
		    PROCESS_ID,
3742
		    STATUS,
3743
		    ROLE_USER,
3744
		    BRANCH_ID,
3745
			DEP_ID,
3746
		    CHECKER_ID,
3747
		    APPROVE_DT,
3748
		    PARENT_PROCESS_ID,
3749
		    IS_LEAF,
3750
		    COST_ID,
3751
		    DVDM_ID,
3752
		    NOTES,
3753
		    IS_HAS_CHILD
3754
		)
3755
		VALUES
3756
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3757
		    'SIGN',        -- PROCESS_ID - varchar(10)
3758
		    'C',        -- STATUS - varchar(5)
3759
		    (SELECT RoleName FROM TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)),  -- ROLE_USER - varchar(50)
3760
		    @BRANCH_CREATE,  
3761
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
3762
		    '',        -- CHECKER_ID - varchar(15)
3763
		    NULL,      -- APPROVE_DT - datetime
3764
		    '',        -- PARENT_PROCESS_ID - varchar(10)
3765
		    'N',        -- IS_LEAF - varchar(1)
3766
		    '',        -- COST_ID - varchar(15)
3767
		    '',        -- DVDM_ID - varchar(15)
3768
		    N'Chờ cấp phê duyệt trung gian xác nhận phiếu',       -- NOTES - nvarchar(500)
3769
		    NULL       -- IS_HAS_CHILD - bit
3770
		 )
3771
	END
3772
	ELSE
3773
	BEGIN
3774
	--IF(@BRANCH_CREATE_TYPE='PGD')
3775
	--	SET @BRANCH_CREATE=(SELECT FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
3776
	
3777
	UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
3778
	INSERT INTO dbo.PL_REQUEST_PROCESS
3779
		(
3780
		    REQ_ID,
3781
		    PROCESS_ID,
3782
		    STATUS,
3783
		    ROLE_USER,
3784
		    BRANCH_ID,
3785
			DEP_ID,
3786
		    CHECKER_ID,
3787
		    APPROVE_DT,
3788
		    PARENT_PROCESS_ID,
3789
		    IS_LEAF,
3790
		    COST_ID,
3791
		    DVDM_ID,
3792
		    NOTES,
3793
		    IS_HAS_CHILD
3794
		)
3795
		VALUES
3796
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3797
		    'APPNEW',        -- PROCESS_ID - varchar(10)
3798
		    'C',        -- STATUS - varchar(5)
3799
		    'GDDV',        -- ROLE_USER - varchar(50)
3800
		    @BRANCH_CREATE,  
3801
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
3802
		    '',        -- CHECKER_ID - varchar(15)
3803
		    NULL,      -- APPROVE_DT - datetime
3804
		    '',        -- PARENT_PROCESS_ID - varchar(10)
3805
		    'N',        -- IS_LEAF - varchar(1)
3806
		    '',        -- COST_ID - varchar(15)
3807
		    '',        -- DVDM_ID - varchar(15)
3808
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
3809
		    NULL       -- IS_HAS_CHILD - bit
3810
		 )
3811
	END	
3812
	INSERT INTO dbo.PL_PROCESS
3813
					(
3814
					    REQ_ID,
3815
					    PROCESS_ID,
3816
					    CHECKER_ID,
3817
					    APPROVE_DT,
3818
					    PROCESS_DESC,
3819
					    NOTES
3820
					)
3821
					VALUES
3822
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3823
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
3824
						'SEND',
3825
					    @p_TLNAME,        -- CHECKER_ID - varchar(15)
3826
					    GETDATE(), -- APPROVE_DT - datetime
3827
					    N'Nhân viên tạo phiếu và gửi phê duyệt thành công' ,       -- PROCESS_DESC - nvarchar(1000)
3828
					    N'Nhân viên gửi phê duyệt '        -- NOTES - nvarchar(1000)
3829
					 )
3830
	
3831
		IF @@Error <> 0 GOTO ABORT
3832
COMMIT TRANSACTION
3833
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
3834
RETURN '0'
3835
ABORT:
3836
BEGIN
3837
		ROLLBACK TRANSACTION
3838
		SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
3839
		RETURN '-1'
3840
End