Project

General

Profile

TR_REQUEST_DOC_Ins.txt

Luc Tran Van, 04/28/2022 11:55 AM

 
1

    
2

    
3
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_Ins]
4
@p_REQ_CODE	nvarchar(100)  = NULL,
5
@p_REQ_NAME	nvarchar(200)  = NULL,
6
@p_REQ_DT	VARCHAR(30) = NULL,--
7
@p_REQ_TYPE	int = NULL,
8
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
9
@p_REQ_REASON NVARCHAR(500)=NULL,
10
@p_PL_REQ_ID VARCHAR(15),
11
@p_TOTAL_AMT	decimal = NULL,
12
@p_NOTES	nvarchar(1000)  = NULL,
13
@p_RECORD_STATUS	varchar(1)  = NULL,
14
@p_MAKER_ID	varchar(12)  = NULL,
15
@p_CREATE_DT	VARCHAR(30) = NULL,--
16
@p_AUTH_STATUS	varchar(50)  = NULL,
17
@p_CHECKER_ID	varchar(12)  = NULL,
18
@p_APPROVE_DT	VARCHAR(30) = NULL,--
19
@p_BRANCH_DO VARCHAR(15)=NULL,
20
@p_BRANCH_CREATE VARCHAR(15)=NULL,
21
@p_DEP_CREATE VARCHAR(20)=NULL,
22
@p_REQ_PARENT_ID VARCHAR(20)=NULL,
23
@p_USER_REQUEST VARCHAR(15)=NULL,
24
@p_SIGN_USER VARCHAR(15)=NULL,
25
@p_ListGood XML,
26
@p_ListPlGood XML,
27
@p_ListTrREQFile XML,
28
@p_IS_KT bit = null
29
AS
30
DECLARE @sErrorCode VARCHAR(20)
31
DECLARE @TEMP TABLE
32
			(
33
				[KEY] varchar(15),
34
				[REF_ID] varchar(15),
35
				[TYPE] varchar(50)
36
			)
37

    
38
  BEGIN TRANSACTION
39
  
40
	exec [TR_CODE_GenKey] 'TR_REQUEST_DOC', '','PUR', @p_REQ_CODE OUT
41
    
42
	IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE)
43
	BEGIN
44
		ROLLBACK TRANSACTION
45
		SELECT '-1' Result, '' REQ_ID, N'Số phiếu yêu cầu đã tồn tại' ErrorDesc
46
		RETURN '-1'
47
	END
48

    
49
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
50
	BEGIN
51
		ROLLBACK TRANSACTION
52
		SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắt buộc nhập' ErrorDesc 
53
		RETURN '-1'
54
	END
55
		--insert master				
56
		DECLARE @l_REQ_ID VARCHAR(15)
57
		EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC', @l_REQ_ID out
58
		IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
59

    
60

    
61
		INSERT INTO dbo.TR_REQUEST_DOC
62
		(
63
		    REQ_ID,
64
		    REQ_CODE,
65
		    REQ_NAME,
66
		    REQ_DT,
67
		    REQ_TYPE,
68
		    REQ_REASON,
69
		    REQ_CONTENT,
70
		    PL_REQ_ID,
71
		    TOTAL_AMT,
72
		    NOTES,
73
		    RECORD_STATUS,
74
		    MAKER_ID,
75
		    CREATE_DT,
76
		    AUTH_STATUS,
77
		    CHECKER_ID,
78
		    APPROVE_DT,
79
			BRANCH_DO,
80
			PROCESS_ID,
81
			BRANCH_CREATE,
82
			USER_REQUEST,
83
			BRANCH_DVMS,
84
			DEP_CREATE,
85
			REQ_PARENT_ID,SIGN_USER,IS_KT
86
		)
87
		VALUES
88
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
89
		    @p_REQ_CODE,        -- REQ_CODE - varchar(100)
90
		    @p_REQ_NAME,       -- REQ_NAME - nvarchar(200)
91
			CONVERT(DATETIME, @p_REQ_DT, 103), -- REQ_DT - datetime
92
		    @p_REQ_TYPE, 
93
			@p_REQ_REASON,        -- REQ_TYPE - int
94
		    @p_REQ_CONTENT,       -- REQ_CONTENT - nvarchar(1000)
