Project

General

Profile

1.8 TAM UNG INS.txt

Luc Tran Van, 03/16/2021 03:59 PM

 
1

    
2
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Ins]
3
@p_REQ_PAY_ID	varchar(15)= NULL,
4
@p_REQ_PAY_CODE	varchar(50)	= NULL,
5
@p_REQ_DT VARCHAR(10)= NULL,
6
@p_BRANCH_ID	varchar(15)	= NULL,
7
@p_DEP_ID	varchar(15)	= NULL,
8
@p_REQ_REASON	nvarchar(MAX)	= NULL,
9
@p_REQ_TYPE	varchar(15)	= NULL,
10
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
11
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
12
@p_REF_ID	varchar(15)	= NULL,
13
@p_RECEIVER_PO	nvarchar(250)	= NULL,
14
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
15
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
16
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
17
@p_REQ_AMT	decimal(18, 0)	= NULL,
18
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
19
@p_MAKER_ID	varchar(15)	= NULL,
20
@p_CREATE_DT	varchar(25)	= NULL,
21
@p_EDITOR_ID	varchar(15)	= NULL,
22
@p_AUTH_STATUS	varchar(1)	= NULL,
23
@p_CHECKER_ID	varchar(15)	= NULL,
24
@p_APPROVE_DT	varchar(25)	= NULL,
25
@p_CREATE_DT_KT	varchar(25)	= NULL,
26
@p_MAKER_ID_KT	varchar(15)	= NULL,
27
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
28
@p_CHECKER_ID_KT	varchar(1)	= NULL,
29
@p_APPROVE_DT_KT  varchar(25)= null,
30
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
31
@p_BRANCH_CREATE	varchar(15)	= NULL,
32
@p_NOTES	varchar(15)	= NULL,
33
@p_RECORD_STATUS	varchar(1)	= NULL,
34
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
35
@p_TRANSFER_DT	varchar(25)	= NULL,
36
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
37
@p_PROCESS	varchar(15)	= NULL,
38
@p_PAY_PHASE VARCHAR(15)= NULL,
39
@p_DVDM_ID VARCHAR(15) = NULL,
40
@p_RATE DECIMAL(18,0)= NULL,
41
@p_RECIVER_MONEY VARCHAR(15) = NULL,
42
@p_IS_PERIOD VARCHAR(5) = NULL,
43
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
44
@p_XMP_TEMP XML = NULL
45
AS
46
--Validation is here
47
/*
48
DECLARE @ERRORSYS NVARCHAR(15) = '' 
49
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
50
	 SET @ERRORSYS = ''
51
IF @ERRORSYS <> '' 
52
BEGIN
53
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
54
	RETURN '0'
55
END 
56
*/
57
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
58
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
59
	--BEGIN
60
	--	SET @ERRORSYS = 'ASSC-00005'
61
	--	SELECT ErrorCode Result, '' COLLECT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
62
	--	RETURN '0'
63
	--END
64
	IF(@p_REQ_TYPE ='I')
65
	BEGIN
66
		DECLARE @AMT_AD_PAY DECIMAL(18,0) =0
67
		DECLARE @AMT_AD_PAY_BACK DECIMAL(18,0) =0
68
		DECLARE @AMT_AD_PAY_REMAIN DECIMAL(18,0) =0
69
		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')
70
		SET @AMT_AD_PAY_BACK = (SELECT SUM(D.AMT_USE) +SUM(D.AMT_REVERT) - SUM (D.AMT_ADD)
71
					FROM TR_REQ_PAYMENT_DT D
72
					LEFT JOIN TR_REQ_ADVANCE_PAYMENT X ON D.PAY_ADV_ID = X.REQ_PAY_ID  AND D.AUTH_STATUS_KT ='A'
73
					WHERE X.REF_ID =@p_REF_ID)
74
	 SET @AMT_AD_PAY_REMAIN =ISNULL(@AMT_AD_PAY,0) -ISNULL(@AMT_AD_PAY_BACK,0)
75
	 SET @p_REQ_TEMP_AMT =ISNULL(@AMT_AD_PAY_REMAIN,0)
76
	 END
77
BEGIN TRANSACTION
78
	-- LUCTV 17H51 BO SUNG LAY SO TIEN DA TAM UNG CUA NHAN VIEN --
