Project

General

Profile

2107 CAP NHAT 5.txt

Luc Tran Van, 07/21/2020 10:36 AM

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

    
537
					IF(@INDEX=1 )
538
					BEGIN		
539
						SET @PARENT_ID = NULL
540
						SET @STATUS = 'C'							
541
						--INSERT INTO TR_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),'C',@ROLE_ID,@BRANCH_ID,NULL,NULL,NULL,@ISLEAF)
542
					END				
543
					ELSE 
544
					BEGIN
545
						SET @PARENT_ID = CONVERT(VARCHAR(5),@INDEX -1)
546
						SET @STATUS = 'U'
547
					END
548
						IF(@LIMIT_VALUE >= @p_REQ_AMT)
549
						BEGIN
550
							INSERT INTO dbo.PL_REQUEST_PROCESS
551
							(
552
								REQ_ID,
553
								PROCESS_ID,
554
								STATUS,
555
								ROLE_USER,
556
								BRANCH_ID,
557
								CHECKER_ID,
558
								APPROVE_DT,
559
								PARENT_PROCESS_ID,
560
								IS_LEAF, COST_ID, DVDM_ID, NOTES
561
							)
562
							VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y', '',@p_DVDM_ID,@NOTES)
563
							--INSERT INTO PL_REQUEST_PROCESS VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,'Y')
564
							BREAK;
565
						END
566
						ELSE
567
							INSERT INTO PL_REQUEST_PROCESS (
568
								REQ_ID,
569
								PROCESS_ID,
570
								STATUS,
571
								ROLE_USER,
572
								BRANCH_ID,
573
								CHECKER_ID,
574
								APPROVE_DT,
575
								PARENT_PROCESS_ID,
576
								IS_LEAF, COST_ID, DVDM_ID, NOTES
577
							) VALUES (@p_REQ_PAY_ID,CONVERT(VARCHAR(5), @INDEX),@STATUS,@ROLE_ID,@BRANCH_ID,NULL,NULL, @PARENT_ID,@ISLEAF, '', @p_DVDM_ID, @NOTES)
578
					--END
579
					
580
					FETCH NEXT FROM CUR_PR INTO @ROLE_ID,@BRANCH_ID,@LIMIT_VALUE
581
				END
582
				CLOSE CUR_PR
583
				DEALLOCATE CUR_PR
584
			END
585
			--- CAP NHAT THANG CUOI CUNG LA Y
586
			--UPDATE TR_REQUEST_PROCESS SET IS_LEAF='Y' WHERE ID = (SELECT MAX(ID) FROM TR_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID)
587
		COMMIT TRANSACTION
588
		IF(@p_TYPE_FUNCTION ='SEND')-- BAT DAU GUI PHE DUYET
589
		BEGIN
590
				--ROLLBACK TRANSACTION
591
				-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
592
				UPDATE TR_REQ_ADVANCE_PAYMENT SET AUTH_STATUS ='U' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
593
				INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
594
				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')
595
				SELECT '4' as Result, @p_REQ_PAY_ID AS REQ_PAY_ID, N'Gửi phê duyệt thành công' ErrorDesc
596
				RETURN '4'
597
		END
598
		SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,@p_REQ_PAY_CODE AS REQ_PAY_CODE, '' ErrorDesc
599
		RETURN '0'
600
ABORT:
601
BEGIN
602
		ROLLBACK TRANSACTION
603
		SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
604
		RETURN '-1'
605
End
606
¿
607
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_Ins]
608
@p_REQ_CODE	nvarchar(100)  = NULL,
609
@p_REQ_NAME	nvarchar(200)  = NULL,
610
@p_REQ_DT	DATETIME = NULL,
611
@p_REQ_TYPE	int = NULL,
612
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
613
@p_REQ_REASON NVARCHAR(500)=NULL,
614
@p_TOTAL_AMT	decimal = NULL,
615
@p_NOTES	nvarchar(1000)  = NULL,
616
@p_RECORD_STATUS	varchar(1)  = NULL,
617
@p_MAKER_ID	varchar(20)  = NULL,
618
@p_CREATE_DT	DATETIME = NULL,
619
@p_AUTH_STATUS	varchar(50)  = NULL,
620
@p_CHECKER_ID	varchar(20)  = NULL,
621
@p_APPROVE_DT	DATETIME = NULL,
622
@p_BRANCH_ID VARCHAR(15)=NULL,
623
@p_DVDM_ID VARCHAR(20) = NULL,
624
@p_REQ_PARENT_ID VARCHAR(20) = NULL,
625
@p_BRANCH_FEE NVARCHAR(500) = NULL,
626
@p_DEP_ID VARCHAR(20)=NULL,
627
@p_DEP_FEE_ID VARCHAR(20)= NULL,
628
@p_IS_BACKDAY BIT = NULL,
629
@p_REQ_LINE VARCHAR(20),
630
@p_SIGN_USER VARCHAR(20) = NULL,
631
@p_ListGood XML,
632
@p_ListCostCenter XML,
633
@p_ListTransfer XML
634
AS	
635
  BEGIN TRANSACTION