95
		         -- REQ_REASON - nvarchar(500)
96
		    @p_PL_REQ_ID,     
97
		    @p_TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
98
		    @p_NOTES,       -- NOTES - nvarchar(1000)
99
		    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
100
		    @p_MAKER_ID,        -- MAKER_ID - varchar(12)
101
		    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
102
		    'E',        -- AUTH_STATUS - varchar(50)
103
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(12)
104
		    CONVERT(DATETIME, @p_APPROVE_DT, 103),  -- APPROVE_DT - datetime
105
		    @p_BRANCH_DO,
106
			'',   -- PROCESS_ID - varchar(15)
107
			@p_BRANCH_CREATE,
108
			@p_USER_REQUEST,
109
			@p_BRANCH_CREATE,
110
			@p_DEP_CREATE,
111
			@p_REQ_PARENT_ID,@p_SIGN_USER,@p_IS_KT
112
			)
113
		IF @@Error <> 0 GOTO ABORT
114

    
115
		-- LƯỚI HÀNG HÓA THEO TỜ TRÌNH
116
		DECLARE @lstPLDT TABLE(
117
			REQPL_DT_ID VARCHAR(15),
118
			REQ_DOC_ID VARCHAR(15),
119
			PL_REQDT_ID VARCHAR(15),
120
			GD_ID VARCHAR(15),
121
			SUP_ID VARCHAR(15),
122
			HH_ID VARCHAR(15),
123
			TRAN_TYPE_ID VARCHAR(15),
124
			DES_GOOD NVARCHAR(500),
125
			QUANTITY_PL DECIMAL(18, 0),
126
			PRICE_PL DECIMAL(18, 2),
127
			CURRENCY NVARCHAR(50),
128
			EXCHANGE_RATE DECIMAL(18, 2),
129
			TAXES DECIMAL(18, 2),
130
			TOTAL_AMT_ETM DECIMAL(18, 2),
131
			REASON_CDT NVARCHAR(500),
132
			REQ_DT VARCHAR(30),
133
			NOTES NVARCHAR(500)
134
		)
135
		
136
		DECLARE @doc INT
137
		Exec sp_xml_preparedocument @doc Output,@p_ListPlGood
138
		
139
		INSERT INTO @lstPLDT
140
		SELECT *
141
		FROM OPENXML(@doc,'/Root/ListPlGood',2)
142
		WITH 
143
		(
144
			REQPL_DT_ID VARCHAR(15),
145
			REQ_DOC_ID VARCHAR(15),
146
			PL_REQDT_ID VARCHAR(15),
147
			GD_ID VARCHAR(15),
148
			SUP_ID VARCHAR(15),
149
			HH_ID VARCHAR(15),
150
			TRAN_TYPE_ID VARCHAR(15),
151
			DES_GOOD NVARCHAR(500),
152
			QUANTITY_PL DECIMAL(18, 0),
153
			PRICE_PL DECIMAL(18, 2),
154
			CURRENCY NVARCHAR(50),
155
			EXCHANGE_RATE DECIMAL(18, 2),
156
			TAXES DECIMAL(18, 2),
157
			TOTAL_AMT_ETM DECIMAL(18, 2),
158
			REASON_CDT NVARCHAR(500),
159
			REQ_DT VARCHAR(30),
160
			NOTES NVARCHAR(500)
161
		)
162

    
163

    
164
		DECLARE PlGoodsCur CURSOR FOR SELECT * FROM @lstPLDT
165
		OPEN PlGoodsCur
166

    
167
		DECLARE
168
		@pl_REQPL_DT_ID VARCHAR(15),
169
		@pl_REQ_DOC_ID VARCHAR(15),
170
		@pl_PL_REQDT_ID VARCHAR(15),
171
		@pl_GD_ID VARCHAR(15),
172
		@pl_SUP_ID VARCHAR(15),
173
		@pl_HH_ID VARCHAR(15),
174
		@pl_TRAN_TYPE_ID VARCHAR(15),
175
		@pl_DES_GOOD NVARCHAR(500),
176
		@pl_QUANTITY_PL DECIMAL(18, 0),
177
		@pl_PRICE_PL DECIMAL(18, 2),
178
		@pl_CURRENCY NVARCHAR(50),