79
		--SET @AMT_DO =(SELECT * FROM [dbo].TR_RE)
80
	--THIEUVQ 281119---
81
		DECLARE @REC_DEBIT_AUTO VARCHAR(15),@ROLE_KI_NHAY VARCHAR(50)
82
		SET @REC_DEBIT_AUTO =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID = @p_REF_ID)
83
		--IF (@p_REQ_TYPE='I')
84
		--BEGIN
85
		--	--SET @p_REF_ID = @p_MAKER_ID
86
		--	--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT))
87
		--	--BEGIN
88
		--	--	SET @p_RECEIVER_DEBIT = @p_RECEIVER_DEBIT+''
89
		--	--END
90
		--	--ELSE
91
		--	--BEGIN
92
		--	--	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT AND REF_ID != @p_REF_ID ) AND @p_TYPE_FUNCTION ='SEND')
93
		--	--	BEGIN
94
		--	--		SET @p_RECEIVER_DEBIT =(SELECT ACC_NUM FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT)
95
		--	--	END
96
		--	--END
97
		--	IF(@p_RECEIVER_DEBIT IS NOT NULL AND @p_RECEIVER_DEBIT <>'')
98
		--	BEGIN
99
		--		IF(@REC_DEBIT_AUTO IS NOT NULL AND @REC_DEBIT_AUTO <>''  AND @REC_DEBIT_AUTO <> @p_RECEIVER_DEBIT)
100
		--		BEGIN
101
		--			SET @p_RECEIVER_DEBIT =@REC_DEBIT_AUTO
102
		--		END
103
		--		--IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID <> @p_REF_ID AND ACC_NUM =@p_RECEIVER_DEBIT))
104
		--		--BEGIN
105
		--		--	ROLLBACK TRANSACTION
106
		--		--	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
107
		--		--	RETURN '-1'
108
		--		--END
109
		--	END
110
		--	ELSE
111
		--	BEGIN
112
		--		SET @p_RECEIVER_DEBIT =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) 
113
		--	END
114

    
115
		--END
116
		EXEC [dbo].[ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '',@p_REQ_TYPE, @p_REQ_PAY_CODE out
117
	--END--
118
		IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
119
		BEGIN
120
			ROLLBACK TRANSACTION
121
			SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc
122
			RETURN '-1'
123
		END
124
		IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT ='') AND @p_TYPE_FUNCTION ='SEND')
125
		BEGIN
126
			ROLLBACK TRANSACTION
127
			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
128
			RETURN '-1'
129
		END
130
		IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE  = @p_REQ_PAY_CODE )
131
		BEGIN
132
			ROLLBACK TRANSACTION
133
			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
134
			RETURN '-1'
135
		END
136
		IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
137
		BEGIN
138
				ROLLBACK TRANSACTION
139
				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
140
				RETURN '-1'
141
		END
142
		-- START 19-11-2019
143
		-- LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU UAT- KIEM TRA NEU DOT THANH TOAN CHUA CO THI KHONG DUOC THEM MOI
144
		--IF(@p_REQ_TYPE='P' AND (@p_PAY_PHASE IS NULL OR @p_PAY_PHASE =''))
145
		--BEGIN
146
		--	ROLLBACK TRANSACTION
147
		--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Đợt thanh toán không được phép để trống' ErrorDesc
148
		--	RETURN '-1'
149
		--END
150
		---- NEU THANH TOAN XU LY NO THI NHAN VIEN NHAN TIEN TAM UNG KHONG DUOC PHEP TRONG
