Project

General

Profile

TR_REQUEST_DOC_Upd.txt

Luc Tran Van, 12/01/2022 03:00 PM

 
1

    
2

    
3
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_Upd]
4
@p_REQ_ID varchar(15),
5
@p_REQ_CODE	nvarchar(100)  = NULL,
6
@p_REQ_NAME	nvarchar(200)  = NULL,
7
@p_REQ_DT	varchar(30) = NULL,--CONVERT(DATETIME, @p_REQ_DT, 103)
8
@p_REQ_TYPE	int = NULL,
9
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
10
@p_REQ_REASON NVARCHAR(500)=NULL,
11
@p_PL_REQ_ID VARCHAR(15),
12
@p_TOTAL_AMT	decimal(18,2) = NULL,
13
@p_NOTES	nvarchar(1000)  = NULL,
14
@p_RECORD_STATUS	varchar(1)  = NULL,
15
@p_MAKER_ID	varchar(12)  = NULL,
16
@p_CREATE_DT	varchar(30) = NULL,--CONVERT(DATETIME, @p_CREATE_DT, 103)
17
@p_AUTH_STATUS	varchar(50)  = NULL,
18
@p_CHECKER_ID	varchar(12)  = NULL,
19
@p_APPROVE_DT	varchar(30) = NULL,--CONVERT(DATETIME, @p_APPROVE_DT, 103)
20
@p_BRANCH_DO VARCHAR(15)=NULL,
21
@p_BRANCH_CREATE VARCHAR(15)=NULL,
22
@p_DEP_CREATE VARCHAR(20)=NULL,
23
@p_REQ_PARENT_ID VARCHAR(20)=NULL,
24
@p_USER_REQUEST VARCHAR(15)=NULL,
25
@p_SIGN_USER VARCHAR(15)=NULL,
26
@p_Record_ID_1 VARCHAR(15)=NULL,
27
@p_Record_ID_2 VARCHAR(15)=NULL,
28
@p_Record_ID_3 VARCHAR(15)=NULL,
29
@p_ListGood XML,
30
@p_ListTrREQFile XML,
31
@p_ListPlGood XML
32
AS
33
DECLARE @TEMP TABLE
34
			(
35
				[KEY] varchar(15),
36
				[REF_ID] varchar(15),
37
				[TYPE] varchar(50)
38
			)
39
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
40
	BEGIN
41
		SELECT 'REQ-00002' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắt buộc nhập' ErrorDesc 
42
		RETURN '0'
43
	END
44

    
45
	--IF NOT EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
46
	--BEGIN
47
	--	--SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00002'
48
	--	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 
49
	--	RETURN '0'
50
	--END 
51
  DECLARE @sErrorCode VARCHAR(20)
52
  BEGIN TRANSACTION
53

    
54
		UPDATE dbo.TR_REQUEST_DOC
55
		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,
56
		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,
57

    
58
		SIGN_USER =@p_SIGN_USER,
59
		BRANCH_DO = @p_BRANCH_DO
60
		WHERE REQ_ID=@p_REQ_ID
61
		-- UPDATE TOTAL_AMT MASTER
62
		UPDATE dbo.TR_REQUEST_DOC
63
		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
64
		IF @@Error <> 0 GOTO ABORT
65
			
66
		DELETE FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @p_REQ_ID
67
		DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID
68
		DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
69

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

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

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

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

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

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

    
189
		--Insert into TABLE PL_REQUEST_DOC_DT
190

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

    
212

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

    
216
		INSERT INTO @lstTRDT
217
		SELECT 
218
			REQDT_ID ,
219
			PL_REQDT_ID,
220
			GOODS_ID ,
221
			[DESCRIPTION],
222
			QUANTITY,
223
			PRICE ,
224
			TOTAL_AMT,	
225
			NOTES,
226
			Convert(Datetime,REQ_DT,103),
227
			AMORT_MONTH,
228
			TRADE_TYPE_ID,
229
			SUP_ID,
230
			HH_ID,
231
			CURRENCY,
232
			EXCHANGE_RATE,
233
			TAXES,
234
			DVDM_ID,
235
			UNIT_NAME
236
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
237
		WITH 