636
		DECLARE @DEP_ID VARCHAR(15) = (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
637
		exec [dbo].[PL_REQUEST_DOC_CODE_GenKey] @p_BRANCH_ID,@DEP_ID, @p_REQ_CODE out
638
		IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
639
		BEGIN
640
			SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã tờ trình chủ trương bắc buộc nhập' ErrorDesc 
641
			ROLLBACK TRANSACTION
642
			RETURN '-1'
643
		END
644
		IF EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE)
645
		BEGIN
646
			SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
647
			ROLLBACK TRANSACTION
648
			RETURN '-1'
649
		END
650
		DECLARE @sErrorCode VARCHAR(20)
651
		--insert master				
652
		DECLARE @l_REQ_ID VARCHAR(15)
653
		EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC', @l_REQ_ID out
654
		IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
655

    
656

    
657
		DECLARE @BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
658

    
659
		SET  @BRANCH_CREATE= (SELECT TLSUBBRID  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
660
		IF(EXISTS(SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS'))		
661
			SET @DEP_CREATE=(SELECT SECUR_CODE  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
662
		ELSE
663
			SET @DEP_CREATE=''
664
		
665

    
666
		INSERT INTO dbo.PL_REQUEST_DOC
667
		(
668
		    REQ_ID,
669
		    REQ_CODE,
670
		    REQ_NAME,
671
		    REQ_DT,
672
		    REQ_TYPE,
673
		    REQ_CONTENT,
674
		    REQ_REASON,
675
		    BRANCH_ID,
676
		    TOTAL_AMT,
677
		    NOTES,
678
		    RECORD_STATUS,
679
		    MAKER_ID,
680
		    CREATE_DT,
681
		    AUTH_STATUS,
682
		    CHECKER_ID,
683
		    APPROVE_DT,
684
			DVDM_APP_ID,
685
			REQ_PARENT_ID,
686
			BRANCH_FEE,
687
			IS_BACKDAY,
688
			PROCESS_ID,
689
			DEP_ID,
690
			DEP_FEE,
691
			BRANCH_CREATE,
692
			DEP_CREATE,
693
			REQ_LINE,SIGN_USER
694
			
695
		)
696
		VALUES
697
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
698
		    @p_REQ_CODE,        -- REQ_CODE - varchar(100)
699
		    @p_REQ_NAME,       -- REQ_NAME - nvarchar(200)
700
			  CAST(@p_REQ_DT AS DATE), -- REQ_DT - datetime
701
		    @p_REQ_TYPE,         -- REQ_TYPE - int
702
		    @p_REQ_CONTENT,       -- REQ_CONTENT - nvarchar(1000)
703
		    @p_REQ_REASON,       -- REQ_REASON - nvarchar(500)
704
		    @p_BRANCH_ID,        -- BRANCH_ID - varchar(15)
705
		    @p_TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
706
		    @p_NOTES,       -- NOTES - nvarchar(1000)
707
		    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
708
		    @p_MAKER_ID,        -- MAKER_ID - varchar(12)
709
		    CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
710
		    'E',        -- AUTH_STATUS - varchar(50)
711
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(12)
712
		    CAST(@P_APPROVE_DT AS DATE),  -- APPROVE_DT - datetime
713
			@p_DVDM_ID,
714
			@p_REQ_PARENT_ID,
715
			@p_BRANCH_FEE,
716
			@p_IS_BACKDAY,
717
			'',
718
			@p_DEP_ID,
719
			@p_DEP_FEE_ID,
720
			@BRANCH_CREATE,
721
			@DEP_CREATE,
722
			@p_REQ_LINE,@p_SIGN_USER
723
		    )
724
		
725
		
726
		IF @@Error <> 0 GOTO ABORT
727
		DECLARE @TABLE TABLE(
728
			PLAN_ID	varchar(15)  ,
729
			TRADE_ID	varchar(15)  ,
730
			GOODS_ID	varchar(15)  ,
731
			[DESCRIPTION] nvarchar(500),
732
			UNIT_ID	varchar(15)  ,
733
			QUANTITY	decimal(18,0)  ,
734
			PRICE	decimal(18,2)  ,
735
			TOTAL_AMT	decimal(18,2),	
736
			NOTES	nvarchar(1000),
737
			REQDT_TYPE VARCHAR(1),
738
			NAME NVARCHAR(500),
739
			DVDM_ID VARCHAR(20),
740
			HH_ID VARCHAR(20),
741
			CURRENCY	nvarchar(50),
742
			EXCHANGE_RATE	decimal(18,2),
743
			TAXES	decimal(18, 2),
744
			SUP_ID VARCHAR(20),
745
			TRADE_TYPE VARCHAR(20),
746
			KHOI_ID VARCHAR(20),
747
			UNIT_NAME nvarchar(200)
748
		)
749
	
750

    
751
		--Insert into TABLE PL_REQUEST_DOC_DT
752
		Declare @hdoc INT
753
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
754
		INSERT INTO @TABLE
755
		SELECT PLAN_ID,
756
               TRADE_ID,
757
               GOODS_ID,
758
               DESCRIPTION,
759
               UNIT_ID,
760
               QUANTITY,
761
               PRICE,
762
               TOTAL_AMT,
763
               NOTES,
764
               REQDT_TYPE,
765
               NAME,
766
               DVDM_ID,
767
               HH_ID,
768
               CURRENCY,
769
               EXCHANGE_RATE,
770
               TAXES,
771
               SUP_ID,
772
               TRADE_TYPE,
773
			   KHOI_ID,UNIT_NAME
774
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
775
		WITH 
776
		(
777
			PLAN_ID	varchar(15)  ,
778
			TRADE_ID	varchar(15)  ,
779
			GOODS_ID	varchar(15)  ,
780
			[DESCRIPTION] nvarchar(500),
781
			UNIT_ID	varchar(15)  ,
782
			QUANTITY	decimal(18,0)  ,
783
			PRICE	decimal(18,2)  ,
784
			TOTAL_AMT	decimal(18,2),	
785
			NOTES	nvarchar(1000),
786
			REQDT_TYPE VARCHAR(1),
787
			NAME NVARCHAR(500),
788
			DVDM_ID VARCHAR(20),
789
			HH_ID VARCHAR(20),
790
			CURRENCY	nvarchar(50),
791
			EXCHANGE_RATE	decimal(18,2),
792
			TAXES	decimal(18, 2),
793
			SUP_ID VARCHAR(20),
794
			TRADE_TYPE VARCHAR(20),
795
			KHOI_ID VARCHAR(20),
796
			UNIT_NAME nvarchar(200)
797
		)
798

    
799
		
800

    
801
		
802

    
803
	
804
		DECLARE @TABLE_TRANSFER TABLE (
805
			FR_PLAN_ID	varchar(15),
806
			FR_TRADE_ID	varchar(15),
807
			FR_GOOD_ID	varchar(15),
808
			FR_BRN_ID	varchar(15),
809
			TO_BRN_ID	varchar(15),
810
			TO_PLAN_ID	varchar(15),
811
			TO_TRADE_ID	varchar(15),	
812
			TO_GOOD_ID	varchar(15),	
813
			QTY  DECIMAL(18,0),
814
			TOTAL_AMT	decimal(18),	
815
			NOTES	nvarchar(1000),
816
			FR_DEP_ID VARCHAR(20),
817
			TO_DEP_ID VARCHAR(20),
818
			FR_DVDM_ID VARCHAR(20),
819
			TO_DVDM_ID VARCHAR(20),
820
			FR_KHOI_ID VARCHAR(20),
821
			TO_KHOI_ID VARCHAR(20),
822
			FR_GD_TYPE VARCHAR(20),
823
			TO_GD_TYPE VARCHAR(20)
824
		)
825

    
826
		Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
827

    
828
		INSERT INTO @TABLE_TRANSFER
829
		SELECT FR_PLAN_ID,
830
               FR_TRADE_ID,
831
               FR_GOOD_ID,
832
               FR_BRN_ID,
833
               TO_BRN_ID,
834
               TO_PLAN_ID,
835
               TO_TRADE_ID,
836
               TO_GOOD_ID,
837
               QTY,
838
               TOTAL_AMT,
839
               NOTES,
840
               FR_DEP_ID,
841
               TO_DEP_ID,
842
               FR_DVDM_ID,
843
               TO_DVDM_ID,
844
               FR_KHOI_ID,
845
               TO_KHOI_ID,
846
               FR_GD_TYPE,
847
               TO_GD_TYPE 
848
		FROM OPENXML(@hdoc,'/Root/ListTransfer',2)
849
		WITH 
850
		(
851
			FR_PLAN_ID	varchar(15),
852
			FR_TRADE_ID	varchar(15),
853
			FR_GOOD_ID	varchar(15),
854
			FR_BRN_ID	varchar(15),
855
			TO_BRN_ID	varchar(15),
856
			TO_PLAN_ID	varchar(15),
857
			TO_TRADE_ID	varchar(15),	
858
			TO_GOOD_ID	varchar(15),	
859
			QTY  DECIMAL(18,0),
860
			TOTAL_AMT	decimal(18),	
861
			NOTES	nvarchar(1000),
862
			FR_DEP_ID VARCHAR(20),
863
			TO_DEP_ID VARCHAR(20),
864
			FR_DVDM_ID VARCHAR(20),
865
			TO_DVDM_ID VARCHAR(20),
866
			FR_KHOI_ID VARCHAR(20),
867
			TO_KHOI_ID VARCHAR(20),
868
			FR_GD_TYPE VARCHAR(20),
869
			TO_GD_TYPE VARCHAR(20)
870
		
871
		)
872
		WHERE FR_BRN_ID !='' AND FR_BRN_ID IS NOT NULL
873

    
874

    
875
		
876

    
877

    
878

    
879

    
880

    
881

    
882
		DECLARE ListGoods  CURSOR FOR
883
		SELECT PLAN_ID,
884
               TRADE_ID,
885
               GOODS_ID,
886
               DESCRIPTION,
887
               UNIT_ID,
888
               QUANTITY,
889
               PRICE,
890
               TOTAL_AMT,
891
               NOTES,
892
               REQDT_TYPE,
893
               NAME,
894
               DVDM_ID,
895
               HH_ID,
896
               CURRENCY,
897
               EXCHANGE_RATE,
898
               TAXES,
899
               SUP_ID,
900
               TRADE_TYPE,KHOI_ID,UNIT_NAME FROM @TABLE
901

    
902
		OPEN ListGoods
903

    
904
		Declare 
905
		@PLAN_ID	varchar(15),
906
		@TRADE_ID	varchar(15),
907
		@GOODS_ID	varchar(15),
908
		@DESCRIPTION nvarchar(500),
909
		@UNIT_ID	varchar(15),
910
		@QUANTITY	decimal(18),
911
		@PRICE	decimal(18,2),
912
		@TOTAL_AMT	decimal(18,2),		
913
		@NOTES	nvarchar(1000),
914
		@REQDT_TYPE VARCHAR(1),
915
		@NAME NVARCHAR(500),
916
		@DVDM_ID VARCHAR(20),
917
		@HH_ID VARCHAR(20),
918
		@CURRENCY	nvarchar(50),
919
		@EXCHANGE_RATE	decimal(18, 2),
920
		@TAXES	decimal(18, 2),
921
		@SUP_ID VARCHAR(20),
922
		@TRADE_TYPE VARCHAR(20),
923
		@KHOI_ID VARCHAR(20),
924
		@UNIT_NAME nvarchar(200)
925

    
926
		FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
927
		@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
928
		WHILE @@FETCH_STATUS = 0	
929
		BEGIN
930
			
931

    
932
			DECLARE @l_REQDT_ID VARCHAR(15)
933
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
934
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
935
			
936
			SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + (@TAXES*@EXCHANGE_RATE)
937

    
938
			INSERT INTO dbo.PL_REQUEST_DOC_DT
939
			(
940
			    REQDT_ID,
941
			    REQ_ID,
942
			    PLAN_ID,
943
			    TRADE_ID,
944
			    GOODS_ID,
945
			    NAME,
946
			    DESCRIPTION,
947
			    REQDT_TYPE,
948
			    UNIT_ID,
949
			    QUANTITY,
950
			    PRICE,
951
			    TOTAL_AMT,
952
			    RECORD_STATUS,
953
			    MAKER_ID,
954
			    CREATE_DT,
955
			    AUTH_STATUS,
956
			    CHECKER_ID,
957
			    APPROVE_DT,
958
				DVDM_ID,
959
				HANGHOA_ID,
960
				CURRENCY,
961
				EXCHANGE_RATE,
962
				TAXES,SUP_ID,TRADE_TYPE,KHOI_ID,UNIT_NAME
963
			)
964
			VALUES
965
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
966
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
967
			    @PLAN_ID,        -- PLAN_ID - varchar(15)
968
			    @TRADE_ID,        -- TRADE_ID - varchar(15)
969
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
970
			    @NAME,       -- NAME - nvarchar(200)
971
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
972
			    @REQDT_TYPE,        -- REQDT_TYPE - varchar(1)
973
			    @UNIT_ID,        -- UNIT_ID - varchar(15)
974
			    @QUANTITY,      -- QUANTITY - decimal(18, 0)
975
			    @PRICE,      -- PRICE - decimal(18, 0)
976
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
977
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
978
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
979
			     CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
980
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
981
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
982
			     CAST(@P_APPROVE_DT AS DATE),   -- APPROVE_DT - datetime
983
			    @DVDM_ID,
984
				@HH_ID,
985
				@CURRENCY,
986
				@EXCHANGE_RATE,
987
				@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
988
				)
989
			
990
			
991
			IF @@ERROR <> 0 GOTO ABORT1
992
		-- next Group_Id
993
			FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
994
			@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
995
			END
996
			CLOSE ListGoods
997
			DEALLOCATE ListGoods
998

    
999

    
1000
			IF @@Error <> 0 GOTO ABORT
1001
		--Insert into TABLE PL_REQUEST_DOC_DT
1002

    
1003
		UPDATE dbo.PL_REQUEST_DOC SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID =@l_REQ_ID) WHERE PL_REQUEST_DOC.REQ_ID=@l_REQ_ID
1004
		
1005

    
1006
		Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
1007
		DECLARE ListTransfers  CURSOR FOR
1008
		SELECT *
1009
		FROM @TABLE_TRANSFER
1010
		OPEN ListTransfers
1011

    
1012
		Declare 
1013
		@FR_PLAN_ID	varchar(15),
1014
		@FR_TRADE_ID	varchar(15),
1015
		@FR_GOOD_ID	varchar(15),
1016
		@FR_BRN_ID	varchar(15),
1017
		@TO_BRN_ID	varchar(15),
1018
		@TO_PLAN_ID	varchar(15),
1019
		@TO_TRADE_ID	varchar(15),	
1020
		@TO_GOOD_ID	varchar(15),	
1021
		@QTY  DECIMAL(18,0),
1022
		@FR_DEP_ID VARCHAR(20),
1023
		@TO_DEP_ID VARCHAR(20),
1024
		@FR_DVDM_ID VARCHAR(20),
1025
		@TO_DVDM_ID VARCHAR(20),
1026
		@FR_KHOI_ID VARCHAR(20),
1027
		@TO_KHOI_ID VARCHAR(20),
1028
		@FR_GD_TYPE VARCHAR(20),
1029
		@TO_GD_TYPE VARCHAR(20)
1030

    
1031
		FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
1032
		@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
1033
		WHILE @@FETCH_STATUS = 0	
1034
		BEGIN
1035
			
1036
			
1037

    
1038

    
1039

    
1040

    
1041
			DECLARE @l_REQ_TRANSFER_ID VARCHAR(15)
1042
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_TRANSFER', @l_REQ_TRANSFER_ID out
1043
			IF @l_REQ_TRANSFER_ID='' OR @l_REQ_TRANSFER_ID IS NULL GOTO ABORT
1044
			
1045
			INSERT INTO dbo.PL_REQUEST_TRANSFER
1046
			(
1047
			    REQ_TRANSFER_ID,
1048
			    REQ_DOC_ID,
1049
			    FR_PLAN_ID,
1050
			    FR_TRADE_ID,
1051
			    FR_GOOD_ID,
1052
			    FR_BRN_ID,
1053
			    TO_BRN_ID,
1054
			    TO_PLAN_ID,
1055
			    TO_TRADE_ID,
1056
			    TO_GOOD_ID,
1057
			    QTY,
1058
			    TOTAL_AMT,
1059
			    NOTES,
1060
			    AUTH_STATUS,
1061
			    MAKER_ID,
1062
			    CREATE_DT,
1063
			    CHECKER_ID,
1064
			    APPROVE_DT,
1065
				FR_DEP_ID,
1066
				TO_DEP_ID,
1067
				FR_DVDM_ID,
1068
				TO_DVDM_ID,
1069
				FR_KHOI_ID,
1070
				TO_KHOI_ID
1071
			)
1072
			VALUES
1073
			(   @l_REQ_TRANSFER_ID,        -- REQ_TRANSFER_ID - varchar(15)
1074
			    @l_REQ_ID,        -- REQ_DOC_ID - varchar(15)
1075
			    @FR_PLAN_ID,        -- FR_PLAN_ID - varchar(15)
1076
			    @FR_TRADE_ID,        -- FR_TRADE_ID - varchar(15)
1077
			    @FR_GOOD_ID,        -- FR_GOOD_ID - varchar(15)
1078
			    @FR_BRN_ID,        -- FR_BRN_ID - varchar(15)
1079
			    @TO_BRN_ID,        -- TO_BRN_ID - varchar(15)
1080
			    @TO_PLAN_ID,        -- TO_PLAN_ID - varchar(15)
1081
			    @TO_TRADE_ID,        -- TO_TRADE_ID - varchar(15)
1082
			    @TO_GOOD_ID,        -- TO_GOOD_ID - varchar(15)
1083
			    @QTY,      -- QTY - decimal(18, 0)
1084
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
1085
			    @NOTES,       -- NOTES - nvarchar(500)
1086
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
1087
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
1088
			     CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
1089
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
1090
			    CAST(@p_APPROVE_DT AS DATE),
1091
				@FR_DEP_ID,
1092
				@TO_DEP_ID,
1093
				@FR_DVDM_ID,
1094
				@TO_DVDM_ID,
1095
				@FR_KHOI_ID,
1096
				@TO_KHOI_ID  -- APPROVE_DT - datetime
1097
			    )
1098
			
1099
			
1100
			IF @@ERROR <> 0 GOTO ABORT1
1101
		-- next Group_Id
1102
			FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
1103
		@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
1104
		END
1105
		CLOSE ListTransfers
1106
		DEALLOCATE ListTransfers
1107

    
1108
			IF @@Error <> 0 GOTO ABORT
1109
		--Insert into TABLE PL_REQUEST_DOC_DT
1110
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
1111
		DECLARE ListCostCenters  CURSOR FOR
1112
		SELECT *
1113
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
1114
		WITH 
1115
		(
1116
			COST_ID	varchar(15),	
1117
			NOTES	nvarchar(1000)
1118
		
1119
		)
1120
		OPEN ListCostCenters
1121

    
1122
		Declare 
1123
		@COST_ID	varchar(15)
1124

    
1125

    
1126
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
1127
		WHILE @@FETCH_STATUS = 0	
1128
		BEGIN
1129
			
1130
			DECLARE @l_REQ_COST_ID VARCHAR(15)
1131
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_COSTCENTER', @l_REQ_COST_ID out
1132
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
1133
	
1134
			INSERT INTO dbo.PL_REQUEST_COSTCENTER
1135
			(
1136
			    REQ_COST_ID,
1137
			    COST_ID,
1138
			    REQ_ID,
1139
			    NOTES,
1140
			    AUTH_STATUS,
1141
			    MAKER_ID,
1142
			    CREATE_DT,
1143
			    CHECKER_ID,
1144
			    APPROVE_DT
1145
			)
1146
			VALUES
1147
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
1148
			    @COST_ID,        -- COST_ID - varchar(15)
1149
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
1150
			    @NOTES,       -- NOTES - nvarchar(500)
1151
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
1152
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
1153
			      CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
1154
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
1155
			        CAST(@p_APPROVE_DT AS DATE)  -- APPROVE_DT - datetime
1156
			 )
1157
			
1158
			
1159
			IF @@ERROR <> 0 GOTO ABORT1
1160
		-- next Group_Id
1161
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
1162
		END
1163
		CLOSE ListCostCenters
1164
		DEALLOCATE ListCostCenters
1165

    
1166
	
1167

    
1168

    
1169
		
1170
COMMIT TRANSACTION
1171
SELECT '0' as Result, @l_REQ_ID  REQ_ID, @p_REQ_CODE ErrorDesc
1172
RETURN '0'
1173
ABORT:
1174
BEGIN
1175
		ROLLBACK TRANSACTION
1176
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
1177
		RETURN '-1'
1178
End
1179
ABORT1:
1180
BEGIN
1181
		CLOSE ListGoods
1182
		DEALLOCATE ListGoods
1183
		CLOSE ListCostCenters
1184
		DEALLOCATE ListCostCenters
1185
		CLOSE ListCostCenters
1186
		DEALLOCATE ListCostCenters
1187
		ROLLBACK TRANSACTION
1188
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
1189
		RETURN '-1'
1190
End