Project

General

Profile

CAP NHAT TAM UNG.txt

Luc Tran Van, 07/28/2020 09:48 AM

 
1
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Upd]
2
@p_REQ_PAY_ID	varchar(15)= NULL,
3
@p_REQ_PAY_CODE	varchar(50)	= NULL,
4
@p_REQ_DT VARCHAR(20)= NULL,
5
@p_BRANCH_ID	varchar(15)	= NULL,
6
@p_DEP_ID	varchar(15)	= NULL,
7
@p_REQ_REASON	nvarchar(MAX)	= NULL,
8
@p_REQ_TYPE	varchar(15)	= NULL,
9
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
10
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
11
@p_REF_ID	varchar(15)	= NULL,
12
@p_RECEIVER_PO	nvarchar(250)	= NULL,
13
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
14
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
15
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
16
@p_REQ_AMT	decimal(18, 0)	= NULL,
17
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
18
@p_MAKER_ID	varchar(15)	= NULL,
19
@p_CREATE_DT	varchar(25)	= NULL,
20
@p_EDITOR_ID	varchar(15)	= NULL,
21
@p_AUTH_STATUS	varchar(1)	= NULL,
22
@p_CHECKER_ID	varchar(15)	= NULL,
23
@p_APPROVE_DT	varchar(25)	= NULL,
24
@p_CREATE_DT_KT	varchar(25)	= NULL,
25
@p_MAKER_ID_KT	varchar(15)	= NULL,
26
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
27
@p_CHECKER_ID_KT	varchar(1)	= NULL,
28
@p_APPROVE_DT_KT  varchar(25)= null,
29
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
30
@p_BRANCH_CREATE	varchar(15)	= NULL,
31
@p_NOTES	varchar(15)	= NULL,
32
@p_RECORD_STATUS	varchar(1)	= NULL,
33
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
34
@p_TRANSFER_DT	varchar(25)	= NULL,
35
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
36
@p_PROCESS	varchar(15)	= NULL,
37
@p_PAY_PHASE VARCHAR(15)= NULL,
38
@p_DVDM_ID VARCHAR(15)= NULL,
39
@p_RATE DECIMAL(18,0) =0,
40
@p_RECIVER_MONEY VARCHAR(15)= NULL,
41
@p_XMP_TEMP XML = NULL,
42
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
43
@p_IS_PERIOD VARCHAR(5) = NULL
44
AS
45
--Validation is here
46
/*
47
DECLARE @ERRORSYS NVARCHAR(15) = '' 
48
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
49
	 SET @ERRORSYS = ''
50
IF @ERRORSYS <> '' 
51
BEGIN
52
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
53
	RETURN '0'
54
END 
55
*/
56
	--Luanlt-2019/10/15 Disable Validation
57
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
58
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
59
	--BEGIN
60
	--	SET @ERRORSYS = 'ASSC-00005'
61
	--	SELECT ErrorCode Result, '' REQ_PAY_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
62
	--	RETURN '-1'
63
	--END
64
	DECLARE @BRANCH_TYPE_CR VARCHAR(15)
65
	SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
66
	DECLARE @ACC_NUM VARCHAR(15)
67
	SET @ACC_NUM = (SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)
68
	IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
69
	BEGIN
70
		SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được để trống' ErrorDesc
71
		RETURN '-1'
72
	END
73
	IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
74
	BEGIN
75
		SELECT '-1' Result, '' REQ_PAY_ID, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
76
		RETURN '-1'
77
	END
78
	IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
79
	BEGIN
80
		SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
81
		RETURN '-1'
82
	END
83
	--IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
84
	IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
85
	BEGIN
86
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
87
		RETURN '-1'
88
	END
89
	IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
90
		BEGIN
91
			INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UNG DE HOAT DONG NGHIEP VU')
92
		END
93
	ELSE
94
		BEGIN
95
			IF(@ACC_NUM <>@p_RECEIVER_DEBIT AND @p_REQ_TYPE='I' AND LEN(ISNULL(@ACC_NUM,''))>0)
96
			BEGIN
97
				--ROLLBACK TRANSACTION
98
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
99
				RETURN '-1'
100
			END
101
	END
102
	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM =@p_RECEIVER_DEBIT AND REF_ID!=@p_REF_ID))
103
	BEGIN
104
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng này đã tồn tại trong hệ thống và được gán cho một nhân viên khác' ErrorDesc
105
				RETURN '-1'
106
	END
107
	IF(LEN(ISNULL(@p_RECEIVER_DEBIT,''))>15 AND @p_REQ_TYPE ='I')
108
	BEGIN
109
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng này không được vượt quá 15 kí tự' ErrorDesc
110
				RETURN '-1'
111
	END
112
	-- 19-11-2019 LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU KHI UAT
113
	-- NEU TAM UNG CHO NHA CUNG CAP THI DOT THANH TOAN KHONG DUOC PHEP NULL
114
	-- SO TIEN THANH TOÁN PHAI LON HON KHONG
115
		IF(@p_REQ_AMT <=0)
116
		BEGIN	
117
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
118
			RETURN '-1'
119
		END
120
	 -- END VALIDATE TRONG QUA TRINH TEST UAT
121
		BEGIN TRANSACTION
122
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
123
		--BEGIN
124
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
125
		--END
126
		UPDATE TR_REQ_ADVANCE_PAYMENT SET 
127
		REF_ID = @p_REF_ID,
128
		DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,REQ_DT = CONVERT(DATE,@p_REQ_DT,103),
129
		REQ_AMT = @p_REQ_AMT,
130
		NOTES= @p_NOTES,
131
		REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,RECEIVER_PO =@p_RECEIVER_PO, RECEIVER_DEBIT= @p_RECEIVER_DEBIT,
132
		REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID,REQ_PAY_CODE = @p_REQ_PAY_CODE, PAY_PHASE =@p_PAY_PHASE,
133
		AUTH_STATUS='E', DVDM_ID=@p_DVDM_ID, RATE =@p_RATE,REQ_TYPE_CURRENCY =@p_REQ_TYPE_CURRENCY, RECIVER_MONEY= @p_RECIVER_MONEY, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE,IS_PERIOD =@p_IS_PERIOD
134
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
135
		IF @@Error <> 0 GOTO ABORT
136
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
137
			DECLARE @hdoc INT
138
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
139
			
140
			-- KIEM TRA NEU TAM UNG THANH TOAN
141
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
142
			BEGIN
143
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID=@p_REQ_PAY_ID
144
				DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID=@p_REQ_PAY_ID
145
				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,0),
