Project

General

Profile

stored_advacne_ins.txt

Luc Tran Van, 03/30/2022 02:44 PM

 
1

    
2

    
3

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

    
98

    
99

    
100
-- doanptt 19/01/2022 Khai báo lưới danh sách 
101
DECLARE @hdocTemp INT, @hdocCus INT, @hdocPayAtach INT, @hdocPayInvoice INT, @hdocPayAcvanceDT2 INT, 
102
@hdocPaySchedule INT, @hdocPayPeriod INT, @hdocPayMethod INT, @hdocPayBudget INT, @hdocPayAcvanceDT INT
103

    
104
		EXEC sp_xml_preparedocument @hdocTemp OUTPUT, @p_XMP_TEMP;
105
		EXEC sp_xml_preparedocument @hdocCus OUTPUT, @p_XMP_CUS;
106
		EXEC sp_xml_preparedocument @hdocPayAtach OUTPUT, @p_XMP_PAY_ATTACH;
107
		--EXEC sp_xml_preparedocument @hdocPayInvoice OUTPUT, @p_XMP_PAY_INVOICE;
108
		EXEC sp_xml_preparedocument @hdocPayAcvanceDT2 OUTPUT, @p_XMP_ADVANCE_DT_2;
109
		EXEC sp_xml_preparedocument @hdocPaySchedule OUTPUT, @p_XMP_PAY_SCHEDULE;
110
		EXEC sp_xml_preparedocument @hdocPayAcvanceDT OUTPUT, @p_XMP_ADVANCE_DT;
111
		EXEC sp_xml_preparedocument @hdocPayPeriod OUTPUT, @p_XMP_PAY_PERIOD;
112
		EXEC sp_xml_preparedocument @hdocPayMethod OUTPUT, @p_XMP_PAY_METHOD;
113
		EXEC sp_xml_preparedocument @hdocPayBudget OUTPUT, @p_XMP_PAY_BUDGET;
114

    
115

    
116

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

    
459
				SET @INDEX_PAY_METHOD = @INDEX_PAY_METHOD + 1;
460
						---------------------------start validate ------------------------------
461
						IF(@p_TYPE_FUNCTION ='SEND' AND (@ACC_NO IS NULL OR @ACC_NO = ''))
462
						BEGIN
463
							ROLLBACK TRANSACTION
464
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Lưới phương thức thanh toán, dòng ' + CAST(@INDEX_PAY_METHOD AS NVARCHAR(255)) + N': Số tài khoản không được để trống'  ErrorDesc
465
							RETURN '-1'
466
						END
467
						-----------------------------end validate ----------------------------
468
				IF(@REQ_PAY_TYPE <>'1')
469
				BEGIN
470
					SET @ISSUED_DT = NULL
471
				END
472
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
473
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
474
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
475
				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,
476
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
477
				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,'',
478
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
479
			IF @@error<>0 GOTO ABORT;
480
			FETCH NEXT FROM XmlDataMethod 
481
			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
482
			END
483
			CLOSE XmlDataMethod;
484
			DEALLOCATE XmlDataMethod
485
		----END INSERT PHƯƠNG THỨC THANH TOÁN
486
		----INSERT VAO BANG DS KHACH HANG
487
			DECLARE XmlDataCus CURSOR FOR
488
			SELECT *
489
			FROM
490
			OPENXML(@hdocCus, '/Root/XmlDataCus', 2)
491
			WITH(CUST_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,2),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
492
			OPEN XmlDataCus;
493
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
494
			print @CUST_ID;
495
				WHILE @@fetch_status=0 
496
				BEGIN
497
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
498
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
499
				--- END KHAI BAO CURSOR
500
				IF @@error<>0 GOTO ABORT;
501
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
502
				END
503
				CLOSE XmlDataCus;
504
				DEALLOCATE XmlDataCus;
505
		----END
506
			-- HANG MUC CHI PHI VA NGAN SACH
507
			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)
508
			DECLARE XmlDataGood CURSOR FOR
509
			SELECT *
510
			FROM
511
			OPENXML(@hdocPayBudget, '/Root/XmlDataGood',2) 
512
			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)
513
			OPEN XmlDataGood
514
			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
515
			WHILE @@fetch_status=0 BEGIN
516
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
517
				SET @INDEX_NS = @INDEX_NS +1
518
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
519
				--IF(@p_TYPE_FUNCTION ='SEND')
520
				--BEGIN
521
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
522
				--BEGIN
523
				--		ROLLBACK TRANSACTION
524
				--		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
525
				--		RETURN '-1'
526
				--END
527
				--END
528
				IF(@p_TYPE_FUNCTION ='SEND')
529
				BEGIN
530
				IF(ISNULL(@AMT_EXE,0) =0)
531
				BEGIN
532
					ROLLBACK TRANSACTION
533
						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
534
						RETURN '-1'
535
				END