238
		(
239
			REQDT_ID 	varchar(15)  ,
240
			PL_REQDT_ID	varchar(15)  ,
241
			GOODS_ID	varchar(15)  ,
242
			[DESCRIPTION] nvarchar(500),
243
			QUANTITY	decimal(18,0)  ,
244
			PRICE	decimal(18,2)  ,
245
			TOTAL_AMT	decimal(18,2),	
246
			NOTES	nvarchar(1000),
247
			REQ_DT varchar(30),
248
			AMORT_MONTH DECIMAL(18,2),
249
			TRADE_TYPE_ID varchar(15),
250
			SUP_ID varchar(15),
251
			HH_ID VARCHAR(20),
252
			CURRENCY	nvarchar(50),
253
			EXCHANGE_RATE	decimal(18, 2),
254
			TAXES	decimal(18, 2),
255
			DVDM_ID  VARCHAR(20),
256
			UNIT_NAME NVARCHAR(100)
257
			)
258

    
259
		DECLARE @p_REQ_DOC_DT_ROW_NUM INT = 0
260

    
261
		DECLARE ListGoods  CURSOR FOR
262
		SELECT * FROM @lstTRDT
263
		OPEN ListGoods
264

    
265
		Declare 
266
		@REQDT_ID 	varchar(15)  ,
267
		@PL_REQDT_ID	varchar(15),
268
		@SUP_ID	varchar(15),
269
		@GOODS_ID	varchar(15),
270
		@DESCRIPTION nvarchar(500),
271
		@QUANTITY	decimal(18,0),
272
		@PRICE	decimal(18,2),
273
		@TOTAL_AMT	decimal(18,2),		
274
		@NOTES	nvarchar(1000),
275
		@TRADE_TYPE_ID varchar(15),
276
		@AMORT_MONTH DECIMAL(18,2),
277
		@RED_DT DATETIME,
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
		FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
287
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
288
		WHILE @@FETCH_STATUS = 0	
289
		BEGIN
290
			
291
			SET @p_REQ_DOC_DT_ROW_NUM = @p_REQ_DOC_DT_ROW_NUM + 1
292
			--------------Mô tả hàng hóa dịch vụ-----------
293
			IF(@DESCRIPTION IS NULL OR @DESCRIPTION = '')
294
			BEGIN
295
				CLOSE ListGoods
296
				DEALLOCATE ListGoods
297
				ROLLBACK TRANSACTION
298
				SELECT '-1' AS Result, 
299
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
300
					+ N'. Mô tả hàng hóa/ dịch vụ không được để trống' AS ErrorDesc
301
				RETURN '-1'
302
			END
303
			---------------Đơn vị tính----------------
304
			IF(@UNIT_NAME IS NULL OR @UNIT_NAME = '')
305
			BEGIN
306
				CLOSE ListGoods
307
				DEALLOCATE ListGoods
308
				ROLLBACK TRANSACTION
309
				SELECT '-1' AS Result, 
310
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
311
					+ N'. Đơn vị tính không được để trống' AS ErrorDesc
312
				RETURN '-1'
313
			END
314
			---------------Số lượng---------------
315
			IF(@QUANTITY IS NULL)
316
			BEGIN
317
				CLOSE ListGoods
318
				DEALLOCATE ListGoods
319
				ROLLBACK TRANSACTION
320
				SELECT '-1' AS Result, 
321
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
322
					+ N'. Số lượng không được để trống' AS ErrorDesc
323
				RETURN '-1'
324
			END
325
			--------------Đơn giá-------------------
326
			IF(@PRICE IS NULL)
327
			BEGIN
328
				CLOSE ListGoods
329
				DEALLOCATE ListGoods
330
				ROLLBACK TRANSACTION
331
				SELECT '-1' AS Result, 
332
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
333
					+ N'. Đơn giá không được để trống' AS ErrorDesc
334
				RETURN '-1'
335
			END
336
			--------------Loại tiền tệ---------------
337
			IF(@CURRENCY IS NULL OR @CURRENCY = '')
338
			BEGIN
339
				CLOSE ListGoods
340
				DEALLOCATE ListGoods
341
				ROLLBACK TRANSACTION
342
				SELECT '-1' AS Result, 
343
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
344
					+ N'. Loại tiền tệ không được để trống' AS ErrorDesc
345
				RETURN '-1'
346
			END
347
			----------------Thuế NTNN---------------
348
			IF(@TAXES IS NULL)
349
			BEGIN
350
				CLOSE ListGoods
351
				DEALLOCATE ListGoods
352
				ROLLBACK TRANSACTION
353
				SELECT '-1' AS Result, 
354
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
355
					+ N'. Thuế NTNN không được để trống' AS ErrorDesc