151
		--IF(@p_REQ_TYPE='D' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
152
		--BEGIN
153
		--	ROLLBACK TRANSACTION
154
		--	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
155
		--	RETURN '-1'
156
		--END
157
		-- SO TIEN THANH TOÁN PHAI LON HON KHONG
158
		IF(@p_REQ_AMT <=0)
159
		BEGIN
160
			ROLLBACK TRANSACTION
161
			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
162
			RETURN '-1'
163
		END
164
		-----
165
		---- KIEM TRA NEU CHUA CHON KHOI PHE DUYET THI TU DONG CHUYEN VÊ KHOI TAI CHINH
166
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
167
		--BEGIN
168
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
169
		--END
170
		--
171
		--KIEM TRA NEU TAI KHOAN NHAN VIEN TAM UNG NEU CHUA TON TAI TRONG HE THONG THI BAO LOI
172
		--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
173
		--BEGIN
174
		--	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')
175
		--END
176
		--ELSE
177
		--BEGIN
178
		--	IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
179
		--	BEGIN
180
		--		ROLLBACK TRANSACTION
181
		--		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
182
		--		RETURN '-1'
183
		--	END
184
		--END
185
		
186
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
187
		--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
188
		--BEGIN
189
		--	ROLLBACK TRANSACTION
190
		--	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
191
		--	RETURN '-1'
192
		--END
193
		--DECLARE @ROLE_KI_NHAY VARCHAR(50)
194
		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')
195
		BEGIN
196
				ROLLBACK TRANSACTION
197
				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
198
				RETURN '-1'
199
		END
200
		SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
201
		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'))
202
		BEGIN
203
		PRINT @ROLE_KI_NHAY
204
		END
205
		ELSE
206
		BEGIN
207
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
208
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
209
		BEGIN
210
				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))
211
		END
212
		END
213
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
214
		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')
215
		BEGIN
216
			ROLLBACK TRANSACTION
217
			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
218
			RETURN '-1'
219
		END
220
		EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_PAMENT', @p_REQ_PAY_ID out
221
		IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT
222
		INSERT INTO [dbo].[TR_REQ_ADVANCE_PAYMENT]
223
           ([REQ_PAY_ID]
224
           ,[REQ_PAY_CODE]
225
           ,[BRANCH_ID],[REQ_DT],
226
           [DEP_ID]
227
           ,[REQ_REASON]
228
           ,[REQ_TYPE],REQ_ENTRIES,
229
            [REQ_DESCRIPTION]
230
           ,REF_ID,
231
			RECEIVER_PO, RECEIVER_DEBIT
232
           ,[REQ_PAY_TYPE]
233
           ,[REQ_TYPE_CURRENCY]
234
           ,[REQ_AMT]
235
           ,[REQ_TEMP_AMT]
236
           ,[MAKER_ID]
237
           ,[CREATE_DT]
238
           ,[EDITOR_ID]
239
           ,[AUTH_STATUS]
240
           ,[CHECKER_ID]
241
           ,[APPROVE_DT]
242
           ,[CREATE_DT_KT]
243
           ,[MAKER_ID_KT]
244
           ,[AUTH_STATUS_KT]
245
           ,[CHECKER_ID_KT]
246
		   ,[APPROVE_DT_KT]
247
           ,[CONFIRM_NOTES]
248
           ,[BRANCH_CREATE]
249
           ,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS,PAY_PHASE,DVDM_ID,RATE,RECIVER_MONEY,IS_PERIOD)
250
			VALUES
251
           (@p_REQ_PAY_ID,
252
			@p_REQ_PAY_CODE,
253
			@p_BRANCH_ID,CONVERT(DATE,GETDATE(),103),
254
			@p_DEP_ID,
255
			@p_REQ_REASON,
256
			@p_REQ_TYPE,
257
			@P_REQ_ENTRIES,
258
			@p_REQ_DESCRIPTION,
259
			@p_REF_ID,
260
			@p_RECEIVER_PO,
261
			@p_RECEIVER_DEBIT,
262
			@p_REQ_PAY_TYPE,
263
			@p_REQ_TYPE_CURRENCY,
264
			@p_REQ_AMT,
265
			@p_REQ_TEMP_AMT,
266
			@p_MAKER_ID,
267
			GETDATE(),
268
			@p_EDITOR_ID,
269
			'E',
270
			NULL,
271
			NULL,
272
			NULL,
273
			NULL,
274
			NULL,
275
			NULL,
276
			NULL,
277
			NULL,
278
			@p_BRANCH_CREATE,
279
			@p_NOTES,'1',
280
			@p_TRANSFER_MAKER,
281
			NULL,
282
			@p_TRASFER_USER_RECIVE,
283
			@p_PROCESS,@p_PAY_PHASE,@p_DVDM_ID,@p_RATE,@p_RECIVER_MONEY,@p_IS_PERIOD)
