Project

General

Profile

TR_REQUEST_DOC_Upd.txt

Luc Tran Van, 11/11/2022 11:30 AM

 
1

    
2
ALTER PROCEDURE dbo.TR_REQUEST_DOC_Upd
3
@p_REQ_ID varchar(15),
4
@p_REQ_CODE	nvarchar(100)  = NULL,
5
@p_REQ_NAME	nvarchar(200)  = NULL,
6
@p_REQ_DT	varchar(30) = NULL,--CONVERT(DATETIME, @p_REQ_DT, 103)
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(18,2) = 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,--CONVERT(DATETIME, @p_CREATE_DT, 103)
16
@p_AUTH_STATUS	varchar(50)  = NULL,
17
@p_CHECKER_ID	varchar(12)  = NULL,
18
@p_APPROVE_DT	varchar(30) = NULL,--CONVERT(DATETIME, @p_APPROVE_DT, 103)
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_Record_ID_1 VARCHAR(15)=NULL,
26
@p_Record_ID_2 VARCHAR(15)=NULL,
27
@p_Record_ID_3 VARCHAR(15)=NULL,
28
@p_ListGood XML,
29
@p_ListTrREQFile XML,
30
@p_ListPlGood XML
31
AS
32
DECLARE @TEMP TABLE
33
			(
34
				[KEY] varchar(15),
35
				[REF_ID] varchar(15),
36
				[TYPE] varchar(50)
37
			)
38
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
39
	BEGIN
40
		SELECT 'REQ-00002' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắt buộc nhập' ErrorDesc 
41
		RETURN '0'
42
	END
43

    
44
	--IF NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
45
	--BEGIN
46
	--	--SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00002'
47
	--	SELECT 'REQ-00002' Result, '' REQ_ID, N'Mã phiếu yêu cầu mua sắm chưa tồn tại trong hệ thống' ErrorDesc 
48
	--	RETURN '0'
49
	--END 
50
  DECLARE @sErrorCode VARCHAR(20)
51
  BEGIN TRANSACTION
52

    
53
		UPDATE dbo.TR_REQUEST_DOC
54
		SET REQ_CODE=@p_REQ_CODE,REQ_NAME=@p_REQ_NAME,REQ_DT=CONVERT(DATETIME, @p_REQ_DT, 103),REQ_CONTENT=@p_REQ_CONTENT,REQ_REASON=@p_REQ_REASON,
55
		RECORD_STATUS=@p_RECORD_STATUS,PL_REQ_ID=@p_PL_REQ_ID,MAKER_ID=@p_MAKER_ID,TOTAL_AMT=@p_TOTAL_AMT,NOTES=@p_NOTES,CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),USER_REQUEST=@p_USER_REQUEST,DEP_CREATE=@p_DEP_CREATE,REQ_PARENT_ID=@p_REQ_PARENT_ID,
56

    
57
		SIGN_USER =@p_SIGN_USER,
58
		BRANCH_DO = @p_BRANCH_DO
59
		WHERE REQ_ID=@p_REQ_ID
60
		-- UPDATE TOTAL_AMT MASTER
61
		UPDATE dbo.TR_REQUEST_DOC
62
		SET TOTAL_AMT=(SELECT SUM(ISNULL(TOTAL_AMT,0)) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID) WHERE REQ_ID =@p_REQ_ID
63
		IF @@Error <> 0 GOTO ABORT
64
			
65
		DELETE FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @p_REQ_ID
66
		DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID
67
		DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
68

    
69
		-- LƯỚI HÀNG HÓA THEO TỜ TRÌNH
70
		DECLARE @lstPLDT TABLE(
71
			REQPL_DT_ID VARCHAR(15),
72
			REQ_DOC_ID VARCHAR(15),
73
			PL_REQDT_ID VARCHAR(15),
74
			GD_ID VARCHAR(15),
75
			SUP_ID VARCHAR(15),
76
			HH_ID VARCHAR(15),
77
			TRAN_TYPE_ID VARCHAR(15),
78
			DES_GOOD NVARCHAR(500),
79
			QUANTITY_PL DECIMAL(18, 0),
80
			PRICE_PL DECIMAL(18, 2),
81
			CURRENCY NVARCHAR(50),
82
			EXCHANGE_RATE DECIMAL(18, 2),
83
			TAXES DECIMAL(18, 2),
84
			TOTAL_AMT_ETM DECIMAL(18, 2),
85
			REASON_CDT NVARCHAR(500),
86
			REQ_DT VARCHAR(30),
87
			NOTES NVARCHAR(500)
88
		)