356
				RETURN '-1'
357
			END
358
			--------------Tỷ giá quy đổi-----------
359
			IF(@EXCHANGE_RATE IS NULL)
360
			BEGIN
361
				CLOSE ListGoods
362
				DEALLOCATE ListGoods
363
				ROLLBACK TRANSACTION
364
				SELECT '-1' AS Result, 
365
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
366
					+ N'. Tỷ giá quy đổi không được để trống' AS ErrorDesc
367
				RETURN '-1'
368
			END
369
			-------------Ngày cần--------------
370
			IF(@RED_DT IS NULL OR @RED_DT = '')
371
			BEGIN
372
				CLOSE ListGoods
373
				DEALLOCATE ListGoods
374
				ROLLBACK TRANSACTION
375
				SELECT '-1' AS Result, 
376
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
377
					+ N'. Ngày cần không được để trống' AS ErrorDesc
378
				RETURN '-1'
379
			END
380

    
381
			DECLARE @l_REQDT_ID VARCHAR(15)
382
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_DT', @l_REQDT_ID out
383
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
384
	
385
			SET @TOTAL_AMT= (@QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE
386

    
387
			INSERT INTO dbo.TR_REQUEST_DOC_DT
388
			(
389
			    REQDT_ID,
390
				[REQPL_DT_ID],
391
			    REQ_DOC_ID,
392
			    PL_REQDT_ID,
393
			    GD_ID,
394
				TRAN_TYPE_ID,
395
				SUP_ID,
396
			    DESCRIPTION,
397
			    QUANTITY,
398
			    PRICE,
399
				PRICE_ETM,
400
			    TOTAL_AMT,
401
				TOTAL_AMT_ETM,
402
			    REQ_DT,
403
			    AMORT_MONTH,
404
			    NOTES,
405
			    RECORD_STATUS,
406
			    MAKER_ID,
407
			    CREATE_DT,
408
			    AUTH_STATUS,
409
			    CHECKER_ID,
410
			    APPROVE_DT,
411
				HANGHOA_ID,
412
				CURRENCY,
413
				EXCHANGE_RATE,
414
				TAXES,
415
				DVDM_ID, UNIT_NAME
416
			)	
417
			VALUES
418
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
419
				(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),
420
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
421
			    @PL_REQDT_ID,        -- PLAN_ID - varchar(15)
422
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
423
			    @TRADE_TYPE_ID,
424
				@SUP_ID,       -- NAME - nvarchar(200)
425
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
426
				@QUANTITY,      -- QUANTITY - decimal(18, 0)
427
			    @PRICE,
428
				@PRICE,-- PRICE - decimal(18, 0)
429
			    ROUND(@TOTAL_AMT,0),   
430
				ROUND(@TOTAL_AMT,0), 
431
				CONVERT(DATETIME, @RED_DT, 103),
432
				@AMORT_MONTH,
433
				@NOTES,  -- TOTAL_AMT - decimal(18, 0)
434
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
435
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
436
			    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
437
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
438
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
439
			    CONVERT(DATETIME, @p_APPROVE_DT, 103),
440
				@HH_ID,
441
				@CURRENCY,
442
				@EXCHANGE_RATE,
443
				@TAXES,
444
				@DVDM_ID,  -- APPROVE_DT - datetime
445
				@UNIT_NAME
446
			)
447
			
448
			
449
			IF @@ERROR <> 0 GOTO ABORT1
450
		-- next Group_Id
451
		FETCH NEXT FROM ListGoods INTO @REQDT_ID,@PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
452
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
453
		END
454
		CLOSE ListGoods
455
		DEALLOCATE ListGoods
456

    
457
		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 
458

    
459
			IF @@Error <> 0 GOTO ABORT
460
		DECLARE @COST_ID VARCHAR(20)
461

    
462
		DECLARE lstCostCenter CURSOR FOR
463
		SELECT COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_PL_REQ_ID
464
		GROUP BY COST_ID
465
		OPEN lstCostCenter
466
		FETCH NEXT FROM lstCostCenter INTO @COST_ID
467
		WHILE @@FETCH_STATUS=0
468
		BEGIN
469

    
470

    
471
			DECLARE @l_REQ_COST_ID VARCHAR(15)
472
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
473
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
474
				INSERT INTO dbo.TR_REQUEST_COSTCENTER