284
			IF @@Error <> 0 GOTO ABORT
285
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
286
			DECLARE @hdoc INT
287
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
288
			
289
			-- KIEM TRA NEU TAM UNG THANH TOAN
290
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
291
			BEGIN
292
				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),
293
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
294
				@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),
295
				@AMT_PAY_REAL DECIMAL(18,2), @IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15)
296
				DECLARE @TYPE_COST VARCHAR(5) , @FR_LEVEL INT  ,@TO_LEVEL INT
297
				DECLARE XmlDataPO CURSOR FOR
298
				SELECT *
299
				FROM
300
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
301
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
302
				OPEN XmlDataPO;
303
				DECLARE @INDEX_PO INT =0
304
				SET @INDEX_PO = 0
305
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
306
				WHILE @@fetch_status=0 
307
				BEGIN
308
					SET @INDEX_PO = @INDEX_PO +1
309
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
310
					--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))
311
					--BEGIN
312
					--	ROLLBACK TRANSACTION
313
					--	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
314
					--	RETURN '-1'
315
					--END
316
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
317
					--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)))
318
					--BEGIN
319
					--	ROLLBACK TRANSACTION
320
					--	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
321
					--	RETURN '-1'
322
					--END
323
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
324
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
325
					IF(@p_TYPE_FUNCTION ='SEND')
326
					BEGIN
327
							
328
				
329
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
330
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
331
					BEGIN
332
						ROLLBACK TRANSACTION
333
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
334
						(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
335
						RETURN '-1'
336
					END
337
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
338
					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))
339
					BEGIN
340
						ROLLBACK TRANSACTION
341
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
342
						(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
343
						RETURN '-1'
344
					END
345
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
346
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
347
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
348
					BEGIN
349
						ROLLBACK TRANSACTION
350
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
351
						(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
352
						RETURN '-1'
353
					END
354
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
355
					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))
356
					BEGIN
357
						ROLLBACK TRANSACTION
358
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
359
						(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
360
						RETURN '-1'
361
					END
362
					END
363
					DECLARE @REQ_PAYDTID VARCHAR(15);
364
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
365
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
366
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
367
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
368
				IF @@error<>0 GOTO ABORT;
369
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
370
				END
371
				CLOSE XmlDataPO;
372
				DEALLOCATE XmlDataPO;
373
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
374
				DECLARE XmlDataSchedule CURSOR FOR
375
				SELECT *
376
				FROM
377
				OPENXML(@hdoc, 'Root/XmlDataSchedule',2)
378
				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),
379
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
380
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
381
				OPEN XmlDataSchedule
382
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
383
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
384
				WHILE @@fetch_status=0 
385
				BEGIN
386
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
387
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
388
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
389
					INSERT INTO TR_REQ_PAY_SCHEDULE(
390
					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,
391
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE,AMT_PAY_REAL)
392
					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,
393
					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)
394
				--- END KHAI BAO CURSOR
395
				IF @@error<>0 GOTO ABORT;
396
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
397
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
398
				END
399
				CLOSE XmlDataSchedule;
400
				DEALLOCATE XmlDataSchedule;
401
			END
402
		--- END TẠM ỨNG THANH TOÁN
403
		--- TẠM ỨNG HĐ ĐỊNH KỲ
404
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
405
		BEGIN
406
				
407
				DECLARE XmlDataPO CURSOR FOR
408
				SELECT *
409
				FROM
410
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
411
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
412
				OPEN XmlDataPO;
413
				SET @INDEX_PO = 0
414
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
415
				WHILE @@fetch_status=0 
416
				BEGIN
417
					SET @INDEX_PO = @INDEX_PO +1
418
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
419
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
420
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
421
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
422
					(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
423
				IF @@error<>0 GOTO ABORT;
424
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
425
				END
426
				CLOSE XmlDataPO;
427
				DEALLOCATE XmlDataPO;
428
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
429
			----------------------------
430
			--INSERT FROM PERIOD	
431
				DECLARE XmlDataPeriod CURSOR FOR
432
				SELECT *
433
				FROM
434
				OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)
435
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
436
				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))
437
				OPEN XmlDataPeriod;
438
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
439
				@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)