536
				IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
537
				BEGIN
538
						ROLLBACK TRANSACTION
539
						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
540
						RETURN '-1'
541
				END		
542
			END
543
				DECLARE @p_BUDGET_ID VARCHAR(15);
544
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
545
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
546
				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) 
547
				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)
548
			IF @@error<>0 GOTO ABORT;
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
			END;
551
		CLOSE XmlDataGood;
552
		DEALLOCATE XmlDataGood;
553
		--- END INSERT NGAN SACH
554
		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)
555
		DECLARE XmlAttach CURSOR FOR
556
		SELECT *
557
		FROM
558
		OPENXML(@hdocPayAtach, '/Root/XmlAttach',2) 
559
		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))
560
		OPEN XmlAttach
561
		--INSERT CHUNG TU DINH KEM
562
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
563
				WHILE @@fetch_status=0 
564
				BEGIN
565
					IF (@REF_DT='')
566
					BEGIN
567
						SET @REF_DT = NULL
568
					END
569
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
570
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
571
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
572
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
573
				IF @@error<>0 GOTO ABORT;
574
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
575
				END
576
				CLOSE XmlAttach;
577
				DEALLOCATE XmlAttach;
578
		----END
579
		--- BAT DAU VALIDATE
580
		IF(@p_TYPE_FUNCTION ='SEND')
581
		BEGIN
582
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
583
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
584
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
585
			BEGIN
586
				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)
587
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
588
				BEGIN
589
					ROLLBACK TRANSACTION
590
					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
591
					RETURN '-1'
592
				END
593
			END
594
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
595
			BEGIN
596
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
597
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
598
				BEGIN
599
					ROLLBACK TRANSACTION
600
					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
601
					RETURN '-1'
602
				END
603
			END
604
			ELSE
605
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
606
			BEGIN
607
				ROLLBACK TRANSACTION
608
				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
609
				RETURN '-1'
610
			END
611
			
612
		END
613
		----END
614
		--- INSERT SẴN VÀO BẢNG TR_REQUEST_PROCESS
615
			IF(@p_REQ_TYPE ='I')
616
			BEGIN
617
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))
618
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
619
				BEGIN
620
					--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'
621
					IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06908%' OR DEP_CODE ='0690605') AND DEP_ID =@p_DEP_ID)
622
					BEGIN
623
						-- KHOI TAI CHINH SE KHONG CO PTGD NUA MA CHI CO KDK - LUCTV 29032021
624
						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'
625
						--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'
626
					END
627
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE (DEP_CODE LIKE '%06910%' OR DEP_CODE ='0690405') AND DEP_ID =@p_DEP_ID)
628
					BEGIN
629
						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'
630
					END
631
					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)
632
					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) 
633
					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)
634
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%799%' AND DEP_ID =@p_DEP_ID)
635
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%899%' AND DEP_ID =@p_DEP_ID))
636
					BEGIN
637
						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')
638
					END
639
					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)
640
					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) 
641
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
642
					BEGIN
643
						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'
644
					END
645
					ELSE
646
					BEGIN
647
						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'
648
					END
649
				END
650
				ELSE
651
				BEGIN
652
					IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
653
					BEGIN
654
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
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 =@p_BRANCH_CREATE AND ROLE_ID ='GDDV'
656
						--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'
657
					END
658
					ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
659
					BEGIN
660
						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'
661
						--AND BRANCH_ID =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)AND BRANCH_ID = @p_BRANCH_CREATE
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'
663
					END
664
				END
665
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
666
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
667
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
668
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A ORDER BY A.AMT ASC
669
				OPEN CUR_PR
670
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
671
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
672
				BEGIN								
673
					SET @INDEX= @INDEX+1
674
					IF @INDEX = @SL_ROLE
675
						SET @ISLEAF = 'Y'
676
					ELSE
677
						SET @ISLEAF = 'N'
678
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
679

    
680
					IF(@INDEX=1 )
681
					BEGIN		
682
						SET @PARENT_ID = NULL
683
						SET @STATUS = 'C'							
684
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
685
					END				
686
					ELSE 
687
					BEGIN
688
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
689
						SET @STATUS = 'U'
690
					END
691
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
692
						BEGIN
693
							INSERT INTO dbo.PL_REQUEST_PROCESS
694
							(
695
								REQ_ID,
696
								PROCESS_ID,
697
								STATUS,
698
								ROLE_USER,
699
								BRANCH_ID,
700
								CHECKER_ID,
701
								APPROVE_DT,
702
								PARENT_PROCESS_ID,
703
								IS_LEAF, COST_ID, DVDM_ID, NOTES
704
							)
705
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
706
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
707
							IF(@ROLE_ID <> 'TKTGD' AND @ROLE_ID <> 'TKHDQT')
708
							BEGIN
709
								BREAK;
710
							END
711
						END
712
						ELSE
