Project

General

Profile

TR_REQUEST_DOC_Upd.txt

Luc Tran Van, 04/07/2023 02:25 PM

 
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(MAX),
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(MAX),
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
		DECLARE @p_REQ_DOC_DT_ROW_NUM INT = 0
259

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

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

    
284

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

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

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

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

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

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

    
471

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

    
505
	
506
	--Insert into TABLE TR_REQUEST_DOC_FILE
507

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

    
515

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

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

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

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

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

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

    
616

    
617

    
618