440
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
441
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
442
				WHILE @@fetch_status=0 
443
				BEGIN
444
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
445
					IF(@p_TYPE_FUNCTION ='SEND')
446
					BEGIN
447
					
448
						IF(EXISTS(SELECT CONTRACT_ID 
449
						FROM TR_CONTRACT 
450
						WHERE CONTRACT_ID = @REF_ID
451
						AND IS_CLOSED='Y' ))
452
						BEGIN
453
							ROLLBACK TRANSACTION
454
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Tạm ứng hợp đồng định kì đã đóng' ErrorDesc
455
							RETURN '-1'
456
						END
457

    
458
					
459
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0  )
460
					BEGIN
461
						ROLLBACK TRANSACTION
462
						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
463
						RETURN '-1'
464
					END
465
					END
466
					DECLARE @PERIOD_ID VARCHAR(15);
467
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
468
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
469
					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)
470
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
471
				@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)
472
			IF @@error<>0 GOTO ABORT;
473
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
474
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
475
			END
476
			CLOSE XmlDataPeriod;
477
			DEALLOCATE XmlDataPeriod;
478
			-- VALIDATE SO TIEN
479
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
480
			--BEGIN
481
			--	ROLLBACK TRANSACTION
482
			--	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
483
			--	RETURN '-1'
484
			--END
485
			----
486
		END
487
		---- END TẠM ỨNG HỢP ĐỒNG ĐỊNH KÌ
488
		--- INSERT PHƯƠNG THỨC THANH TOÁN
489
		----MethodCursor
490
			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),
491
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(200), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CHECK_IN VARCHAR(15)
492
			DECLARE XmlDataMethod CURSOR FOR
493
			SELECT *
494
			FROM
495
			OPENXML(@hdoc, 'Root/XmlDataMethod',2)
496
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2),REQ_PAY_TYPE varchar(1),
497
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), 
498
			ACC_NAME NVARCHAR(200), ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
499
			OPEN XmlDataMethod
500
			FETCH NEXT FROM XmlDataMethod 
501
			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
502
			WHILE @@fetch_status=0 
503
			BEGIN
504
				IF(@REQ_PAY_TYPE <>'1')
505
				BEGIN
506
					SET @ISSUED_DT = NULL
507
				END
508
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
509
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
510
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
511
				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,
512
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
513
				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,'',
514
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
515
			IF @@error<>0 GOTO ABORT;
516
			FETCH NEXT FROM XmlDataMethod 
517
			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
518
			END
519
			CLOSE XmlDataMethod;
520
			DEALLOCATE XmlDataMethod
521
		----END INSERT PHƯƠNG THỨC THANH TOÁN
522
		----INSERT VAO BANG DS KHACH HANG
523
			DECLARE XmlDataCus CURSOR FOR
524
			SELECT *
525
			FROM
526
			OPENXML(@hdoc, '/Root/XmlDataCus', 2)
527
			WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
528
			OPEN XmlDataCus;
529
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
530
				WHILE @@fetch_status=0 
531
				BEGIN		
532
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
533
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
534
				--- END KHAI BAO CURSOR
535
				IF @@error<>0 GOTO ABORT;
536
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
537
				END
538
				CLOSE XmlDataCus;
539
				DEALLOCATE XmlDataCus;
540
		----END
541
			-- HANG MUC CHI PHI VA NGAN SACH
542
			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)
543
			DECLARE XmlDataGood CURSOR FOR
544
			SELECT *
545
			FROM
546
			OPENXML(@hdoc, 'Root/XmlDataGood',2) 
547
			WITH(TRADE_ID varchar(15),GD_ID varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2),AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),REASON NVARCHAR(1000),TYPE_COST VARCHAR(5) , FR_LEVEL INT  ,TO_LEVEL INT)
548
			OPEN XmlDataGood
549
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL
550
			WHILE @@fetch_status=0 BEGIN
551
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
552
				SET @INDEX_NS = @INDEX_NS +1
553
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
554
				--IF(@p_TYPE_FUNCTION ='SEND')
555
				--BEGIN
556
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
557
				--BEGIN
558
				--		ROLLBACK TRANSACTION
559
				--		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
560
				--		RETURN '-1'