179
		@pl_EXCHANGE_RATE DECIMAL(18, 2),
180
		@pl_TAXES DECIMAL(18, 2),
181
		@pl_TOTAL_AMT_ETM DECIMAL(18, 2),
182
		@pl_REASON_CDT NVARCHAR(500),
183
		@pl_REQ_DT VARCHAR(30),
184
		@pl_NOTES NVARCHAR(500)
185

    
186
		FETCH NEXT FROM PlGoodsCur INTO @pl_REQPL_DT_ID, @pl_REQ_DOC_ID, @pl_PL_REQDT_ID, @pl_GD_ID, @pl_SUP_ID, @pl_HH_ID,
187
		@pl_TRAN_TYPE_ID, @pl_DES_GOOD, @pl_QUANTITY_PL, @pl_PRICE_PL, @pl_CURRENCY, @pl_EXCHANGE_RATE, @pl_TAXES, @pl_TOTAL_AMT_ETM, @pl_REASON_CDT, @pl_REQ_DT, @pl_NOTES
188
			
189
		WHILE @@FETCH_STATUS = 0	
190
		BEGIN
191

    
192
		DECLARE @l_PLDT_ID VARCHAR(15)
193
		EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_PL_DT', @l_PLDT_ID out
194
		IF @l_PLDT_ID='' OR @l_PLDT_ID IS NULL GOTO ABORT
195

    
196
		INSERT INTO dbo.TR_REQUEST_DOC_PL_DT
197
		(
198
		    REQPL_DT_ID, REQ_DOC_ID, PL_REQDT_ID, GD_ID, SUP_ID, HH_ID, TRAN_TYPE_ID, MAKER_ID, CREATE_DT,
199
		    AUTH_STATUS, CHECKER_ID,APPROVE_DT,DES_GOOD,QUANTITY_PL,PRICE_PL,CURRENCY,EXCHANGE_RATE,TAXES,TOTAL_AMT_ETM,
200
			REASON_CDT,REQ_DT,NOTES, RECORD_STATUS
201
		)
202
		VALUES
203
		(   @l_PLDT_ID,        -- REQPL_DT_ID - varchar(15) -- primary key
204
		    @l_REQ_ID,        -- REQ_DOC_ID - varchar(15)
205
		    @pl_PL_REQDT_ID,        -- PL_REQDT_ID - varchar(15) -- chi tiết hàng hóa trong tờ trình
206
		    @pl_GD_ID,        -- GD_ID - varchar(15)
207
		    @pl_SUP_ID,        -- SUP_ID - varchar(15)
208
		    @pl_HH_ID,        -- HH_ID - varchar(15)
209
		    @pl_TRAN_TYPE_ID,        -- TRAN_TYPE_ID - varchar(15)
210
		    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
211
		    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
212
		    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
213
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
214
		    CONVERT(DATETIME, @p_APPROVE_DT, 103), -- APPROVE_DT - datetime
215
		    @pl_DES_GOOD,       -- DES_GOOD - nvarchar(500)
216
		    @pl_QUANTITY_PL,      -- QUANTITY_PL - decimal(18, 0)
217
		    @pl_PRICE_PL,      -- PRICE_PL - decimal(18, 2)
218
		    @pl_CURRENCY,       -- CURRENCY - nvarchar(50)
219
		    @pl_EXCHANGE_RATE,      -- EXCHANGE_RATE - decimal(18, 2)
220
		    @pl_TAXES,      -- TAXES - decimal(18, 2)
221
		    @pl_TOTAL_AMT_ETM,      -- TOTAL_AMT_ETM - decimal(18, 2)
222
		    @pl_REASON_CDT,       -- REASON_CDT - nvarchar(500)
223
		    CONVERT(DATETIME, @pl_REQ_DT, 103), -- REQ_DT - datetime
224
		    @pl_NOTES,       -- NOTES - nvarchar(500)
225
		    @p_RECORD_STATUS         -- RECORD_STATUS - varchar(1)
226
		)
227
		
228
		IF @@ERROR <> 0 GOTO ABORT1
229
		FETCH NEXT FROM PlGoodsCur INTO @pl_REQPL_DT_ID, @pl_REQ_DOC_ID, @pl_PL_REQDT_ID, @pl_GD_ID, @pl_SUP_ID, @pl_HH_ID,