89
		
90
		DECLARE @doc INT
91
		Exec sp_xml_preparedocument @doc Output,@p_ListPlGood
92
		
93
		INSERT INTO @lstPLDT
94
		SELECT *
95
		FROM OPENXML(@doc,'/Root/ListPlGood',2)
96
		WITH 
97
		(
98
			REQPL_DT_ID VARCHAR(15),
99
			REQ_DOC_ID VARCHAR(15),
100
			PL_REQDT_ID VARCHAR(15),
101
			GD_ID VARCHAR(15),
102
			SUP_ID VARCHAR(15),
103
			HH_ID VARCHAR(15),
104
			TRAN_TYPE_ID VARCHAR(15),
105
			DES_GOOD NVARCHAR(500),
106
			QUANTITY_PL DECIMAL(18, 0),
107
			PRICE_PL DECIMAL(18, 2),
108
			CURRENCY NVARCHAR(50),
109
			EXCHANGE_RATE DECIMAL(18, 2),
110
			TAXES DECIMAL(18, 2),
111
			TOTAL_AMT_ETM DECIMAL(18, 2),
112
			REASON_CDT NVARCHAR(500),
113
			REQ_DT VARCHAR(30),
114
			NOTES NVARCHAR(500)
115
		)
116

    
117
		DECLARE PlGoodsCur CURSOR FOR SELECT * FROM @lstPLDT
118
		OPEN PlGoodsCur
119

    
120
		DECLARE
121
		@pl_REQPL_DT_ID VARCHAR(15),
122
		@pl_REQ_DOC_ID VARCHAR(15),
123
		@pl_PL_REQDT_ID VARCHAR(15),
124
		@pl_GD_ID VARCHAR(15),
125
		@pl_SUP_ID VARCHAR(15),
126
		@pl_HH_ID VARCHAR(15),
127
		@pl_TRAN_TYPE_ID VARCHAR(15),
128
		@pl_DES_GOOD NVARCHAR(500),
129
		@pl_QUANTITY_PL DECIMAL(18, 0),
130
		@pl_PRICE_PL DECIMAL(18, 2),
131
		@pl_CURRENCY NVARCHAR(50),
132
		@pl_EXCHANGE_RATE DECIMAL(18, 2),
133
		@pl_TAXES DECIMAL(18, 2),
134
		@pl_TOTAL_AMT_ETM DECIMAL(18, 2),
135
		@pl_REASON_CDT NVARCHAR(500),
136
		@pl_REQ_DT VARCHAR(30),
137
		@pl_NOTES NVARCHAR(500)
138

    
139
		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,
140
		@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
141
			
142
		WHILE @@FETCH_STATUS = 0	
143
		BEGIN
144

    
145
		DECLARE @l_PLDT_ID VARCHAR(15)
146
		EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_PL_DT', @l_PLDT_ID out
147
		IF @l_PLDT_ID='' OR @l_PLDT_ID IS NULL GOTO ABORT
148

    
149
		INSERT INTO dbo.TR_REQUEST_DOC_PL_DT
150
		(
151
		    REQPL_DT_ID, REQ_DOC_ID, PL_REQDT_ID, GD_ID, SUP_ID, HH_ID, TRAN_TYPE_ID, MAKER_ID, CREATE_DT,
152
		    AUTH_STATUS, CHECKER_ID,APPROVE_DT,DES_GOOD,QUANTITY_PL,PRICE_PL,CURRENCY,EXCHANGE_RATE,TAXES,TOTAL_AMT_ETM,
153
			REASON_CDT,REQ_DT,NOTES, RECORD_STATUS
154
		)
155
		VALUES