561
				--END
562
				--END
563
				IF(@p_TYPE_FUNCTION ='SEND')
564
				BEGIN
565
				IF(ISNULL(@AMT_EXE,0) =0)
566
				BEGIN
567
					ROLLBACK TRANSACTION
568
						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
569
						RETURN '-1'
570
				END
571
				IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
572
				BEGIN
573
						ROLLBACK TRANSACTION
574
						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
575
						RETURN '-1'
576
				END		
577
			END
578
				DECLARE @p_BUDGET_ID VARCHAR(15);
579
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
580
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
581
				INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO, AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST, FR_LEVEL,TO_LEVEL) 
582
				VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO, @AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(),@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL)
583
			IF @@error<>0 GOTO ABORT;
584
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL
585
			END;
586
		CLOSE XmlDataGood;
587
		DEALLOCATE XmlDataGood;
588
		--- END INSERT NGAN SACH
589
		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)
590
		DECLARE XmlAttach CURSOR FOR
591
		SELECT *
592
		FROM
593
		OPENXML(@hdoc, 'Root/XmlAttach',2) 
594
		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))
595
		OPEN XmlAttach
596
		--INSERT CHUNG TU DINH KEM
597
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
598
				WHILE @@fetch_status=0 
599
				BEGIN
600
					IF (@REF_DT='')
601
					BEGIN
602
						SET @REF_DT = NULL
603
					END
604
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
605
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
606
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
607
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
608
				IF @@error<>0 GOTO ABORT;
609
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
610
				END
611
				CLOSE XmlAttach;
612
				DEALLOCATE XmlAttach;
613
		----END
614
		--- BAT DAU VALIDATE
615
		IF(@p_TYPE_FUNCTION ='SEND')
616
		BEGIN
617
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
618
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
619
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
620
			BEGIN
621
				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)
622
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
623
				BEGIN
624
					ROLLBACK TRANSACTION
625
					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
626
					RETURN '-1'
627
				END
628
			END
629
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
630
			BEGIN
631
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
632
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
633
				BEGIN
634
					ROLLBACK TRANSACTION
635
					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
636
					RETURN '-1'
637
				END
638
			END
639
			ELSE
640
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
641
			BEGIN
642
				ROLLBACK TRANSACTION
643
				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
644
				RETURN '-1'
645
			END
646
			
647
		END
648
		----END
649
		--- INSERT SẴN VÀO BẢNG TR_REQUEST_PROCESS
650
			IF(@p_REQ_TYPE ='I')
651
			BEGIN
652
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))
653
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
654
				BEGIN
655
					--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'
656
					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)
657
					BEGIN
658
						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'
659
					END
660
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
661
					BEGIN
662
						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'
663
					END
664
					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)
665
					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) 
666
					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))
667
					BEGIN
668
						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')
669
					END
670
					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)
671
					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) 
672
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
673
					BEGIN
674
						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'
675
					END
676
					ELSE
677
					BEGIN
678
						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'
679
					END
680
				END
681
				ELSE
682
				BEGIN
683
					IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
684
					BEGIN
685
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
686
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='GDDV'
687
						--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'
688
					END
689
					ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
690
					BEGIN
691
						INSERT INTO @tmp  SELECT A.ROLE_ID, A.BRANCH_ID,A.LIMIT_VALUE FROM TL_SYSROLE_LIMIT A WHERE A.LIMIT_TYPE='ADV_PAY' AND BRANCH_ID =@p_BRANCH_CREATE AND ROLE_ID ='TPGD'
692
						--AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)AND BRANCH_ID = @p_BRANCH_CREATE
693
						--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'
694
					END
695
				END
696
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
697
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
698
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
699
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A ORDER BY A.AMT ASC
700
				OPEN CUR_PR
701
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
702
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
703
				BEGIN								
704
					SET @INDEX= @INDEX+1
705
					IF @INDEX = @SL_ROLE
706
						SET @ISLEAF = 'Y'
707
					ELSE
708
						SET @ISLEAF = 'N'
709
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
710

    
711
					IF(@INDEX=1 )
712
					BEGIN		
713
						SET @PARENT_ID = NULL
714
						SET @STATUS = 'C'							
715
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
716
					END				