230
		@pl_TRAN_TYPE_ID, @pl_DES_GOOD, @pl_QUANTITY_PL, @pl_PRICE_PL, @pl_CURRENCY, @pl_EXCHANGE_RATE, @pl_TAXES, @pl_TOTAL_AMT_ETM, @pl_REASON_CDT, @pl_REQ_DT, @pl_NOTES
231
		END
232
		CLOSE PlGoodsCur
233
		DEALLOCATE PlGoodsCur
234

    
235

    
236
		--Insert into TABLE PL_REQUEST_DOC_DT
237

    
238
		DECLARE @lstTRDT TABLE(
239
			PL_REQDT_ID	varchar(15)  ,
240
			GOODS_ID	varchar(15)  ,
241
			[DESCRIPTION] nvarchar(500),
242
			QUANTITY	decimal(18,0)  ,
243
			PRICE	decimal(18,2)  ,
244
			TOTAL_AMT	decimal(18,2),	
245
			NOTES	nvarchar(1000),
246
			REQ_DT VARCHAR(30),
247
			AMORT_MONTH DECIMAL(18,2),
248
			TRADE_TYPE_ID varchar(15),
249
			SUP_ID varchar(15),
250
			HH_ID VARCHAR(20),
251
			CURRENCY	nvarchar(50),
252
			EXCHANGE_RATE	decimal(18, 2),
253
			TAXES	decimal(18, 2),
254
			DVDM_ID  VARCHAR(20),
255
			UNIT_NAME NVARCHAR(100)
256
		)
257

    
258

    
259
		Declare @hdoc INT
260
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
261

    
262
		INSERT INTO @lstTRDT
263
		SELECT *
264
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
265
		WITH 
266
		(
267
			PL_REQDT_ID	varchar(15)  ,
268
			GOODS_ID	varchar(15)  ,
269
			[DESCRIPTION] nvarchar(500),
270
			QUANTITY	decimal(18,0)  ,
271
			PRICE	decimal(18,2)  ,
272
			TOTAL_AMT	decimal(18,2),	
273
			NOTES	nvarchar(1000),
274
			REQ_DT VARCHAR(30),
275
			AMORT_MONTH DECIMAL(18,2),
276
			TRADE_TYPE_ID varchar(15),
277
			SUP_ID varchar(15),
278
			HH_ID VARCHAR(20),
279
			CURRENCY	nvarchar(50),
280
			EXCHANGE_RATE	decimal(18, 2),
281
			TAXES	decimal(18, 2),
282
			DVDM_ID  VARCHAR(20),
283
			UNIT_NAME NVARCHAR(100)
284
		)
285

    
286

    
287

    
288
		DECLARE ListGoods  CURSOR FOR
289
		SELECT * FROM @lstTRDT
290
		OPEN ListGoods
291

    
292
		Declare 
293
		@PL_REQDT_ID	varchar(15),
294
		@SUP_ID	varchar(15),
295
		@GOODS_ID	varchar(15),
296
		@DESCRIPTION nvarchar(500),
297
		@QUANTITY	decimal(18, 0),
298
		@PRICE	decimal(18, 2),
299
		@TOTAL_AMT	decimal(18, 2),		
300
		@NOTES	nvarchar(1000),
301
		@TRADE_TYPE_ID varchar(15),
302
		@AMORT_MONTH DECIMAL(18,2),
303
		@RED_DT VARCHAR(30),
304
		@HH_ID VARCHAR(20),
305
		@CURRENCY	nvarchar(50),
306
		@EXCHANGE_RATE	decimal(18, 2),
307
		@DVDM_ID VARCHAR(20),
308
		@TAXES	decimal(18, 2),
309
		@UNIT_NAME NVARCHAR(100)
310

    
311
		FETCH NEXT FROM ListGoods INTO @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
312
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
313
		WHILE @@FETCH_STATUS = 0	
314
		BEGIN
315
			
316
			
317
			DECLARE @l_REQDT_ID VARCHAR(15)
318
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_DT', @l_REQDT_ID out
319
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
320
	