146
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
147
				@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),
148
				@EMP_ID VARCHAR(15),@AMT_PAY_REAL DECIMAL(18,2),@CHECK_IN VARCHAR(15),@IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000),@REF_TYPE VARCHAR(15)
149
				DECLARE XmlDataPO CURSOR FOR
150
				SELECT *
151
				FROM
152
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
153
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
154
				OPEN XmlDataPO;
155
				DECLARE @INDEX_PO INT =0
156
				SET @INDEX_PO = 0
157
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
158
				WHILE @@fetch_status=0 
159
				BEGIN
160
					SET @INDEX_PO = @INDEX_PO +1
161
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
162
					IF(@p_TYPE_FUNCTION ='SEND')
163
					BEGIN
164
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
165
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
166
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
167
					BEGIN
168
						ROLLBACK TRANSACTION
169
						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ố '+
170
						(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
171
						RETURN '-1'
172
					END
173
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
174
					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))
175
					BEGIN
176
						ROLLBACK TRANSACTION
177
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
178
						(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
179
						RETURN '-1'
180
					END
181
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
182
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
183
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
184
					BEGIN
185
						ROLLBACK TRANSACTION
186
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
187
						(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
188
						RETURN '-1'
189
					END
190
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
191
					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))
192
					BEGIN
193
						ROLLBACK TRANSACTION
194
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
195
						(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
196
						RETURN '-1'
197
					END
198
					--- KIEM TRA XEM PO NAY DUOC THANH TOAN HAY CHUA
199
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED ='Y' )))
200
					BEGIN
201
						ROLLBACK TRANSACTION
202
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
203
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán. Vui lòng hủy bản nháp!' ErrorDesc
204
						RETURN '-1'
205
					END
206
					END
207
					DECLARE @REQ_PAYDTID VARCHAR(15);
208
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
209
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
210
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
211
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
212
				IF @@error<>0 GOTO ABORT;
213
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
214
				END
215
				CLOSE XmlDataPO;
216
				DEALLOCATE XmlDataPO;
217
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
218
				DECLARE XmlDataSchedule CURSOR FOR
219
				SELECT *
220
				FROM
221
				OPENXML(@hdoc, 'Root/XmlDataSchedule',2)
222
				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),
223
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
224
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
225
				OPEN XmlDataSchedule
226
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
227
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
228
				WHILE @@fetch_status=0 
229
				BEGIN
230
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
231
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
232
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
233
					INSERT INTO TR_REQ_PAY_SCHEDULE(
234
					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,
235
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
236
					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,
237
					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)
238
				--- END KHAI BAO CURSOR
239
				IF @@error<>0 GOTO ABORT;
240
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
241
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
242
				END
243
				CLOSE XmlDataSchedule;
244
				DEALLOCATE XmlDataSchedule;
245
			END
246
		--- END TẠM ỨNG THANH TOÁN
247
		---- TẠM ỨNG HĐ ĐỊNH KÌ
248
			IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
249
			BEGIN
250
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID
251
				DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
252
				DECLARE XmlDataPO CURSOR FOR
253
				SELECT *
254
				FROM
255
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
256
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
257
				OPEN XmlDataPO;
258
				SET @INDEX_PO = 0
259
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
260
				WHILE @@fetch_status=0 
261
				BEGIN
262
					SET @INDEX_PO = @INDEX_PO +1
263
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
264
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
265
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
266
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
267
					(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
268
				IF @@error<>0 GOTO ABORT;
269
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
270
				END
271
				CLOSE XmlDataPO;
272
				DEALLOCATE XmlDataPO;
273
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
274
			----------------------------
275
			--INSERT FROM PERIOD	
276
				DECLARE XmlDataPeriod CURSOR FOR
277
				SELECT *
278
				FROM
279
				OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)
280
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
281
				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) )
282
				OPEN XmlDataPeriod;
283
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
284
				@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)
285
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
286
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
287
				WHILE @@fetch_status=0 
288
				BEGIN
289
					
290
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
291
					IF(@p_TYPE_FUNCTION ='SEND')
292
					BEGIN
293
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0)
294
					BEGIN
295
						ROLLBACK TRANSACTION
296
						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
297
						RETURN '-1'
298
					END
299
					END
300
					DECLARE @PERIOD_ID VARCHAR(15);
301
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
302
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
303
					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)
304
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
305
				@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)
306
			IF @@error<>0 GOTO ABORT;
307
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
308
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
309
			END
310
			CLOSE XmlDataPeriod;
311
			DEALLOCATE XmlDataPeriod;
312
			-- VALIDATE SO TIEN
313
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
314
			--BEGIN
315
			--	ROLLBACK TRANSACTION
316
			--	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
317
			--	RETURN '-1'
318
			--END
319
			----
320
			END
321
		---- END TẠM ỨNG HĐ ĐỊNH KÌ
322
		--- INSERT PHƯƠNG THỨC THANH TOÁN
323
		----MethodCursor
324
			DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
325
			DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,0),@REQ_PAY_TYPE varchar(1),
326
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(50), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20)
327
			DECLARE XmlDataMethod CURSOR FOR
328
			SELECT *
329
			FROM
330
			OPENXML(@hdoc, 'Root/XmlDataMethod',2)
331
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,0),REQ_PAY_TYPE varchar(1),
332
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), ACC_NAME NVARCHAR(50), 
333
			ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
334
			OPEN XmlDataMethod
335
			FETCH NEXT FROM XmlDataMethod 
336
			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 
337
			WHILE @@fetch_status=0 
338
			BEGIN
339
				IF(@REQ_PAY_TYPE<>'1')
340
				BEGIN
341
					SET @ISSUED_DT = NULL
342
				END
343
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
344
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
345
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
346
				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,
347
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
348
				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,'',
349
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
350
			IF @@error<>0 GOTO ABORT;
351
			FETCH NEXT FROM XmlDataMethod 
352
			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
353
			END
354
			CLOSE XmlDataMethod;
355
			DEALLOCATE XmlDataMethod
356
		----END INSERT PHƯƠNG THỨC THANH TOÁN
357
		----INSERT VAO BANG DS KHACH HANG
358
			DELETE FROM TR_REQ_ADVANCE_CUS WHERE REQ_PAY_ID = @p_REQ_PAY_ID
359
			DECLARE XmlDataCus CURSOR FOR
360
			SELECT *
361
			FROM
362
			OPENXML(@hdoc, '/Root/XmlDataCus', 2)
363
			WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,0),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
364
			OPEN XmlDataCus;
365
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
366
				WHILE @@fetch_status=0 
367
				BEGIN		