475
				(
476
					REQ_COST_ID,
477
					COST_ID,
478
					REQ_ID,
479
					NOTES,
480
					AUTH_STATUS,
481
					MAKER_ID,
482
					CREATE_DT,
483
					CHECKER_ID,
484
					APPROVE_DT
485
				)
486
				VALUES
487
				(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
488
					@COST_ID,        -- COST_ID - varchar(15)
489
					@p_REQ_ID,        -- REQ_ID - varchar(15)
490
					N'',       -- NOTES - nvarchar(500)
491
					'',        -- AUTH_STATUS - varchar(1)
492
					@p_MAKER_ID,        -- MAKER_ID - varchar(15)
493
					NULL, -- CREATE_DT - datetime
494
					'',        -- CHECKER_ID - varchar(15)
495
					NULL  -- APPROVE_DT - datetime
496
					)
497
				FETCH NEXT FROM lstCostCenter INTO @COST_ID
498
		END 
499
		CLOSE lstCostCenter
500
		DEALLOCATE lstCostCenter
501
		IF @@Error <> 0 GOTO ABORT
502
		
503

    
504
	
505
	--Insert into TABLE TR_REQUEST_DOC_FILE
506

    
507
		DECLARE @tableTrREQFile TABLE(
508
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
509
			IS_VIEW	bit,
510
			REQ_ID varchar(20),
511
			NOTES  nvarchar(200)
512
		)
513

    
514

    
515
		Declare @fdoc INT
516
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
517

    
518
		INSERT INTO @tableTrREQFile
519
		SELECT *
520
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
521
		WITH 
522
		(
523
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
524
			IS_VIEW	bit,
525
			REQ_ID varchar(20),
526
			NOTES  nvarchar(200)
527
		)
528

    
529
		--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
530
    ------------BAODNQ 11/11/2022 : DELETE TR_REQUEST_DOC_FILE----------
531
    DELETE FROM TR_REQUEST_DOC_FILE WHERE REQ_ID = @p_REQ_ID
532
		DECLARE ListTrREQFile  CURSOR FOR
533
		SELECT * FROM @tableTrREQFile
534
		OPEN ListTrREQFile
535

    
536
		Declare 
537
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
538
		@IS_VIEW	bit,
539
		@REQ_ID varchar(20),
540
		@_NOTES nvarchar(200)
541

    
542
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
543
		WHILE @@FETCH_STATUS = 0	
544
		BEGIN
545
			DECLARE @l_REQFile_ID VARCHAR(15)
546
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
547
			--select @l_REQFile_ID
548
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
549
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
550
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
551
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
552
			begin
553
				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 
554
			end
555
			else
556
			begin
557
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
558
				(
559
					 [TR_REQUEST_DOC_FILE_ID]
560
					,[IS_VIEW]
561
					,[REQ_ID]
562
					,[NOTES]
563
				)	
564
				VALUES
565
				(   
566
					@l_REQFile_ID
567
					,isnull(@IS_VIEW,0)
568
					,@p_REQ_ID,
569
					@_NOTES
570
				)
571
			end
572
			
573
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
574
		END
575
		CLOSE ListTrREQFile
576
		DEALLOCATE ListTrREQFile
577
		IF @@Error <> 0 GOTO ABORT
578

    
579
		if(select count(*) from @TEMP) = 0
580
		begin
581
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
582
		end
583
COMMIT TRANSACTION
584
--Cuong LX 17/11/2021
585
	IF(@p_Record_ID_1 is null OR @p_Record_ID_1 = '')--Xóa biên bản xét giá
586
	BEGIN
587
		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)
588
		DELETE TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID
589
	END
590
	IF(@p_Record_ID_2 is null OR @p_Record_ID_2 = '')--Xóa biên bản xét giá
591
	BEGIN
592
		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)
593
		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)
594
		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)
595
		DELETE TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID
596
	END
597
SELECT '0' as Result, @p_REQ_ID  REQ_ID,[REF_ID], [TYPE] , 
598
	@p_REQ_CODE REQ_CODE, '' AS ErrorDesc from @TEMP
599
RETURN '0'
600
ABORT:
601
BEGIN
602
		ROLLBACK TRANSACTION
603
		SELECT '-1' AS Result
604
		RETURN '-1'
605
End
606
ABORT1:
607
BEGIN
608
		CLOSE ListGoods
609
		DEALLOCATE ListGoods
610
		ROLLBACK TRANSACTION
611
		SELECT '-1' AS Result
612
		RETURN '-1'
613
End