321
			SET @TOTAL_AMT= (@QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE
322

    
323
			INSERT INTO dbo.TR_REQUEST_DOC_DT
324
			(
325
			    REQDT_ID,
326
				[REQPL_DT_ID],
327
			    REQ_DOC_ID,
328
			    PL_REQDT_ID,
329
			    GD_ID,
330
				TRAN_TYPE_ID,
331
				SUP_ID,
332
			    DESCRIPTION,
333
			    QUANTITY,
334
			    PRICE,
335
				PRICE_ETM,
336
			    TOTAL_AMT,
337
				TOTAL_AMT_ETM,
338
			    REQ_DT,
339
			    AMORT_MONTH,
340
			    NOTES,
341
			    RECORD_STATUS,
342
			    MAKER_ID,
343
			    CREATE_DT,
344
			    AUTH_STATUS,
345
			    CHECKER_ID,
346
			    APPROVE_DT,
347
				HANGHOA_ID,
348
				CURRENCY,
349
				EXCHANGE_RATE,
350
				TAXES,
351
				DVDM_ID,
352
				UNIT_NAME
353
			)	
354
			VALUES
355
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
356
				(SELECT TOP 1 REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @l_REQ_ID AND PL_REQDT_ID = @PL_REQDT_ID),
357
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
358
			    @PL_REQDT_ID,        -- PLAN_ID - varchar(15)
359
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
360
			    @TRADE_TYPE_ID,
361
				@SUP_ID,       -- NAME - nvarchar(200)
362
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
363
				@QUANTITY,      -- QUANTITY - decimal(18, 0)
364
			    @PRICE,
365
				@PRICE,     -- PRICE - decimal(18, 0)
366
			    ROUND(@TOTAL_AMT,0),
367
				ROUND(@TOTAL_AMT,0),
368
				CONVERT(DATETIME, @RED_DT, 103),
369
				@AMORT_MONTH,
370
				@NOTES,  -- TOTAL_AMT - decimal(18, 0)
371
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
372
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
373
			    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
374
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
375
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
376
			    CONVERT(DATETIME, @p_APPROVE_DT, 103),
377
				@HH_ID,
378
				@CURRENCY,
379
				@EXCHANGE_RATE,
380
				@TAXES,
381
				@DVDM_ID,-- APPROVE_DT - datetime,
382
				@UNIT_NAME
383
				)
384
			
385
		
386
		
387
			IF @@ERROR <> 0 GOTO ABORT1
388
		-- next Group_Id
389
			FETCH NEXT FROM ListGoods INTO @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
390
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
391
		END
392
		CLOSE ListGoods
393
		DEALLOCATE ListGoods
394

    
395

    
396
		UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(TOTAL_AMT_ETM) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@l_REQ_ID) WHERE REQ_ID=@l_REQ_ID 
397

    
398

    
399
		IF @@Error <> 0 GOTO ABORT
400

    
401
		DECLARE @COST_ID VARCHAR(20)
402

    
403
		DECLARE lstCostCenter CURSOR FOR
404
		SELECT COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_PL_REQ_ID
405
		GROUP BY COST_ID
406
		OPEN lstCostCenter
407
		FETCH NEXT FROM lstCostCenter INTO @COST_ID
408
		WHILE @@FETCH_STATUS=0
409
		BEGIN
410

    
411

    
412
			DECLARE @l_REQ_COST_ID VARCHAR(15)
413
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
414
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
415
				INSERT INTO dbo.TR_REQUEST_COSTCENTER
416
				(
417
					REQ_COST_ID,
418
					COST_ID,
419
					REQ_ID,
420
					NOTES,
421
					AUTH_STATUS,
422
					MAKER_ID,
423
					CREATE_DT,
424
					CHECKER_ID,
425
					APPROVE_DT
426
				)
427
				VALUES
428
				(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
429
					@COST_ID,        -- COST_ID - varchar(15)
430
					@l_REQ_ID,        -- REQ_ID - varchar(15)
431
					N'',       -- NOTES - nvarchar(500)
432
					'',        -- AUTH_STATUS - varchar(1)
433
					@p_MAKER_ID,        -- MAKER_ID - varchar(15)
434
					NULL, -- CREATE_DT - datetime
435
					'',        -- CHECKER_ID - varchar(15)
436
					NULL  -- APPROVE_DT - datetime
437
					)
438
				FETCH NEXT FROM lstCostCenter INTO @COST_ID