368
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
369
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
370
				--- END KHAI BAO CURSOR
371
				IF @@error<>0 GOTO ABORT;
372
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
373
				END
374
				CLOSE XmlDataCus;
375
				DEALLOCATE XmlDataCus;
376
		----END
377
		-- HANG MUC CHI PHI VA NGAN SACH
378
			DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID
379
			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)
380
			DECLARE XmlDataGood CURSOR FOR
381
			SELECT *
382
			FROM
383
			OPENXML(@hdoc, 'Root/XmlDataGood',2) 
384
			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))
385
			OPEN XmlDataGood
386
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
387
			WHILE @@fetch_status=0 BEGIN
388
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
389
				SET @INDEX_NS = @INDEX_NS +1
390
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
391
				--IF(@p_TYPE_FUNCTION ='SEND')
392
				--BEGIN
393
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
394
				--BEGIN
395
				--		ROLLBACK TRANSACTION
396
				--		SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
397
				--		RETURN '-1'
398
				--END	
399
				--END
400
				DECLARE @p_BUDGET_ID VARCHAR(15);
401
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
402
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
403
				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) 
404
				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)
405
			IF @@error<>0 GOTO ABORT;
406
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
407
			END;
408
		CLOSE XmlDataGood;
409
		DEALLOCATE XmlDataGood;
410
		--- END INSERT NGAN SACH
411
		DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
412
		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)
413
		DECLARE XmlAttach CURSOR FOR
414
		SELECT *
415
		FROM
416
		OPENXML(@hdoc, 'Root/XmlAttach',2) 
417
		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))
418
		OPEN XmlAttach
419
		--INSERT CHUNG TU DINH KEM
420
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
421
				WHILE @@fetch_status=0 
422
				BEGIN
423
					IF (@REF_DT='')
424
					BEGIN
425
						SET @REF_DT = NULL
426
					END
427
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
428
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
429
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
430
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
431
				IF @@error<>0 GOTO ABORT;
432
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
433
				END
434
				CLOSE XmlAttach;
435
				DEALLOCATE XmlAttach;
436
		----END
437
		--- BAT DAU VALIDATE
438
		IF(@p_TYPE_FUNCTION ='SEND')
439
		BEGIN
440
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
441
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
442
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
443
			BEGIN
444
				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)
445
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
446
				BEGIN
447
					ROLLBACK TRANSACTION
448
					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
449
					RETURN '-1'
450
				END
451
			END
452
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
453
			BEGIN
454
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
455
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
456
				BEGIN
457
					ROLLBACK TRANSACTION
458
					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
459
					RETURN '-1'
460
				END
461
			END
462
			ELSE
463
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
464
			BEGIN
465
				ROLLBACK TRANSACTION
466
				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
467
				RETURN '-1'
468
			END
469
			
470
		END
471
		----END
472
		IF(@p_REQ_TYPE ='I')
473
			BEGIN
474
				DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID
475
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))
476
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
477
				BEGIN
478
					--DECLARE @DEP_CODE VARCHAR(15)
479
					--SET @DEP_CODE =(SELECT * FROM CM_DEPARTMENT WHERE DEP_ID =@p_DEP_ID)
480
					IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)
481
					BEGIN
482
						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'
483
					END
484
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
485
					BEGIN
486
						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'
487
					END
488
					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)
489
					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) 
490
					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))
491
					BEGIN
492
						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')
493
					END
494
					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)
495
					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) 
496
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
497
					BEGIN
498
						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'
499
					END
500
					ELSE
501
					BEGIN
502
						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'
503
					END
504
				END
505
				ELSE
506
				BEGIN
507
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
508
					BEGIN
509
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
510
						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
511
						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'
512
				END
513
				ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
514
					BEGIN
515
						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 =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
516
						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'
517
				END
518
				END
519
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
520
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
521
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
522
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A
523
				OPEN CUR_PR
524
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
525
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
526
				BEGIN								
527
					SET @INDEX= @INDEX+1
528
					IF @INDEX = @SL_ROLE
529
						SET @ISLEAF = 'Y'
530
					ELSE
531
						SET @ISLEAF = 'N'
532
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
533

    
534
					IF(@INDEX=1 )
535
					BEGIN		
536
						SET @PARENT_ID = NULL
537
						SET @STATUS = 'C'							
538
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
539
					END				
540
					ELSE 
541
					BEGIN
542
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
543
						SET @STATUS = 'U'
544
					END
545
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
546
						BEGIN
547
							INSERT INTO dbo.PL_REQUEST_PROCESS
548
							(
549
								REQ_ID,
550
								PROCESS_ID,
551
								STATUS,
552
								ROLE_USER,
553
								BRANCH_ID,
554
								CHECKER_ID,
555
								APPROVE_DT,
556
								PARENT_PROCESS_ID,
557
								IS_LEAF, COST_ID, DVDM_ID, NOTES
558
							)
559
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
560
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
561
							BREAK;
562
						END
563
						ELSE
564
							INSERT INTO PL_REQUEST_PROCESS (
565
								REQ_ID,
566
								PROCESS_ID,
567
								STATUS,
568
								ROLE_USER,
569
								BRANCH_ID,
570
								CHECKER_ID,
571
								APPROVE_DT,
572
								PARENT_PROCESS_ID,
573
								IS_LEAF, COST_ID, DVDM_ID, NOTES
574
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
575
					--END
576
					
577
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
578
				END
579
				CLOSE CUR_PR
580
				DEALLOCATE CUR_PR
581
			END
582
COMMIT TRANSACTION
583
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
584
		BEGIN
585
				--ROLLBACK TRANSACTION
586
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
587
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND @BRANCH_TYPE_CR ='HS'  AND @p_REQ_TYPE ='I')
588
				BEGIN
589
					DECLARE @USER_TP VARCHAR(15)
590
					SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('GDDV','TPTC','TC','KTT'))
591
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
592
				END
593
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND @BRANCH_TYPE_CR ='PGD')
594
				BEGIN
595
					DECLARE @USER_TPGD VARCHAR(15)
596
					SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
597
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
598
				END
599
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
600
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
601
				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')
602
				SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
603
				RETURN '4'
604
		END
605
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
606
RETURN '0'
607
ABORT:
608
BEGIN
609
		ROLLBACK TRANSACTION
610
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
611
		RETURN '-1'