156
		(   @l_PLDT_ID,        -- REQPL_DT_ID - varchar(15) -- primary key
157
		    @p_REQ_ID,        -- REQ_DOC_ID - varchar(15)
158
		    @pl_PL_REQDT_ID,        -- PL_REQDT_ID - varchar(15) -- chi tiết hàng hóa trong tờ trình
159
		    @pl_GD_ID,        -- GD_ID - varchar(15)
160
		    @pl_SUP_ID,        -- SUP_ID - varchar(15)
161
		    @pl_HH_ID,        -- HH_ID - varchar(15)
162
		    @pl_TRAN_TYPE_ID,        -- TRAN_TYPE_ID - varchar(15)
163
		    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
164
		    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
165
		    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
166
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
167
		    CONVERT(DATETIME, @p_APPROVE_DT, 103), -- APPROVE_DT - datetime
168
		    @pl_DES_GOOD,       -- DES_GOOD - nvarchar(500)
169
		    @pl_QUANTITY_PL,      -- QUANTITY_PL - decimal(18, 0)
170
		    @pl_PRICE_PL,      -- PRICE_PL - decimal(18, 2)
171
		    @pl_CURRENCY,       -- CURRENCY - nvarchar(50)
172
		    @pl_EXCHANGE_RATE,      -- EXCHANGE_RATE - decimal(18, 2)
173
		    @pl_TAXES,      -- TAXES - decimal(18, 2)
174
		    @pl_TOTAL_AMT_ETM,      -- TOTAL_AMT_ETM - decimal(18, 2)
175
		    @pl_REASON_CDT,       -- REASON_CDT - nvarchar(500)
176
		    CONVERT(DATETIME, @pl_REQ_DT, 103), -- REQ_DT - datetime
177
		    @pl_NOTES,       -- NOTES - nvarchar(500)
178
		    @p_RECORD_STATUS         -- RECORD_STATUS - varchar(1)
179
		)
180
		
181
		IF @@ERROR <> 0 GOTO ABORT1
182
		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,
183
		@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
184
		END
185
		CLOSE PlGoodsCur
186
		DEALLOCATE PlGoodsCur
187

    
188
		--Insert into TABLE PL_REQUEST_DOC_DT
189

    
190
		DECLARE @lstTRDT TABLE(
191
			REQDT_ID 	varchar(15)  ,
192
			PL_REQDT_ID	varchar(15)  ,
193
			GOODS_ID	varchar(15)  ,
194
			[DESCRIPTION] nvarchar(500),
195
			QUANTITY	decimal(18,0)  ,
196
			PRICE	decimal(18,2)  ,
197
			TOTAL_AMT	decimal(18,2),	
198
			NOTES	nvarchar(1000),
199
			REQ_DT varchar(30),
200
			AMORT_MONTH DECIMAL(18,2),
201
			TRADE_TYPE_ID varchar(15),
202
			SUP_ID varchar(15),
203
			HH_ID VARCHAR(20),
204
			CURRENCY	nvarchar(50),
205
			EXCHANGE_RATE	decimal(18, 2),
206
			TAXES	decimal(18, 2),
207
			DVDM_ID  VARCHAR(20),
208
			UNIT_NAME NVARCHAR(100)
209
		)
210

    
211

    
212
		Declare @hdoc INT
213
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
214

    
215
		INSERT INTO @lstTRDT
216
		SELECT 
217
			REQDT_ID ,
218
			PL_REQDT_ID,
219
			GOODS_ID ,
220
			[DESCRIPTION],
221
			QUANTITY,
222
			PRICE ,
223
			TOTAL_AMT,	
224
			NOTES,
225
			Convert(Datetime,REQ_DT,103),
226
			AMORT_MONTH,
227
			TRADE_TYPE_ID,
228
			SUP_ID,
229
			HH_ID,
230
			CURRENCY,
231
			EXCHANGE_RATE,
232
			TAXES,
233
			DVDM_ID,
234
			UNIT_NAME
235
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
236
		WITH 