717
					ELSE 
718
					BEGIN
719
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
720
						SET @STATUS = 'U'
721
					END
722
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
723
						BEGIN
724
							INSERT INTO dbo.PL_REQUEST_PROCESS
725
							(
726
								REQ_ID,
727
								PROCESS_ID,
728
								STATUS,
729
								ROLE_USER,
730
								BRANCH_ID,
731
								CHECKER_ID,
732
								APPROVE_DT,
733
								PARENT_PROCESS_ID,
734
								IS_LEAF, COST_ID, DVDM_ID, NOTES
735
							)
736
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
737
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
738
							--IF(@ROLE_ID <> 'TKTGD' AND @ROLE_ID <> 'TKHDQT')
739
							--BEGIN
740
								BREAK;
741
							--END
742
						END
743
						ELSE
744
							INSERT INTO PL_REQUEST_PROCESS (
745
								REQ_ID,
746
								PROCESS_ID,
747
								STATUS,
748
								ROLE_USER,
749
								BRANCH_ID,
750
								CHECKER_ID,
751
								APPROVE_DT,
752
								PARENT_PROCESS_ID,
753
								IS_LEAF, COST_ID, DVDM_ID, NOTES
754
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
755
					--END
756
					
757
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
758
				END
759
				CLOSE CUR_PR
760
				DEALLOCATE CUR_PR
761
			END
762
			--- CAP NHAT THANG CUOI CUNG LA Y
763
			--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)
764
		COMMIT TRANSACTION
765
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
766
		BEGIN
767
				--ROLLBACK TRANSACTION
768
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
769
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
770
				--INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
771
				--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')
772
				--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
773
				--RETURN '4'
774
				DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
775
				IF (@p_REQ_TYPE ='I')
776
				BEGIN
777
					SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) 
778
					FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_TYPE=@p_REQ_TYPE AND REF_ID =@p_REF_ID AND AUTH_STATUS ='A' AND  REQ_TYPE ='I')
779
					SET  @SUM_PAY = (SELECT SUM (ISNULL(PAY_AMT,0)) FROM TR_REQ_ADVANCE_PAYMENT WHERE REF_ID =@p_REF_ID  AND AUTH_STATUS_KT ='A' AND REQ_TYPE ='I')
780
					UPDATE TR_REQ_ADVANCE_PAYMENT SET REQ_TEMP_AMT =ISNULL(@SUM_TEMP_PAY,0) -ISNULL(@SUM_PAY,0),
781
					RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE  REQ_PAY_ID =@p_REQ_PAY_ID AND REQ_TYPE ='I'
782
				END
783
				IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
784
				BEGIN
785
				DECLARE @BRANCH_TYPE_CR VARCHAR(15)
786
				SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
787
				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')
788
				BEGIN
789
					DECLARE @USER_TP VARCHAR(15) =''
790
					--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID 
791
					--		AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
792
					IF(@USER_TP IS NULL OR @USER_TP ='')
793
					BEGIN
794
						SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID 
795
							AND (RoleName IN ('GDDV','TPTC','TC','KTT')))
796
					END
797
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
798
				END
799
				--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')
800
				--BEGIN
801
				--	DECLARE @USER_TPGD VARCHAR(15) =''
802
				--	SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
803
				--	--SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD') OR
804
				--	--RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='TPGD')))
805
				--	IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
806
				--	BEGIN
807
				--		SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE 
808
				--			AND RoleName ='TPGD')
809
				--	END
810
				--	UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
811
				--END
812
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
813
				BEGIN
814
					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
815
					RETURN '-1'
816
				END
817
				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')
818
				BEGIN
819
					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
820
					RETURN '-1'
821
				END
822
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
823
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
824
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='GDDV' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PGD'
825
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='TPGD' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PPGD'
826
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
827
				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')
828
				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))
829
				BEGIN
830
					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
831
					RETURN '4'
832
				END
833
				ELSE
834
				BEGIN
835
					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
836
					RETURN '4'
837
				END
838
			END
839
		END
840
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, '' ErrorDesc
841
		RETURN '0'
842
ABORT:
843
BEGIN
844
		ROLLBACK TRANSACTION
845
		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
846
		RETURN '-1'
847
End