612
End
613

    
614

    
615
¿
616

    
617

    
618
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Ins]
619
@p_REQ_PAY_ID	varchar(15)= NULL,
620
@p_REQ_PAY_CODE	varchar(50)	= NULL,
621
@p_REQ_DT VARCHAR(10)= NULL,
622
@p_BRANCH_ID	varchar(15)	= NULL,
623
@p_DEP_ID	varchar(15)	= NULL,
624
@p_REQ_REASON	nvarchar(MAX)	= NULL,
625
@p_REQ_TYPE	varchar(15)	= NULL,
626
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
627
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
628
@p_REF_ID	varchar(15)	= NULL,
629
@p_RECEIVER_PO	nvarchar(250)	= NULL,
630
@p_RECEIVER_DEBIT	nvarchar(250)	= NULL,
631
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
632
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
633
@p_REQ_AMT	decimal(18, 0)	= NULL,
634
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
635
@p_MAKER_ID	varchar(15)	= NULL,
636
@p_CREATE_DT	varchar(25)	= NULL,
637
@p_EDITOR_ID	varchar(15)	= NULL,
638
@p_AUTH_STATUS	varchar(1)	= NULL,
639
@p_CHECKER_ID	varchar(15)	= NULL,
640
@p_APPROVE_DT	varchar(25)	= NULL,
641
@p_CREATE_DT_KT	varchar(25)	= NULL,
642
@p_MAKER_ID_KT	varchar(15)	= NULL,
643
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
644
@p_CHECKER_ID_KT	varchar(1)	= NULL,
645
@p_APPROVE_DT_KT  varchar(25)= null,
646
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
647
@p_BRANCH_CREATE	varchar(15)	= NULL,
648
@p_NOTES	varchar(15)	= NULL,
649
@p_RECORD_STATUS	varchar(1)	= NULL,
650
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
651
@p_TRANSFER_DT	varchar(25)	= NULL,
652
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
653
@p_PROCESS	varchar(15)	= NULL,
654
@p_PAY_PHASE VARCHAR(15)= NULL,
655
@p_DVDM_ID VARCHAR(15) = NULL,
656
@p_RATE DECIMAL(18,0)= NULL,
657
@p_RECIVER_MONEY VARCHAR(15) = NULL,
658
@p_IS_PERIOD VARCHAR(5) = NULL,
659
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
660
@p_XMP_TEMP XML = NULL
661
AS
662
--Validation is here
663
/*
664
DECLARE @ERRORSYS NVARCHAR(15) = '' 
665
  IF ( NOT EXISTS ( SELECT * FROM ASS_COLLECT WHERE ))
666
	 SET @ERRORSYS = ''
667
IF @ERRORSYS <> '' 
668
BEGIN
669
	SELECT ErrorCode Result, ''  CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
670
	RETURN '0'
671
END 
672
*/
673
	--DECLARE @ERRORSYS NVARCHAR(15) = '' 
674
	--IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE REF_ID  = @p_REF_ID )
675
	--BEGIN
676
	--	SET @ERRORSYS = 'ASSC-00005'
677
	--	SELECT ErrorCode Result, '' COLLECT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
678
	--	RETURN '0'
679
	--END
680
	IF(@p_REQ_TYPE ='I')
681
	BEGIN
682
		DECLARE @AMT_AD_PAY DECIMAL(18,0) =0
683
		DECLARE @AMT_AD_PAY_BACK DECIMAL(18,0) =0
684
		DECLARE @AMT_AD_PAY_REMAIN DECIMAL(18,0) =0
685
		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')
686
		SET @AMT_AD_PAY_BACK = (SELECT SUM(D.AMT_USE) +SUM(D.AMT_REVERT) - SUM (D.AMT_ADD)
687
					FROM TR_REQ_PAYMENT_DT D
688
					LEFT JOIN TR_REQ_ADVANCE_PAYMENT X ON D.PAY_ADV_ID = X.REQ_PAY_ID  AND D.AUTH_STATUS_KT ='A'
689
					WHERE X.REF_ID =@p_REF_ID)
690
	 SET @AMT_AD_PAY_REMAIN =ISNULL(@AMT_AD_PAY,0) -ISNULL(@AMT_AD_PAY_BACK,0)
691
	 SET @p_REQ_TEMP_AMT =ISNULL(@AMT_AD_PAY_REMAIN,0)
692
	 END
693
BEGIN TRANSACTION
694
	-- LUCTV 17H51 BO SUNG LAY SO TIEN DA TAM UNG CUA NHAN VIEN --
695
		--SET @AMT_DO =(SELECT * FROM [dbo].TR_RE)
696
	--THIEUVQ 281119---
697
		IF (@p_REQ_TYPE='I')
698
		BEGIN
699
			--SET @p_REF_ID = @p_MAKER_ID
700
			IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT))
701
			BEGIN
702
				SET @p_RECEIVER_DEBIT = @p_RECEIVER_DEBIT+''
703
			END
704
			ELSE
705
			BEGIN
706
				IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT AND REF_ID != @p_REF_ID ) AND @p_TYPE_FUNCTION ='SEND')
707
				BEGIN
708
					SET @p_RECEIVER_DEBIT =(SELECT ACC_NUM FROM CM_ACCOUNT_PAY WHERE ACC_NUM = @p_RECEIVER_DEBIT)
709
				END
710
			END
711
		END
712
		EXEC [dbo].[ADVANCE_CODE_GenKey] 'TR_REQ_ADVANCE_PAYMENT', '',@p_REQ_TYPE, @p_REQ_PAY_CODE out
713
	--END--
714
		IF @p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE =''
715
		BEGIN
716
			ROLLBACK TRANSACTION
717
			SELECT '-1' Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Mã số phiếu không được để trống' ErrorDesc
718
			RETURN '-1'
719
		END
720
		IF (@p_REQ_TYPE='I' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT ='') AND @p_TYPE_FUNCTION ='SEND')
721
		BEGIN
722
			ROLLBACK TRANSACTION
723
			SELECT '-1' Result, '' REQ_PAY_ID, N'Tài khoản nhân viên tạm ứng không được để trống' ErrorDesc
724
			RETURN '-1'
725
		END
726
		IF EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_CODE  = @p_REQ_PAY_CODE )
727
		BEGIN
728
			ROLLBACK TRANSACTION
729
			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
730
			RETURN '-1'
731
		END
732
		-- START 19-11-2019
733
		-- LUCTV BO SUNG VALIDATE TRONG QUA TRINH TEST SAU UAT- KIEM TRA NEU DOT THANH TOAN CHUA CO THI KHONG DUOC THEM MOI
734
		--IF(@p_REQ_TYPE='P' AND (@p_PAY_PHASE IS NULL OR @p_PAY_PHASE =''))
735
		--BEGIN
736
		--	ROLLBACK TRANSACTION