237
		(
238
			REQDT_ID 	varchar(15)  ,
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
		DECLARE ListGoods  CURSOR FOR
258
		SELECT * FROM @lstTRDT
259
		OPEN ListGoods
260

    
261
		Declare 
262
		@REQDT_ID 	varchar(15)  ,
263
		@PL_REQDT_ID	varchar(15),
264
		@SUP_ID	varchar(15),
265
		@GOODS_ID	varchar(15),
266
		@DESCRIPTION nvarchar(500),
267
		@QUANTITY	decimal(18,0),
268
		@PRICE	decimal(18,2),
269
		@TOTAL_AMT	decimal(18,2),		
270
		@NOTES	nvarchar(1000),
271
		@TRADE_TYPE_ID varchar(15),
272
		@AMORT_MONTH DECIMAL(18,2),
273
		@RED_DT DATETIME,
274
		@HH_ID VARCHAR(20),
275
		@CURRENCY	nvarchar(50),
276
		@EXCHANGE_RATE	decimal(18, 2),
277
		@TAXES	decimal(18, 2),
278
		@DVDM_ID VARCHAR(20),
279
		@UNIT_NAME NVARCHAR(100)
280

    
281

    
282
		FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
283
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
284
		WHILE @@FETCH_STATUS = 0	
285
		BEGIN
286
			
287
			DECLARE @l_REQDT_ID VARCHAR(15)
288
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_DT', @l_REQDT_ID out
289
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
290
	
291
			SET @TOTAL_AMT= (@QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE
292

    
293
			INSERT INTO dbo.TR_REQUEST_DOC_DT
294
			(
295
			    REQDT_ID,
296
				[REQPL_DT_ID],
297
			    REQ_DOC_ID,
298
			    PL_REQDT_ID,
299
			    GD_ID,
300
				TRAN_TYPE_ID,
301
				SUP_ID,
302
			    DESCRIPTION,
303
			    QUANTITY,
304
			    PRICE,
305
				PRICE_ETM,
306
			    TOTAL_AMT,
307
				TOTAL_AMT_ETM,
308
			    REQ_DT,
309
			    AMORT_MONTH,
310
			    NOTES,
311
			    RECORD_STATUS,
312
			    MAKER_ID,
313
			    CREATE_DT,
314
			    AUTH_STATUS,
315
			    CHECKER_ID,
316
			    APPROVE_DT,
317
				HANGHOA_ID,
318
				CURRENCY,
319
				EXCHANGE_RATE,
320
				TAXES,
321
				DVDM_ID, UNIT_NAME
322
			)	
323
			VALUES
324
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
325
				(SELECT TOP 1 REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @p_REQ_ID AND PL_REQDT_ID = @PL_REQDT_ID),
326
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
327
			    @PL_REQDT_ID,        -- PLAN_ID - varchar(15)
328
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
329
			    @TRADE_TYPE_ID,
330
				@SUP_ID,       -- NAME - nvarchar(200)
331
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
332
				@QUANTITY,      -- QUANTITY - decimal(18, 0)
333
			    @PRICE,
334
				@PRICE,-- PRICE - decimal(18, 0)
335
			    ROUND(@TOTAL_AMT,0),   
336
				ROUND(@TOTAL_AMT,0), 
337
				CONVERT(DATETIME, @RED_DT, 103),
338
				@AMORT_MONTH,
339
				@NOTES,  -- TOTAL_AMT - decimal(18, 0)
340
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
341
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
342
			    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
343
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
344
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
345
			    CONVERT(DATETIME, @p_APPROVE_DT, 103),
346
				@HH_ID,
347
				@CURRENCY,
348
				@EXCHANGE_RATE,
349
				@TAXES,
350
				@DVDM_ID,  -- APPROVE_DT - datetime
351
				@UNIT_NAME
352
			)
353
			
354
			
355
			IF @@ERROR <> 0 GOTO ABORT1
356
		-- next Group_Id
357
		FETCH NEXT FROM ListGoods INTO @REQDT_ID,@PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
358
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
359
		END
360
		CLOSE ListGoods
361
		DEALLOCATE ListGoods
362

    
363
		UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(TOTAL_AMT_ETM) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID 
364

    
365
			IF @@Error <> 0 GOTO ABORT
366
		DECLARE @COST_ID VARCHAR(20)
367

    
368
		DECLARE lstCostCenter CURSOR FOR
369
		SELECT COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_PL_REQ_ID
370
		GROUP BY COST_ID
371
		OPEN lstCostCenter
372
		FETCH NEXT FROM lstCostCenter INTO @COST_ID
373
		WHILE @@FETCH_STATUS=0
374
		BEGIN
375

    
376

    
377
			DECLARE @l_REQ_COST_ID VARCHAR(15)
378
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
379
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
380
				INSERT INTO dbo.TR_REQUEST_COSTCENTER
381
				(
382
					REQ_COST_ID,
383
					COST_ID,
384
					REQ_ID,
385
					NOTES,
386
					AUTH_STATUS,
387
					MAKER_ID,
388
					CREATE_DT,
389
					CHECKER_ID,
390
					APPROVE_DT
391
				)
392
				VALUES
393
				(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
394
					@COST_ID,        -- COST_ID - varchar(15)
395
					@p_REQ_ID,        -- REQ_ID - varchar(15)
396
					N'',       -- NOTES - nvarchar(500)
397
					'',        -- AUTH_STATUS - varchar(1)
398
					@p_MAKER_ID,        -- MAKER_ID - varchar(15)
399
					NULL, -- CREATE_DT - datetime
400
					'',        -- CHECKER_ID - varchar(15)
401
					NULL  -- APPROVE_DT - datetime
402
					)
403
				FETCH NEXT FROM lstCostCenter INTO @COST_ID
404
		END 
405
		CLOSE lstCostCenter
406
		DEALLOCATE lstCostCenter
407
		IF @@Error <> 0 GOTO ABORT
408
		
409

    
410
	
411
	--Insert into TABLE TR_REQUEST_DOC_FILE
412

    
413
		DECLARE @tableTrREQFile TABLE(
414
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
415
			IS_VIEW	bit,
416
			REQ_ID varchar(20),
417
			NOTES  nvarchar(200)
418
		)
419

    
420

    
421
		Declare @fdoc INT
422
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
423

    
424
		INSERT INTO @tableTrREQFile
425
		SELECT *
426
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
427
		WITH 
428
		(
429
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
430
			IS_VIEW	bit,
431
			REQ_ID varchar(20),
432
			NOTES  nvarchar(200)
433
		)
434

    
435
		--delete TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID not in (select TR_REQUEST_DOC_FILE_ID from @tableTrREQFile) and REQ_ID = @p_REQ_ID
436
    ------------BAODNQ 11/11/2022 : DELETE TR_REQUEST_DOC_FILE----------
437
    DELETE FROM TR_REQUEST_DOC_FILE WHERE REQ_ID = @p_REQ_ID
438
		DECLARE ListTrREQFile  CURSOR FOR
439
		SELECT * FROM @tableTrREQFile
440
		OPEN ListTrREQFile
441

    
442
		Declare 
443
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
444
		@IS_VIEW	bit,
445
		@REQ_ID varchar(20),
446
		@_NOTES nvarchar(200)
447

    
448
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
449
		WHILE @@FETCH_STATUS = 0	
450
		BEGIN
451
			DECLARE @l_REQFile_ID VARCHAR(15)
452
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
453
			--select @l_REQFile_ID
454
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
455
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
456
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
457
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
458
			begin
459
				update TR_REQUEST_DOC_FILE set IS_VIEW=isnull(@IS_VIEW,0),REQ_ID = @p_REQ_ID,NOTES=@_NOTES where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID 
460
			end
461
			else
462
			begin
463
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
464
				(
465
					 [TR_REQUEST_DOC_FILE_ID]
466
					,[IS_VIEW]
467
					,[REQ_ID]
468
					,[NOTES]
469
				)	
470
				VALUES
471
				(   
472
					@l_REQFile_ID
473
					,isnull(@IS_VIEW,0)
474
					,@p_REQ_ID,
475
					@_NOTES
476
				)
477
			end
478
			
479
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
480
		END
481
		CLOSE ListTrREQFile
482
		DEALLOCATE ListTrREQFile
483
		IF @@Error <> 0 GOTO ABORT
484

    
485
		if(select count(*) from @TEMP) = 0
486
		begin
487
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
488
		end
489
COMMIT TRANSACTION
490
--Cuong LX 17/11/2021
491
	IF(@p_Record_ID_1 is null OR @p_Record_ID_1 = '')--Xóa biên bản xét giá
492
	BEGIN
493
		DELETE TR_REQ_DOC_XETGIA_DUOI_100M_DT WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID)
494
		DELETE TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID
495
	END
496
	IF(@p_Record_ID_2 is null OR @p_Record_ID_2 = '')--Xóa biên bản xét giá
497
	BEGIN
498
		DELETE TR_REQ_DOC_XETGIA_100M_500M_DT_DGC WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID)
499
		DELETE TR_REQ_DOC_XETGIA_100M_500M_DT_XG WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID)
500
		DELETE TR_REQ_DOC_XETGIA_100M_500M_XH WHERE RECORD_MASTER_ID = (SELECT TOP(1)RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID)
501
		DELETE TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID
502
	END
503
SELECT '0' as Result, @p_REQ_ID  REQ_ID,[REF_ID], [TYPE] , 
504
	@p_REQ_CODE REQ_CODE, '' AS ErrorDesc from @TEMP
505
RETURN '0'
506
ABORT:
507
BEGIN
508
		ROLLBACK TRANSACTION
509
		SELECT '-1' AS Result
510
		RETURN '-1'
511
End
512
ABORT1:
513
BEGIN
514
		CLOSE ListGoods
515
		DEALLOCATE ListGoods
516
		ROLLBACK TRANSACTION
517
		SELECT '-1' AS Result
518
		RETURN '-1'
519
End
520
GO