Project

General

Profile

08012021 FILE 5.0 CONFIG AMS.txt

Luc Tran Van, 01/08/2021 12:06 PM

 
1

    
2

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

    
116
		--END
117
		EXEC [dbo].[ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '',@p_REQ_TYPE, @p_REQ_PAY_CODE out
118
	--END--
119
		IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
120
		BEGIN
121
			ROLLBACK TRANSACTION
122
			SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc
123
			RETURN '-1'
124
		END
125
		IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT ='') AND @p_TYPE_FUNCTION ='SEND')
126
		BEGIN
127
			ROLLBACK TRANSACTION
128
			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
129
			RETURN '-1'
130
		END
131
		IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE  = @p_REQ_PAY_CODE )
132
		BEGIN
133
			ROLLBACK TRANSACTION
134
			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
135
			RETURN '-1'
136
		END
137
		IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
138
		BEGIN
139
				ROLLBACK TRANSACTION
140
				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
141
				RETURN '-1'
142
		END
143
		-- START 19-11-2019
144
		-- LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU UAT- KIEM TRA NEU DOT THANH TOAN CHUA CO THI KHONG DUOC THEM MOI
145
		--IF(@p_REQ_TYPE='P' AND (@p_PAY_PHASE IS NULL OR @p_PAY_PHASE =''))
146
		--BEGIN
147
		--	ROLLBACK TRANSACTION
148
		--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Đợt thanh toán không được phép để trống' ErrorDesc
149
		--	RETURN '-1'
150
		--END
151
		---- NEU THANH TOAN XU LY NO THI NHAN VIEN NHAN TIEN TAM UNG KHONG DUOC PHEP TRONG
152
		--IF(@p_REQ_TYPE='D' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
153
		--BEGIN
154
		--	ROLLBACK TRANSACTION
155
		--	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
156
		--	RETURN '-1'
157
		--END
158
		-- SO TIEN THANH TOÁN PHAI LON HON KHONG
159
		IF(@p_REQ_AMT <=0)
160
		BEGIN
161
			ROLLBACK TRANSACTION
162
			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
163
			RETURN '-1'
164
		END
165
		-----
166
		---- KIEM TRA NEU CHUA CHON KHOI PHE DUYET THI TU DONG CHUYEN VÊ KHOI TAI CHINH
167
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
168
		--BEGIN
169
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
170
		--END
171
		--
172
		--KIEM TRA NEU TAI KHOAN NHAN VIEN TAM UNG NEU CHUA TON TAI TRONG HE THONG THI BAO LOI
173
		--IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
174
		--BEGIN
175
		--	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')
176
		--END
177
		--ELSE
178
		--BEGIN
179
		--	IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
180
		--	BEGIN
181
		--		ROLLBACK TRANSACTION
182
		--		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
183
		--		RETURN '-1'
184
		--	END
185
		--END
186
		
187
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
188
		--IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC'))
189
		--BEGIN
190
		--	ROLLBACK TRANSACTION
191
		--	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
192
		--	RETURN '-1'
193
		--END
194
		--DECLARE @ROLE_KI_NHAY VARCHAR(50)
195
		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')
196
		BEGIN
197
				ROLLBACK TRANSACTION
198
				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
199
				RETURN '-1'
200
		END
201
		SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
202
		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'))
203
		BEGIN
204
		PRINT @ROLE_KI_NHAY
205
		END
206
		ELSE
207
		BEGIN
208
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
209
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
210
		BEGIN
211
				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))
212
		END
213
		END
214
		--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
215
		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')
216
		BEGIN
217
			ROLLBACK TRANSACTION
218
			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
219
			RETURN '-1'
220
		END
221
		EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_PAMENT', @p_REQ_PAY_ID out
222
		IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT
223
		INSERT INTO [dbo].[TR_REQ_ADVANCE_PAYMENT]
224
           ([REQ_PAY_ID]
225
           ,[REQ_PAY_CODE]
226
           ,[BRANCH_ID],[REQ_DT],
227
           [DEP_ID]
228
           ,[REQ_REASON]
229
           ,[REQ_TYPE],REQ_ENTRIES,
230
            [REQ_DESCRIPTION]
231
           ,REF_ID,
232
			RECEIVER_PO, RECEIVER_DEBIT
233
           ,[REQ_PAY_TYPE]
234
           ,[REQ_TYPE_CURRENCY]
235
           ,[REQ_AMT]
236
           ,[REQ_TEMP_AMT]
237
           ,[MAKER_ID]
238
           ,[CREATE_DT]
239
           ,[EDITOR_ID]
240
           ,[AUTH_STATUS]
241
           ,[CHECKER_ID]
242
           ,[APPROVE_DT]
243
           ,[CREATE_DT_KT]
244
           ,[MAKER_ID_KT]
245
           ,[AUTH_STATUS_KT]
246
           ,[CHECKER_ID_KT]
247
		   ,[APPROVE_DT_KT]
248
           ,[CONFIRM_NOTES]
249
           ,[BRANCH_CREATE]
250
           ,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS,PAY_PHASE,DVDM_ID,RATE,RECIVER_MONEY,IS_PERIOD)
251
			VALUES
252
           (@p_REQ_PAY_ID,
253
			@p_REQ_PAY_CODE,
254
			@p_BRANCH_ID,CONVERT(DATE,GETDATE(),103),
255
			@p_DEP_ID,
256
			@p_REQ_REASON,
257
			@p_REQ_TYPE,
258
			@P_REQ_ENTRIES,
259
			@p_REQ_DESCRIPTION,
260
			@p_REF_ID,
261
			@p_RECEIVER_PO,
262
			@p_RECEIVER_DEBIT,
263
			@p_REQ_PAY_TYPE,
264
			@p_REQ_TYPE_CURRENCY,
265
			@p_REQ_AMT,
266
			@p_REQ_TEMP_AMT,
267
			@p_MAKER_ID,
268
			GETDATE(),
269
			@p_EDITOR_ID,
270
			'E',
271
			NULL,
272
			NULL,
273
			NULL,
274
			NULL,
275
			NULL,
276
			NULL,
277
			NULL,
278
			NULL,
279
			@p_BRANCH_CREATE,
280
			@p_NOTES,'1',
281
			@p_TRANSFER_MAKER,
282
			NULL,
283
			@p_TRASFER_USER_RECIVE,
284
			@p_PROCESS,@p_PAY_PHASE,@p_DVDM_ID,@p_RATE,@p_RECIVER_MONEY,@p_IS_PERIOD)
285
			IF @@Error <> 0 GOTO ABORT
286
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
287
			DECLARE @hdoc INT
288
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
289
			
290
			-- KIEM TRA NEU TAM UNG THANH TOAN
291
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
292
			BEGIN
293
				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),
294
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
295
				@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),
296
				@AMT_PAY_REAL DECIMAL(18,2), @IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15)
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))
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
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) 
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)
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
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
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'
692
						--AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
693
						AND BRANCH_ID = @p_BRANCH_CREATE
694
						--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'
695
					END
696
				END
697
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
698
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
699
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
700
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A
701
				OPEN CUR_PR
702
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
703
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
704
				BEGIN								
705
					SET @INDEX= @INDEX+1
706
					IF @INDEX = @SL_ROLE
707
						SET @ISLEAF = 'Y'
708
					ELSE
709
						SET @ISLEAF = 'N'
710
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
711

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