737
		--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Đợt thanh toán không được phép để trống' ErrorDesc
738
		--	RETURN '-1'
739
		--END
740
		---- NEU THANH TOAN XU LY NO THI NHAN VIEN NHAN TIEN TAM UNG KHONG DUOC PHEP TRONG
741
		--IF(@p_REQ_TYPE='D' AND (@p_RECEIVER_DEBIT IS NULL OR @p_RECEIVER_DEBIT =''))
742
		--BEGIN
743
		--	ROLLBACK TRANSACTION
744
		--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Nhân viên nhận tạm ứng không được phép để trống' ErrorDesc
745
		--	RETURN '-1'
746
		--END
747
		-- SO TIEN THANH TOÁN PHAI LON HON KHONG
748
		IF(@p_REQ_AMT <=0)
749
		BEGIN
750
			ROLLBACK TRANSACTION
751
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền tạm ứng phải lớn hơn 0' ErrorDesc
752
			RETURN '-1'
753
		END
754
		-----
755
		---- KIEM TRA NEU CHUA CHON KHOI PHE DUYET THI TU DONG CHUYEN VÊ KHOI TAI CHINH
756
		--IF(@p_DVDM_ID IS NULL OR @p_DVDM_ID ='')
757
		--BEGIN
758
		--	SET @p_DVDM_ID = (SELECT TOP 1 DVDM_ID FROM CM_DVDM WHERE DVDM_NAME ='KHOI TAI CHINH')
759
		--END
760
		--
761
		--KIEM TRA NEU TAI KHOAN NHAN VIEN TAM UNG NEU CHUA TON TAI TRONG HE THONG THI BAO LOI
762
		IF(NOT EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID) AND @p_REQ_TYPE='I')
763
		BEGIN
764
			INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,MAKER_ID,AUTH_STATUS,CREATE_DT,TK_GL,TK_GL_NAME) VALUES (@p_REF_ID,'ADV_PAY',@p_RECEIVER_DEBIT,'TK TAM UNG CUA NHAN VIEN ' +@p_REF_ID,'I',@p_MAKER_ID,'U',GETDATE(),'361200001','TAM UNG DE HOAT DONG NGHIEP VU')
765
		END
766
		ELSE
767
		BEGIN
768
			IF(((SELECT TOP 1 ACC_NUM FROM CM_ACCOUNT_PAY WHERE REF_ID =@p_REF_ID)<>@p_RECEIVER_DEBIT) AND @p_REQ_TYPE='I')
769
			BEGIN
770
				ROLLBACK TRANSACTION
771
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Tài khoản tạm ứng của nhân viên đã tồn tại trong hệ thống! Bạn không được phép chỉnh sửa' ErrorDesc
772
				RETURN '-1'
773
			END
774
		END
775
		EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_PAMENT', @p_REQ_PAY_ID out
776
		IF @p_REQ_PAY_ID='' OR @p_REQ_PAY_ID IS NULL GOTO ABORT
777
		INSERT INTO [dbo].[TR_REQ_ADVANCE_PAYMENT]
778
           ([REQ_PAY_ID]
779
           ,[REQ_PAY_CODE]
780
           ,[BRANCH_ID],[REQ_DT],
781
           [DEP_ID]
782
           ,[REQ_REASON]
783
           ,[REQ_TYPE],REQ_ENTRIES,
784
            [REQ_DESCRIPTION]
785
           ,REF_ID,
786
			RECEIVER_PO, RECEIVER_DEBIT
787
           ,[REQ_PAY_TYPE]
788
           ,[REQ_TYPE_CURRENCY]
789
           ,[REQ_AMT]
790
           ,[REQ_TEMP_AMT]
791
           ,[MAKER_ID]
792
           ,[CREATE_DT]
793
           ,[EDITOR_ID]
794
           ,[AUTH_STATUS]
795
           ,[CHECKER_ID]
796
           ,[APPROVE_DT]
797
           ,[CREATE_DT_KT]
798
           ,[MAKER_ID_KT]
799
           ,[AUTH_STATUS_KT]
800
           ,[CHECKER_ID_KT]
801
		   ,[APPROVE_DT_KT]
802
           ,[CONFIRM_NOTES]
803
           ,[BRANCH_CREATE]
804
           ,[NOTES],RECORD_STATUS,TRANSFER_MAKER,TRANSFER_DT,TRASFER_USER_RECIVE,PROCESS,PAY_PHASE,DVDM_ID,RATE,RECIVER_MONEY,IS_PERIOD)
805
			VALUES
806
           (@p_REQ_PAY_ID,
807
			@p_REQ_PAY_CODE,
808
			@p_BRANCH_ID,CONVERT(DATE,@p_REQ_DT,103),
809
			@p_DEP_ID,
810
			@p_REQ_REASON,
811
			@p_REQ_TYPE,
812
			@P_REQ_ENTRIES,
813
			@p_REQ_DESCRIPTION,
814
			@p_REF_ID,
815
			@p_RECEIVER_PO,
816
			@p_RECEIVER_DEBIT,
817
			@p_REQ_PAY_TYPE,
818
			@p_REQ_TYPE_CURRENCY,
819
			@p_REQ_AMT,
820
			@p_REQ_TEMP_AMT,
821
			@p_MAKER_ID,
822
			GETDATE(),
823
			@p_EDITOR_ID,
824
			'E',
825
			NULL,
826
			NULL,
827
			NULL,
828
			NULL,
829
			NULL,
830
			NULL,
831
			NULL,
832
			NULL,
833
			@p_BRANCH_CREATE,
834
			@p_NOTES,@p_RECORD_STATUS,
835
			@p_TRANSFER_MAKER,
836
			NULL,
837
			@p_TRASFER_USER_RECIVE,
838
			@p_PROCESS,@p_PAY_PHASE,@p_DVDM_ID,@p_RATE,@p_RECIVER_MONEY,@p_IS_PERIOD)
839
			IF @@Error <> 0 GOTO ABORT
840
		--- INSERT VÀO BẢNG DETAIL NÊU TẠM ỨNG LÀ TẠM ỨNG THANH TOÁN
841
			DECLARE @hdoc INT
842
			EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
843
			
844
			-- KIEM TRA NEU TAM UNG THANH TOAN
845
			IF((@p_REQ_TYPE='P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE='D')
846
			BEGIN
847
				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,0),
848
				@AMT_REMAIN_SCHEDULE decimal(18,0),@REQ_AD_DT varchar(20),@PROCESS varchar(15),@PAY_ID VARCHAR(15),
849
				@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),
