Project

General

Profile

TR_REQ_ADVANCE_PAYMENT_INS.txt

Luc Tran Van, 04/27/2022 10:55 AM

 
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_PAY_AMT DECIMAL(18,0)= NULL,
43
@p_RECIVER_MONEY VARCHAR(15) = NULL,
44
@p_IS_PERIOD VARCHAR(5) = NULL,
45
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
46
--doanptt 19/01/2022
47
@p_XMP_TEMP XML = NULL,
48
@p_XMP_CUS XML = NULL,
49
@p_XMP_PAY_ATTACH XML = NULL,
50
@p_XMP_PAY_INVOICE XML = NULL,
51
@p_XMP_ADVANCE_DT_2 XML = NULL,
52
@p_XMP_PAY_SCHEDULE XML = NULL,
53
@p_XMP_PAY_PERIOD XML = NULL,
54
@p_XMP_PAY_METHOD XML = NULL,
55
@p_XMP_PAY_BUDGET XML = NULL,
56
@p_XMP_ADVANCE_DT XML = NULL
57
AS
58
--Validation is here
59
/*
60
DECLARE @ERRORSYS NVARCHAR(15) = '' 
61
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
62
	 SET @ERRORSYS = ''
63
IF @ERRORSYS <> '' 
64
BEGIN
65
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
66
	RETURN '0'
67
END 
68
*/
69
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
70
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
71
	--BEGIN
72
	--	SET @ERRORSYS = 'ASSC-00005'
73
	--	SELECT ErrorCode Result, '' COLLECT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
74
	--	RETURN '0'
75
	--END
76
	IF(@p_REQ_TYPE ='I')
77
	BEGIN
78
		DECLARE @AMT_AD_PAY DECIMAL(18,0) =0
79
		DECLARE @AMT_AD_PAY_BACK DECIMAL(18,0) =0
80
		DECLARE @AMT_AD_PAY_REMAIN DECIMAL(18,0) =0
81
		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')
82
		SET @AMT_AD_PAY_BACK = (SELECT SUM(D.AMT_USE) +SUM(D.AMT_REVERT) - SUM (D.AMT_ADD)
83
					FROM TR_REQ_PAYMENT_DT D
84
					LEFT JOIN TR_REQ_ADVANCE_PAYMENT X ON D.PAY_ADV_ID = X.REQ_PAY_ID  AND D.AUTH_STATUS_KT ='A'
85
					WHERE X.REF_ID =@p_REF_ID)
86
	 SET @AMT_AD_PAY_REMAIN =ISNULL(@AMT_AD_PAY,0) -ISNULL(@AMT_AD_PAY_BACK,0)
87
	 SET @p_REQ_TEMP_AMT =ISNULL(@AMT_AD_PAY_REMAIN,0)
88
	 END
89
BEGIN TRANSACTION
90
	-- LUCTV 17H51 BO SUNG LAY SO TIEN DA TAM UNG CUA NHAN VIEN --
91
		--SET @AMT_DO =(SELECT * FROM [dbo].TR_RE)
92
	--THIEUVQ 281119---
93
		DECLARE @REC_DEBIT_AUTO VARCHAR(15),@ROLE_KI_NHAY VARCHAR(50)
94
		SET @REC_DEBIT_AUTO =(SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID = @p_REF_ID)
95
		
96

    
97

    
98

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

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

    
114

    
115

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

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

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