713
							INSERT INTO PL_REQUEST_PROCESS (
714
								REQ_ID,
715
								PROCESS_ID,
716
								STATUS,
717
								ROLE_USER,
718
								BRANCH_ID,
719
								CHECKER_ID,
720
								APPROVE_DT,
721
								PARENT_PROCESS_ID,
722
								IS_LEAF, COST_ID, DVDM_ID, NOTES
723
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
724
					--END
725
					
726
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
727
				END
728
				CLOSE CUR_PR
729
				DEALLOCATE CUR_PR
730
			END
731
			--- CAP NHAT THANG CUOI CUNG LA Y
732
			--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)
733
		COMMIT TRANSACTION
734
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
735
		BEGIN
736
				--ROLLBACK TRANSACTION
737
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
738
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
739
				--INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
740
				--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')
741
				--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
742
				--RETURN '4'
743
				DECLARE @SUM_TEMP_PAY DECIMAL, @SUM_PAY DECIMAL
744
				IF (@p_REQ_TYPE ='I')
745
				BEGIN
746
					SET @SUM_TEMP_PAY = (SELECT SUM(REQ_AMT*ISNULL(RATE,1)) 
747
					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')
748
					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')
749
					UPDATE TR_REQ_ADVANCE_PAYMENT SET REQ_TEMP_AMT =ISNULL(@SUM_TEMP_PAY,0) -ISNULL(@SUM_PAY,0),
750
					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'
751
				END
752
				IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
753
				BEGIN
754
				DECLARE @BRANCH_TYPE_CR VARCHAR(15)
755
				SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
756
				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')
757
				BEGIN
758
					DECLARE @USER_TP VARCHAR(15) =''
759
					--SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID 
760
					--		AND (RoleName IN ('GDDV','TPTC','TC','KTT') OR RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='GDDV')))
761
					IF(@USER_TP IS NULL OR @USER_TP ='')
762
					BEGIN
763
						SET @USER_TP = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE SECUR_CODE =@p_DEP_ID 
764
							AND (RoleName IN ('GDDV','TPTC','TC','KTT')))
765
					END
766
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
767
				END
768
				--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')
769
				--BEGIN
770
				--	DECLARE @USER_TPGD VARCHAR(15) =''
771
				--	SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
772
				--	--SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND (RoleName IN ('TPGD') OR
773
				--	--RoleName IN (SELECT ROLE_OLD FROM TL_SYS_ROLE_MAPPING WHERE ROLE_NEW ='TPGD')))
774
				--	IF(@USER_TPGD IS NULL OR @USER_TPGD ='')
775
				--	BEGIN
776
				--		SET @USER_TPGD = (SELECT TOP 1 TLNANME FROM TL_USER_V2 WHERE TLSUBBRID =@p_BRANCH_CREATE 
777
				--			AND RoleName ='TPGD')
778
				--	END
779
				--	UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
780
				--END
781
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
782
				BEGIN
783
					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
784
					RETURN '-1'
785
				END
786
				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')
787
				BEGIN
788
					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
789
					RETURN '-1'
790
				END
791
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
792
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
793
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='GDDV' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PGD'
794
				UPDATE PL_REQUEST_PROCESS SET ROLE_USER ='TPGD' WHERE REQ_ID =@p_REQ_PAY_ID AND ROLE_USER ='PPGD'
795
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
796
				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')
797
				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))
798
				BEGIN
799
					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
800
					RETURN '4'
801
				END
802
				ELSE
803
				BEGIN
804
					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
805
					RETURN '4'
806
				END
807
			END
808
		END
809
		-- FIX PHONG HO LOI LIEN QUAN DEN VIEC TAI KHOAN TAM UNG BI SAI
810
		DECLARE  @REQ_PAY_ID varchar(15), @l_REF_ID varchar(15)
811
		DECLARE cursorProduct CURSOR LOCAL FOR
812
		SELECT REQ_PAY_ID,REF_ID FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_TYPE ='I'
813
		Open cursorProduct
814
		FETCH NEXT FROM cursorProduct INTO @REQ_PAY_ID, @l_REF_ID
815
		WHILE @@FETCH_STATUS = 0
816
		BEGIN
817
		   UPDATE TR_REQ_ADVANCE_PAYMENT SET RECEIVER_DEBIT =(SELECT TOP 1 ISNULL(ACC_NUM,'') FROM CM_ACCOUNT_PAY WHERE REF_ID =@l_REF_ID AND ACC_TYPE ='ADV_PAY' ) WHERE REQ_PAY_ID =@REQ_PAY_ID
818
		FETCH NEXT FROM cursorProduct INTO  @REQ_PAY_ID, @l_REF_ID
819
		END
820
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc
821
		RETURN '0'
822
ABORT:
823
BEGIN
824
		ROLLBACK TRANSACTION
825
		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
826
		RETURN '-1'
827
End