850
				@AMT_PAY_REAL DECIMAL(18,2), @IS_CLOSED VARCHAR(1)= NULL,@INDEX_NS INT =0,@REASON NVARCHAR(1000), @REF_TYPE VARCHAR(15)
851
				DECLARE XmlDataPO CURSOR FOR
852
				SELECT *
853
				FROM
854
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
855
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
856
				OPEN XmlDataPO;
857
				DECLARE @INDEX_PO INT =0
858
				SET @INDEX_PO = 0
859
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
860
				WHILE @@fetch_status=0 
861
				BEGIN
862
					SET @INDEX_PO = @INDEX_PO +1
863
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
864
					--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))
865
					--BEGIN
866
					--	ROLLBACK TRANSACTION
867
					--	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
868
					--	RETURN '-1'
869
					--END
870
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
871
					--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)))
872
					--BEGIN
873
					--	ROLLBACK TRANSACTION
874
					--	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
875
					--	RETURN '-1'
876
					--END
877
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
878
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
879
					IF(@p_TYPE_FUNCTION ='SEND')
880
					BEGIN
881
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='C' AND REQ_PAY_ID 
882
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
883
					BEGIN
884
						ROLLBACK TRANSACTION
885
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
886
						(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
887
						RETURN '-1'
888
					END
889
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
890
					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))
891
					BEGIN
892
						ROLLBACK TRANSACTION
893
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
894
						(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
895
						RETURN '-1'
896
					END
897
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
898
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND TYPE ='P' AND REQ_PAY_ID 
899
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
900
					BEGIN
901
						ROLLBACK TRANSACTION
902
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
903
						(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
904
						RETURN '-1'
905
					END
906
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
907
					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))
908
					BEGIN
909
						ROLLBACK TRANSACTION
910
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
911
						(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
912
						RETURN '-1'
913
					END
914
					END
915
					DECLARE @REQ_PAYDTID VARCHAR(15);
916
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
917
					IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
918
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
919
					(@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
920
				IF @@error<>0 GOTO ABORT;
921
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
922
				END
923
				CLOSE XmlDataPO;
924
				DEALLOCATE XmlDataPO;
925
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
926
				DECLARE XmlDataSchedule CURSOR FOR
927
				SELECT *
928
				FROM
929
				OPENXML(@hdoc, 'Root/XmlDataSchedule',2)
930
				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),
931
				AMT_REMAIN_SCHEDULE decimal(18,0),REQ_AD_DT varchar(20),PROCESS varchar(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),
932
				REQ_PAY_DESC NVARCHAR(500), REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),AMT_PAY_REAL DECIMAL(18,2))
933
				OPEN XmlDataSchedule
934
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
935
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
936
				WHILE @@fetch_status=0 
937
				BEGIN
938
					DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
939
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
940
					IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
941
					INSERT INTO TR_REQ_PAY_SCHEDULE(
942
					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,
943
					CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE,AMT_PAY_REAL)
944
					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,
945
					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)
946
				--- END KHAI BAO CURSOR
947
				IF @@error<>0 GOTO ABORT;
948
				FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@TERM_PAY,@AMT_PAY_SCHEDULE,@REQ_ADV_ID_SCHE,@AMT_ADVANCE_SCHEDULE,@AMT_PAY_DO,
949
				@AMT_REMAIN_SCHEDULE,@REQ_AD_DT,@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_REAL
950
				END
951
				CLOSE XmlDataSchedule;
952
				DEALLOCATE XmlDataSchedule;
953
			END
954
		--- END TẠM ỨNG THANH TOÁN
955
		--- TẠM ỨNG HĐ ĐỊNH KỲ
956
		IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
957
		BEGIN
958
				
959
				DECLARE XmlDataPO CURSOR FOR
960
				SELECT *
961
				FROM
962
				OPENXML(@hdoc, '/Root/XmlDataPO', 2)
963
				WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
964
				OPEN XmlDataPO;
965
				SET @INDEX_PO = 0
966
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
967
				WHILE @@fetch_status=0 
968
				BEGIN
969
					SET @INDEX_PO = @INDEX_PO +1
970
					DECLARE @REQ_PAYDTID_C VARCHAR(15);
971
					EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_C OUT;
972
					IF @REQ_PAYDTID_C='' OR @REQ_PAYDTID_C IS NULL GOTO ABORT;
973
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) VALUES
974
					(@REQ_PAYDTID_C,@p_REQ_PAY_ID,@REF_ID,'ADV_PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED,@REF_TYPE)
975
				IF @@error<>0 GOTO ABORT;
976
				FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
977
				END
978
				CLOSE XmlDataPO;
979
				DEALLOCATE XmlDataPO;
980
				--- CUSOR DANH SACH LICH THANH TOAN PO - HD	
981
			----------------------------
982
			--INSERT FROM PERIOD	
983
				DECLARE XmlDataPeriod CURSOR FOR
984
				SELECT *
985
				FROM
986
				OPENXML(@hdoc, '/Root/XmlDataPeriod', 2)
987
				WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5),
988
				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))
989
				OPEN XmlDataPeriod;
990
				DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5),
991
				@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)
992
				FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
993
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
994
				WHILE @@fetch_status=0 
995
				BEGIN
996
					-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
997
					IF(@p_TYPE_FUNCTION ='SEND')
998
					BEGIN
999
					IF(@NEW_INDEX <=@OLD_INDEX AND @NEW_INDEX >0 AND @OLD_INDEX >0  )
1000
					BEGIN
1001
						ROLLBACK TRANSACTION
1002
						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
1003
						RETURN '-1'
1004
					END
1005
					END
1006
					DECLARE @PERIOD_ID VARCHAR(15);
1007
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
1008
					IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
1009
					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)
1010
					VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'ADV_PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103),
1011
				@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)
1012
			IF @@error<>0 GOTO ABORT;
1013
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE ,
1014
				@OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,@CURRENCY, @RATE,@FROM_DATE,@TO_DATE,@PAY_PHASE,@REASON_TTDK
1015
			END
1016
			CLOSE XmlDataPeriod;
1017
			DEALLOCATE XmlDataPeriod;
1018
			-- VALIDATE SO TIEN
1019
			--IF(@p_REQ_AMT >= @TOTAL_SCHEDULE_AMT)
1020
			--BEGIN
1021
			--	ROLLBACK TRANSACTION
1022
			--	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
1023
			--	RETURN '-1'
1024
			--END
1025
			----
1026
		END
1027
		---- END TẠM ỨNG HỢP ĐỒNG ĐỊNH KÌ