439
		END 
440
		CLOSE lstCostCenter
441
		DEALLOCATE lstCostCenter
442
		IF @@Error <> 0 GOTO ABORT
443

    
444
		
445
		INSERT INTO dbo.PL_REQUEST_PROCESS
446
		(
447
		    REQ_ID,
448
		    PROCESS_ID,
449
		    STATUS,
450
		    ROLE_USER,
451
		    BRANCH_ID,
452
		    CHECKER_ID,
453
		    APPROVE_DT,
454
		    PARENT_PROCESS_ID,
455
		    IS_LEAF,
456
		    COST_ID,
457
		    DVDM_ID,
458
		    NOTES,
459
		    IS_HAS_CHILD
460
		)
461
		VALUES
462
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
463
		    'NEW',        -- PROCESS_ID - varchar(10)
464
		    'C',        -- STATUS - varchar(5)
465
		    '',        -- ROLE_USER - varchar(50)
466
		    '',        -- BRANCH_ID - varchar(15)
467
		    '',        -- CHECKER_ID - varchar(15)
468
		    NULL,      -- APPROVE_DT - datetime
469
		    '',        -- PARENT_PROCESS_ID - varchar(10)
470
		    'N',        -- IS_LEAF - varchar(1)
471
		    '',        -- COST_ID - varchar(15)
472
		    '',        -- DVDM_ID - varchar(15)
473
		    N'Chờ gửi phê duyệt',       -- NOTES - nvarchar(500)
474
		    NULL       -- IS_HAS_CHILD - bit
475
		    )
476
		
477
		--Insert into TABLE TR_REQUEST_DOC_FILE
478

    
479
		DECLARE @tableTrREQFile TABLE(
480
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
481
			IS_VIEW	bit,
482
			REQ_ID varchar(20),
483
			NOTES  nvarchar(200)
484
		)
485

    
486

    
487
		Declare @fdoc INT
488
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
489

    
490
		INSERT INTO @tableTrREQFile
491
		SELECT *
492
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
493
		WITH 
494
		(
495
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
496
			IS_VIEW	bit,
497
			REQ_ID varchar(20),
498
			NOTES  nvarchar(200)
499
		)
500

    
501
		DECLARE ListTrREQFile  CURSOR FOR
502
		SELECT * FROM @tableTrREQFile
503
		OPEN ListTrREQFile
504

    
505
		Declare 
506
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
507
		@IS_VIEW	bit,
508
		@REQ_ID varchar(20),
509
		@_NOTES nvarchar(200)
510

    
511
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
512
		WHILE @@FETCH_STATUS = 0	
513
		BEGIN
514
			DECLARE @l_REQFile_ID VARCHAR(15)
515
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
516
			--select @l_REQFile_ID
517
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
518
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
519

    
520
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
521

    
522
			INSERT INTO dbo.TR_REQUEST_DOC_FILE
523
			(
524
			     [TR_REQUEST_DOC_FILE_ID]
525
				,[IS_VIEW]
526
				,[REQ_ID]
527
				,[NOTES]
528
			)	
529
			VALUES
530
			(   
531
				@l_REQFile_ID
532
				,isnull(@IS_VIEW,0)
533
				,@l_REQ_ID
534
				,@_NOTES
535
			)
536
			IF @@ERROR <> 0 GOTO ABORT1
537
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
538
		END
539
		CLOSE ListTrREQFile
540
		DEALLOCATE ListTrREQFile
541
		IF @@Error <> 0 GOTO ABORT
542
		
543
		if(select count(*) from @TEMP) = 0
544
		begin
545
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
546
		end
547
COMMIT TRANSACTION
548
SELECT '0' as Result, @l_REQ_ID  REQ_ID,[REF_ID], [TYPE] , @p_REQ_CODE AS ErrorDesc from @TEMP
549
RETURN '0'
550
ABORT:
551
BEGIN
552
		ROLLBACK TRANSACTION
553
		SELECT '-1' AS Result
554
		RETURN '-1'
555
End
556
ABORT1:
557
BEGIN
558
		CLOSE ListGoods
559
		DEALLOCATE ListGoods
560
		ROLLBACK TRANSACTION
561
		SELECT '-1' AS Result
562
		RETURN '-1'
563
End