Project

General

Profile

4.0 TR_REQUEST_DOC_UPD.txt

Luc Tran Van, 03/16/2023 11:37 PM

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

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

    
52
		UPDATE dbo.TR_REQUEST_DOC
53
		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,
54
		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,
55

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

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

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

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

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

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

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

    
187
		--Insert into TABLE PL_REQUEST_DOC_DT
188

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

    
210

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

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

    
257
		DECLARE @p_REQ_DOC_DT_ROW_NUM INT = 0
258

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

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

    
283

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

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

    
385
			INSERT INTO dbo.TR_REQUEST_DOC_DT
386
			(
387
			    REQDT_ID,
388
				[REQPL_DT_ID],
389
			    REQ_DOC_ID,
390
			    PL_REQDT_ID,
391
			    GD_ID,
392
				TRAN_TYPE_ID,
393
				SUP_ID,
394
			    DESCRIPTION,
395
			    QUANTITY,
396
			    PRICE,
397
				PRICE_ETM,
398
			    TOTAL_AMT,
399
				TOTAL_AMT_ETM,
400
			    REQ_DT,
401
			    AMORT_MONTH,
402
			    NOTES,
403
			    RECORD_STATUS,
404
			    MAKER_ID,
405
			    CREATE_DT,
406
			    AUTH_STATUS,
407
			    CHECKER_ID,
408
			    APPROVE_DT,
409
				HANGHOA_ID,
410
				CURRENCY,
411
				EXCHANGE_RATE,
412
				TAXES,
413
				DVDM_ID, UNIT_NAME
414
			)	
415
			VALUES
416
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
417
				(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),
418
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
419
			    @PL_REQDT_ID,        -- PLAN_ID - varchar(15)
420
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
421
			   -- @TRADE_TYPE_ID,
422
			   CASE WHEN (SELECT TOP 1 TRAN_TYPE_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @p_REQ_ID AND PL_REQDT_ID = @PL_REQDT_ID) ='CDT' THEN 'TRN0000000003' ELSE 'TRN0000000009' END, -- LUCTV 17-03-2023 FIX
423
				-- NEU TTCT LA CDT THÌ PYCMS AUTO CDT & NGUOC LAI
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