1028
		--- INSERT PHƯƠNG THỨC THANH TOÁN
1029
		----MethodCursor
1030
			DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,0),@REQ_PAY_TYPE varchar(1),
1031
					@ACC_NO VARCHAR(50), @ACC_NAME NVARCHAR(50), @ISSED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CHECK_IN VARCHAR(15)
1032
			DECLARE XmlDataMethod CURSOR FOR
1033
			SELECT *
1034
			FROM
1035
			OPENXML(@hdoc, 'Root/XmlDataMethod',2)
1036
			WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,0),REQ_PAY_TYPE varchar(1),
1037
			REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),ACC_NO VARCHAR(50), 
1038
			ACC_NAME NVARCHAR(50), ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15),RATE DECIMAL(18,0),CHECK_IN VARCHAR(15))
1039
			OPEN XmlDataMethod
1040
			FETCH NEXT FROM XmlDataMethod 
1041
			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
1042
			WHILE @@fetch_status=0 
1043
			BEGIN
1044
				IF(@REQ_PAY_TYPE <>'1')
1045
				BEGIN
1046
					SET @ISSUED_DT = NULL
1047
				END
1048
				DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
1049
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
1050
				IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
1051
				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,
1052
				CREATE_DT,ACC_NO,ACC_NAME,ISSUED_BY,ISSUED_DT,CURRENCY,RATE,CHECK_IN)
1053
				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,'',
1054
				@p_MAKER_ID,GETDATE(),@ACC_NO,@ACC_NAME,@ISSED_BY, CONVERT(DATE, @ISSUED_DT, 103),@CURRENCY,@RATE,@CHECK_IN)
1055
			IF @@error<>0 GOTO ABORT;
1056
			FETCH NEXT FROM XmlDataMethod 
1057
			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
1058
			END
1059
			CLOSE XmlDataMethod;
1060
			DEALLOCATE XmlDataMethod
1061
		----END INSERT PHƯƠNG THỨC THANH TOÁN
1062
		----INSERT VAO BANG DS KHACH HANG
1063
			DECLARE XmlDataCus CURSOR FOR
1064
			SELECT *
1065
			FROM
1066
			OPENXML(@hdoc, '/Root/XmlDataCus', 2)
1067
			WITH(CUS_ID varchar(15), EMP_ID VARCHAR(15), AMT_PAY_DO DECIMAL(18,0),CURRENCY VARCHAR(15),RATE DECIMAL(18,0))
1068
			OPEN XmlDataCus;
1069
			FETCH NEXT FROM XmlDataCus INTO @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1070
				WHILE @@fetch_status=0 
1071
				BEGIN		
1072
					INSERT INTO TR_REQ_ADVANCE_CUS(REQ_PAY_ID,CUST_ID,EMP_ID,AMT_PAY_DO,CURRENCY,RATE,MAKER_ID,CREATE_DT)
1073
					VALUES (@p_REQ_PAY_ID, @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE,@p_MAKER_ID,GETDATE())
1074
				--- END KHAI BAO CURSOR
1075
				IF @@error<>0 GOTO ABORT;
1076
				FETCH NEXT FROM XmlDataCus INTO  @CUST_ID, @EMP_ID,@AMT_PAY_DO,@CURRENCY,@RATE
1077
				END
1078
				CLOSE XmlDataCus;
1079
				DEALLOCATE XmlDataCus;
1080
		----END
1081
			-- HANG MUC CHI PHI VA NGAN SACH
1082
			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)
1083
			DECLARE XmlDataGood CURSOR FOR
1084
			SELECT *
1085
			FROM
1086
			OPENXML(@hdoc, 'Root/XmlDataGood',2) 
1087
			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))
1088
			OPEN XmlDataGood
1089
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
1090
			WHILE @@fetch_status=0 BEGIN
1091
				--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1092
				SET @INDEX_NS = @INDEX_NS +1
1093
				-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1094
				--IF(@p_TYPE_FUNCTION ='SEND')
1095
				--BEGIN
1096
				--IF((@AMT_EXE  > @AMT_REMAIN_GD))
1097
				--BEGIN
1098
				--		ROLLBACK TRANSACTION
1099
				--		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
1100
				--		RETURN '-1'
1101
				--END
1102
				--END
1103
				DECLARE @p_BUDGET_ID VARCHAR(15);
1104
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
1105
				IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
1106
				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) 
1107
				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)
1108
			IF @@error<>0 GOTO ABORT;
1109
			FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID ,@AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,@RATE,@REASON
1110
			END;
1111
		CLOSE XmlDataGood;
1112
		DEALLOCATE XmlDataGood;
1113
		--- END INSERT NGAN SACH
1114
		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)
1115
		DECLARE XmlAttach CURSOR FOR
1116
		SELECT *
1117
		FROM
1118
		OPENXML(@hdoc, 'Root/XmlAttach',2) 
1119
		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))
1120
		OPEN XmlAttach
1121
		--INSERT CHUNG TU DINH KEM
1122
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
1123
				WHILE @@fetch_status=0 
1124
				BEGIN
1125
					IF (@REF_DT='')
1126
					BEGIN
1127
						SET @REF_DT = NULL
1128
					END
1129
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
1130
					IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
1131
					INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],AMT,REF_DT) VALUES
1132
					(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT, CONVERT(DATE, @REF_DT,103))
1133
				IF @@error<>0 GOTO ABORT;
1134
				FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES_ATT,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT
1135
				END
1136
				CLOSE XmlAttach;
1137
				DEALLOCATE XmlAttach;
1138
		----END
1139
		--- BAT DAU VALIDATE
1140
		IF(@p_TYPE_FUNCTION ='SEND')
1141
		BEGIN
1142
			DECLARE @SUM_PTTT DECIMAL(18,0), @SUM_NS DECIMAL(18,0),@SUM_LICH_TT DECIMAL(18,0)
1143
			SET @SUM_PTTT =(SELECT SUM(TOTAL_AMT * ISNULL(RATE,1)) FROM  TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1144
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID) AND @p_REQ_TYPE ='D')
1145
			BEGIN
1146
				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)
1147
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_LICH_TT,0))
1148
				BEGIN
1149
					ROLLBACK TRANSACTION
1150
					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
1151
					RETURN '-1'
1152
				END
1153
			END
1154
			IF(EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
1155
			BEGIN
1156
				SET @SUM_NS =(SELECT SUM(AMT_EXE * ISNULL(RATE,1)) FROM  TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1157
				IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
1158
				BEGIN
1159
					ROLLBACK TRANSACTION
1160
					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
1161
					RETURN '-1'
1162
				END
1163
			END
1164
			ELSE
1165
			IF(@p_REQ_AMT*ISNULL(@p_RATE,1) != ISNULL(@SUM_PTTT,0))
1166
			BEGIN
1167
				ROLLBACK TRANSACTION
1168
				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
1169
				RETURN '-1'
1170
			END
1171
			
1172
		END
1173
		----END
1174
		--- INSERT SẴN VÀO BẢNG TR_REQUEST_PROCESS
1175
			IF(@p_REQ_TYPE ='I')
1176
			BEGIN
1177
				DECLARE @tmp table(ROLE_ID VARCHAR(25),BRANCH_ID varchar(15),AMT DECIMAL(18,0))
1178
				IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='HS')
1179
				BEGIN
1180
					--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'
1181
					IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06908%' AND DEP_ID =@p_DEP_ID)
1182
					BEGIN
1183
						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'
1184
					END
1185
					ELSE IF EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06910%' AND DEP_ID =@p_DEP_ID)
1186
					BEGIN
1187
						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'
1188
					END
1189
					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)
1190
					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) 
1191
					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))
1192
					BEGIN
1193
						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')
1194
					END
1195
					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)
1196
					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) 
1197
					OR EXISTS(SELECT * FROM CM_DEPARTMENT WHERE DEP_CODE LIKE '%06922%' AND DEP_ID =@p_DEP_ID))
1198
					BEGIN
1199
						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'
1200
					END
1201
					ELSE
1202
					BEGIN
1203
						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'
1204
					END
1205
				END
1206
				ELSE
1207
				BEGIN
1208
					IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='CN')
1209
					BEGIN
1210
						--- BAO GOM DON VI & 3 CAP DUYET CUA HOI SO
1211
						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
1212
						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'
1213
					END
1214
					ELSE IF((SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE) ='PGD')
1215
					BEGIN
1216
						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 =(SELECT FATHER_ID FROM CM_BRANCH WHERE BRANCH_ID= @p_BRANCH_CREATE)
1217
						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'
1218
					END
1219
				END
1220
				DECLARE @ROLE_ID VARCHAR(20), @BRANCH_ID VARCHAR(20), @INDEX INT =0, @SL_ROLE INT =0,@LIMIT_VALUE DECIMAL(18,0)
1221
				SET @SL_ROLE = (SELECT COUNT(*) FROM @tmp)
1222
				DECLARE @ISLEAF VARCHAR(1) = 'Y', @PARENT_ID VARCHAR(10) = '', @STATUS VARCHAR(1) = 'C', @NOTES NVARCHAR(500)
1223
				DECLARE CUR_PR CURSOR FOR  SELECT A.ROLE_ID, A.BRANCH_ID,A.AMT FROM @tmp A
1224
				OPEN CUR_PR
1225
				FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1226
				WHILE @@FETCH_STATUS =0 --AND @STOP=0
1227
				BEGIN								
1228
					SET @INDEX= @INDEX+1
1229
					IF @INDEX = @SL_ROLE
1230
						SET @ISLEAF = 'Y'
1231
					ELSE
1232
						SET @ISLEAF = 'N'
1233
					SET @NOTES = (SELECT N'Đợi '+ ROLE_DESC + N' phê duyệt' FROM TL_SYSROLE WHERE ROLE_ID = @ROLE_ID)
1234

    
1235
					IF(@INDEX=1 )
1236
					BEGIN		
1237
						SET @PARENT_ID = NULL
1238
						SET @STATUS = 'C'							
1239
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
1240
					END				
1241
					ELSE 
1242
					BEGIN
1243
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
1244
						SET @STATUS = 'U'
1245
					END
1246
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
1247
						BEGIN
1248
							INSERT INTO dbo.PL_REQUEST_PROCESS
1249
							(
1250
								REQ_ID,
1251
								PROCESS_ID,
1252
								STATUS,
1253
								ROLE_USER,
1254
								BRANCH_ID,
1255
								CHECKER_ID,
1256
								APPROVE_DT,
1257
								PARENT_PROCESS_ID,
1258
								IS_LEAF, COST_ID, DVDM_ID, NOTES
1259
							)
1260
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
1261
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
1262
							BREAK;
1263
						END
1264
						ELSE
1265
							INSERT INTO PL_REQUEST_PROCESS (
1266
								REQ_ID,
1267
								PROCESS_ID,
1268
								STATUS,
1269
								ROLE_USER,
1270
								BRANCH_ID,
1271
								CHECKER_ID,
1272
								APPROVE_DT,
1273
								PARENT_PROCESS_ID,
1274
								IS_LEAF, COST_ID, DVDM_ID, NOTES
1275
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
1276
					--END
1277
					
1278
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
1279
				END
1280
				CLOSE CUR_PR
1281
				DEALLOCATE CUR_PR
1282
			END
1283
			--- CAP NHAT THANG CUOI CUNG LA Y
1284
			--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)
1285
		COMMIT TRANSACTION
1286
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
1287
		BEGIN
1288
				--ROLLBACK TRANSACTION
1289
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1290
				--UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1291
				--INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1292
				--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')
1293
				--SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
1294
				--RETURN '4'
1295
				IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
1296
				BEGIN
1297
				DECLARE @BRANCH_TYPE_CR VARCHAR(15)
1298
				SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
1299
				IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND @BRANCH_TYPE_CR ='HS' AND @p_REQ_TYPE ='I')
1300
				BEGIN
1301
					DECLARE @USER_TP VARCHAR(15)
1302
					SET @USER_TP =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('GDDV','TPTC','TC','KTT'))
1303
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TP WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1304
				END
1305
				ELSE IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE ='' OR TRASFER_USER_RECIVE IS NULL) AND @BRANCH_TYPE_CR ='PGD')
1306
				BEGIN
1307
					DECLARE @USER_TPGD VARCHAR(15)
1308
					SET @USER_TPGD =(SELECT TOP 1 TLNANME FROM TL_USER WHERE SECUR_CODE =@p_DEP_ID AND RoleName IN ('TPGD'))
1309
					UPDATE TR_REQ_ADVANCE_PAYMENT SET TRASFER_USER_RECIVE =@USER_TPGD WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1310
				END
1311
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1312
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1313
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1314
				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')
1315
				SELECT '4' as Result, '' REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
1316
				RETURN '4'
1317
			END
1318
		END
1319
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, '' ErrorDesc
1320
		RETURN '0'
1321
ABORT:
1322
BEGIN
1323
		ROLLBACK TRANSACTION
1324
		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
1325
		RETURN '-1'
1326
End