Project

General

Profile

dbo.TR_REQUEST_DOC_DVMS_Upd.txt

Luc Tran Van, 04/10/2023 11:53 AM

 
1
ALTER PROCEDURE dbo.TR_REQUEST_DOC_DVMS_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	nvarchar(30) = NULL,
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	nvarchar(30) = NULL,
15
@p_AUTH_STATUS	varchar(50)  = NULL,
16
@p_CHECKER_ID	varchar(12)  = NULL,
17
@p_APPROVE_DT	nvarchar(30) = NULL,
18
@p_BRANCH_DO VARCHAR(15)=NULL,
19
@p_BRANCH_CREATE VARCHAR(15)=NULL,
20
@p_USER_REQUEST VARCHAR(15)=NULL,
21
@p_ListGood XML,
22
@p_ListCostCenter XML,
23
@p_ListTrREQFile XML,
24
@p_IS_KT bit = null
25
AS
26
DECLARE @TEMP TABLE
27
			(
28
				[KEY] varchar(15),
29
				[REF_ID] varchar(15),
30
				[TYPE] varchar(50)
31
				)
32
	--IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
33
	--BEGIN
34
	--	SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
35
	--	RETURN '0'
36
	--END
37
	DECLARE @sErrorCode VARCHAR(20)
38
	
39
  BEGIN TRANSACTION
40

    
41
		UPDATE dbo.TR_REQUEST_DOC
42
		SET BRANCH_DO=@p_BRANCH_DO,
43
		-----------------BAODNQ 26/05/2022: Chỉnh sửa update USER_DVMS---------
44
		USER_DVMS=@p_MAKER_ID,
45
		--------------------END BAODNQ--------------------
46
		IS_KT = @p_IS_KT
47
		WHERE REQ_ID=@p_REQ_ID
48
		-- UPDATE TOTAL_AMT MASTER
49
		UPDATE dbo.TR_REQUEST_DOC
50
		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
51
		IF @@Error <> 0 GOTO ABORT
52
		IF @@Error <> 0 GOTO ABORT
53

    
54

    
55
		--DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID
56
		DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
57
		--Insert into TABLE PL_REQUEST_DOC_DT
58

    
59
		-------------BAODNQ 6/12/2022------------------
60
		DECLARE @p_TR_REPORT_PRICE_TYPE VARCHAR(30)
61
		----------BBXG 10-100M---------
62
		IF(EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID))
63
		BEGIN
64
			SET @p_TR_REPORT_PRICE_TYPE = '10_100M'
65
		END
66
		----------BBXG 1000-500M---------
67
		ELSE IF(EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID))
68
		BEGIN
69
			SET @p_TR_REPORT_PRICE_TYPE = '100_500M'
70
		END
71
		----------BBXG TRÊN 500M---------
72
		ELSE IF(EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID))
73
		BEGIN
74
			SET @p_TR_REPORT_PRICE_TYPE = '500M'
75
		END
76

    
77
		------------BAODNQ 25/10/2022--------------
78
		DECLARE @p_ROW_COUNT INT = 0, @p_TRAN_TYPE_NAME NVARCHAR(500)
79

    
80
		Declare @hdoc INT
81
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
82
		DECLARE ListGoods  CURSOR FOR
83
		SELECT *
84
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
85
		WITH 
86
		(
87
			REQDT_ID 	varchar(15)  ,
88
			PL_REQDT_ID	varchar(15)  ,
89
			GOODS_ID	varchar(15)  ,
90
			[DESCRIPTION] nvarchar(MAX),
91
			QUANTITY	decimal(18, 0)  ,
92
			PRICE	decimal(18, 2)  ,
93
			TOTAL_AMT	decimal(18, 2),	
94
			NOTES	nvarchar(1000),
95
			REQ_DT varchar(30),
96
			AMORT_MONTH DECIMAL(18,2),
97
			TRAN_TYPE_ID varchar(15),
98
			SUP_ID varchar(15),
99
			BID_ID VARCHAR(20),
100
			SUP_NAME NVARCHAR(2000),
101
			OFFERING_VALUE decimal(18, 2),
102
			NOTE_DVMS NVARCHAR(500),
103
			PO_ID VARCHAR(15),
104
			PO_AMT DECIMAL(18,2),
105
			TOTAL_AMT_ETM DECIMAL(18,2),
106
			CURRENCY VARCHAR(15),
107
			EXCHANGE_RATE DECIMAL(18,2),
108
			TAXES DECIMAL(18,2),
109
			-------------BAODNQ 21/4/2022 Thêm biến XML----
110
			DES_GOOD NVARCHAR(500),
111
			UNIT_NAME NVARCHAR(100),
112
			HANGHOA_ID VARCHAR(15),
113
			--------------BAODNQ 23/8/2022 : Thêm chọn hợp đồng nếu chọn HTMS : mua sắm trực tiếp(HĐNT)
114
			CONTRACT_ID VARCHAR(15)
115
		)
116
		OPEN ListGoods
117

    
118
		Declare 
119
		@REQDT_ID 	varchar(15)  ,
120
		@PL_REQDT_ID	varchar(15),
121
		@SUP_ID	varchar(15),
122
		@GOODS_ID	varchar(15),
123
		@DESCRIPTION nvarchar(MAX),
124
		@QUANTITY	decimal(18, 0),
125
		@PRICE	decimal(18, 2),
126
		@TOTAL_AMT	decimal(18, 2),		
127
		@NOTES	nvarchar(1000),
128
		@TRAN_TYPE_ID varchar(15),
129
		@AMORT_MONTH DECIMAL(18,2),
130
		@REQ_DT varchar(30),
131
		@BID_ID VARCHAR(20),
132
		@SUP_NAME NVARCHAR(2000),
133
		@l_SUP_ID VARCHAR(15),
134
		@OFFERING_VALUE DECIMAL(18,2),
135
		@NOTE_DVMS NVARCHAR(500),
136
		@PO_ID VARCHAR(15),
137
		@PO_AMT DECIMAL(18,2),
138
		@TOTAL_AMT_ETM DECIMAL(18,2),
139
		@CURRENCY VARCHAR(15),
140
		@EXCHANGE_RATE DECIMAL(18,2),
141
		@TAXES DECIMAL(18,2),
142
		-------------BAODNQ 21/4/2022 Thêm biến XML----
143
		@DES_GOOD NVARCHAR(MAX),
144
		@UNIT_NAME NVARCHAR(100),
145
		@HANGHOA_ID VARCHAR(15),
146
		@CONTRACT_ID VARCHAR(15)
147
		
148

    
149
		FETCH NEXT FROM ListGoods INTO 
150
			@REQDT_ID, 
151
			@PL_REQDT_ID,
152
			@GOODS_ID,
153
			@DESCRIPTION,
154
			@QUANTITY,
155
			@PRICE,
156
			@TOTAL_AMT,
157
			@NOTES,
158
			@REQ_DT,
159
			@AMORT_MONTH, 
160
			@TRAN_TYPE_ID, 
161
			@SUP_ID,
162
			@BID_ID,
163
			@SUP_NAME,
164
			@OFFERING_VALUE,
165
			@NOTE_DVMS,
166
			@PO_ID,
167
			@PO_AMT,
168
			@TOTAL_AMT_ETM,
169
			@CURRENCY,
170
			@EXCHANGE_RATE ,
171
			@TAXES,
172
			@DES_GOOD,
173
			@UNIT_NAME,
174
			@HANGHOA_ID,
175
			@CONTRACT_ID
176

    
177
		WHILE @@FETCH_STATUS = 0	
178
		BEGIN
179
			SET @p_ROW_COUNT = @p_ROW_COUNT + 1
180
			SET @p_TRAN_TYPE_NAME = (SELECT TRN_TYPE_NAME FROM CM_TRAN_TYPE WHERE TRN_TYPE = @TRAN_TYPE_ID)
181

    
182
			----------------BAODNQ 1/12/2022 : HOT FIX : Không cho phép tự nhập tên NCC vào ô NCC--------
183
			-------------------Bắt buộc phải chọn NCC từ popup--------------------
184
			--------Tạm thời comment lại------------
185
			--IF(@SUP_NAME IS NOT NULL AND @SUP_NAME <> '' AND (@SUP_ID IS NULL OR @SUP_ID = ''))
186
			--BEGIN
187
			--	CLOSE ListGoods
188
			--	DEALLOCATE ListGoods
189
			--	ROLLBACK TRANSACTION
190
			--	SELECT '-1' AS RESULT, ''  REQ_ID, 
191
			--		N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT)
192
			--		+ N'. Không được phép nhập thẳng tên nhà cung cấp vào ô nhà cung cấp, bắt buộc phải chọn nhà cung cấp trong hệ thống từ popup' ErrorDesc
193
			--	RETURN '-1'
194
			--END
195
			------------------ENDBAODNQ-----------------
196

    
197
			-------BAODNQ 25/10/2022 : NẾU CHỌN HÌNH THỨC MUA SẮM KHÁC XUẤT KHO, KHÔNG THỰC HIỆN MUA SẮM----
198
			------------THÌ NHÀ CUNG CẤP BẮT BUỘC CHỌN-----------------
199
			IF(@TRAN_TYPE_ID NOT IN ('TRN0000000006', 'TRN0000000007') AND (@SUP_NAME IS NULL OR @SUP_NAME = ''))
200
			BEGIN
201
				CLOSE ListGoods
202
				DEALLOCATE ListGoods
203
				ROLLBACK TRANSACTION
204
				SELECT '-1' AS RESULT, ''  REQ_ID, 
205
					N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT)
206
					+ N'. Bắt buộc chọn nhà cung cấp nếu hình thức mua sắm không thuộc (Xuất kho, Không thực hiện mua sắm)' ErrorDesc
207
				RETURN '-1'
208
			END
209
			--------------ENDBAODNQ--------------------
210

    
211
			--------------------BAODNQ 6/12/2022---------------------------
212
			------------------TH nếu có nhập BBXG-----------------
213
			IF(@p_TR_REPORT_PRICE_TYPE IS NOT NULL AND @p_TR_REPORT_PRICE_TYPE <> '')
214
			BEGIN
215
				-------------nếu chọn HTMS là chỉ định thầu hoặc mua sắm trực tiếp (HĐNT), ko cho lưu--------------
216
				IF(@TRAN_TYPE_ID IN ('TRN0000000003', 'TRN0000000008'))
217
				BEGIN
218
					CLOSE ListGoods
219
					DEALLOCATE ListGoods
220
					ROLLBACK TRANSACTION
221
					SELECT '-1' AS RESULT, ''  REQ_ID, 
222
						N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
223
						N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho biên bản xét giá.' + CHAR(10) +
224
						N'</br>* Nếu sử dụng biên bản xét giá, vui lòng chọn một trong các hình thức mua sắm : (Mua sắm trực tiếp, Chào hàng cạnh tranh, Đấu thầu hạn chế, Đấu thầu rộng rãi).' + CHAR(13)+CHAR(10) + 
225
						N'</br>*  Nếu chọn hình thức ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa biên bản xét giá.'
226
						ErrorDesc
227
					RETURN '-1'
228
				END
229
			END
230
			------------------TH nếu có nhập tờ trình CĐT/ tờ trình xin chi phí--------------------
231
			IF(EXISTS(SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID))
232
			BEGIN
233
				----------Nếu có 1 dòng có HTMS là (Mua sắm trực tiếp, Chào hàng cạnh tranh, Đấu thầu hạn chế, Đấu thầu rộng rãi), ko cho lưu------------------
234
				IF(@TRAN_TYPE_ID IN ('TRN0000000001', 'TRN0000000002', 'TRN0000000004', 'TRN0000000005'))
235
				BEGIN
236
					CLOSE ListGoods
237
					DEALLOCATE ListGoods
238
					ROLLBACK TRANSACTION
239
					--------------------Tờ trình chỉ định thầu------------------------
240
					IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'CDT')
241
					BEGIN
242
						SELECT '-1' AS RESULT, ''  REQ_ID, 
243
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
244
							N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình chỉ định thầu.' +
245
							N' Nếu sử dụng tờ trình chỉ định thầu, vui lòng chọn hình thức mua sắm chỉ định thầu.' +
246
							N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình chỉ định thầu.'
247
							ErrorDesc
248
						RETURN '-1'
249
					END
250
					--------------------Tờ trình xin chi phí------------------------
251
					ELSE IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'TTCP')
252
					BEGIN
253
						SELECT '-1' AS RESULT, ''  REQ_ID, 
254
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
255
							N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình xin chi phí.' +
256
							N' Nếu sử dụng tờ trình xin chi phí, vui lòng chọn hình thức mua sắm mua sắm trực tiếp (HĐNT).' +
257
							N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình xin chi phí.'
258
							ErrorDesc
259
						RETURN '-1'
260
					END
261
				END
262
				IF(@TRAN_TYPE_ID IN ('TRN0000000003', 'TRN0000000008'))
263
				BEGIN
264
					---------------nếu làm tờ trình CĐT mà chọn HTMS là mua sắm trực tiếp (HĐNT), ko cho lưu-----------------
265
					IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'CDT'
266
						AND @TRAN_TYPE_ID = 'TRN0000000008'
267
					)
268
					BEGIN
269
						CLOSE ListGoods
270
						DEALLOCATE ListGoods
271
						ROLLBACK TRANSACTION
272
						SELECT '-1' AS RESULT, ''  REQ_ID, 
273
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
274
							N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình chỉ định thầu.' +
275
							N' Nếu sử dụng tờ trình chỉ định thầu, vui lòng chọn hình thức mua sắm chỉ định thầu.' +
276
							N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình chỉ định thầu.'
277
							ErrorDesc
278
						RETURN '-1'
279
					END
280
					---------------nếu làm tờ trình xin chi phí mà chọn HTMS là chỉ định thầu, ko cho lưu-----------------
281
					ELSE IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'TTCP'
282
						AND @TRAN_TYPE_ID = 'TRN0000000003'
283
					)
284
					BEGIN
285
						CLOSE ListGoods
286
						DEALLOCATE ListGoods
287
						ROLLBACK TRANSACTION
288
						SELECT '-1' AS RESULT, ''  REQ_ID, 
289
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
290
							N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình xin chi phí.' +
291
							N' Nếu sử dụng tờ trình xin chi phí, vui lòng chọn hình thức mua sắm mua sắm trực tiếp (HĐNT).' +
292
							N' Nếu chọn hình thức mua sắm ' + @p_TRAN_TYPE_NAME + N', vui lòng xóa tờ trình xin chi phí.'
293
							ErrorDesc
294
						RETURN '-1'
295
					END
296
				END
297
			END
298
			--------------------ENDBAODNQ 6/12/2022---------------------------
299

    
300
			-------------BAODNQ 1/12/2022 : Nếu hình thức mua sắm là không thực hiện mua sắm thì ko lưu lại NCC--------
301
			IF(@TRAN_TYPE_ID  = 'TRN0000000007')
302
			BEGIN
303
				SET @SUP_NAME = NULL
304
				SET @SUP_ID = ''
305
			END
306
			------------ENDBAODNQ-----------------
307
			ELSE
308
			BEGIN
309
				--LUCTV 21052020 KIEM TRA NEU CHUA TON TAI NHA CUNG CAP THI THEM MOI NHA CUNG CAP
310
				IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
311
				BEGIN
312
				EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
313
					IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
314
					INSERT INTO CM_SUPPLIER([DISCIPLINES],[SUP_ID],[SUP_CODE],[SUP_NAME],[SUP_TYPE_ID],[REGION_ID],[ADDR],[EMAIL],[TAX_NO],[TEL],[CONTACT_PERSON],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],ACC_NUM)
315
					VALUES('', @l_SUP_ID ,@l_SUP_ID ,@SUP_NAME ,NULL ,NULL ,'' ,'' ,'' ,'' ,'' ,'' ,'1' ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'U' ,NULL,NULL,NULL)
316
				END
317
				----
318
				--IF(@SUP_ID IS NULL OR @SUP_ID='')
319
				IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
320
					SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_NAME=@SUP_NAME)
321

    
322
				IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>'' AND SUP_ID =@SUP_ID))
323
					SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_ID=@SUP_ID AND SUP_NAME = @SUP_NAME)
324

    
325

    
326
				IF(@SUP_NAME IS NULL AND @SUP_NAME = '')
327
					SET @SUP_ID = NULL
328
			END
329
			
330
			-----------BAODNQ 1/12/2022 : TẠM THỜI HOT FIX TỔNG SỐ TIỀN TÍNH THEO ĐƠN GIÁ---------------
331
			IF(@CURRENCY != 'VND')
332
			BEGIN
333
				SET @TOTAL_AMT = ((@PRICE * @QUANTITY) + @TAXES) * @EXCHANGE_RATE
334
			END
335
			ELSE
336
			BEGIN
337
				SET @TOTAL_AMT = @PRICE * @QUANTITY * 1
338
			END
339
			------------ENDBAODNQ-----------------
340

    
341
			UPDATE dbo.TR_REQUEST_DOC_DT SET 
342
				CURRENCY =@CURRENCY, 
343
				EXCHANGE_RATE =@EXCHANGE_RATE,
344
				TAXES =@TAXES, 
345
				PRICE=@PRICE,
346
				--TOTAL_AMT=ROUND(((QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE),0),
347
				TOTAL_AMT = @TOTAL_AMT,
348
				TRAN_TYPE_ID=@TRAN_TYPE_ID,
349
				SUP_ID=@SUP_ID,
350
				BID_ID=@BID_ID,
351
				OFFERING_VALUE =@OFFERING_VALUE,
352
				NOTE_DVMS =@NOTE_DVMS,
353
				PO_ID = @PO_ID,
354
				PO_AMT = @PO_AMT, 
355
				TOTAL_AMT_ETM = @TOTAL_AMT_ETM, 
356
				----------BADNQ 21/4/2022: Đổi tên biến cập nhật-------
357
				DESCRIPTION = @DES_GOOD,
358
				UNIT_NAME = @UNIT_NAME,
359
				QUANTITY = @QUANTITY,
360
				REQ_DT = CONVERT(DATETIME, @REQ_DT, 103),
361
				HANGHOA_ID = @HANGHOA_ID,
362
				CONTRACT_ID = @CONTRACT_ID
363

    
364
			WHERE REQDT_ID=@REQDT_ID
365
			UPDATE dbo.BID_MASTER SET REQUEST_ID=@p_REQ_ID WHERE BID_ID=@BID_ID
366
			
367
			IF @@ERROR <> 0 GOTO ABORT1
368
		-- next Group_Id
369
			FETCH NEXT FROM ListGoods INTO 
370
				@REQDT_ID, 
371
				@PL_REQDT_ID,
372
				@GOODS_ID,
373
				@DESCRIPTION,
374
				@QUANTITY,
375
				@PRICE,
376
				@TOTAL_AMT,
377
			@NOTES,
378
			@REQ_DT,
379
			@AMORT_MONTH, 
380
			@TRAN_TYPE_ID, 
381
			@SUP_ID,
382
			@BID_ID,
383
			@SUP_NAME,
384
			@OFFERING_VALUE,
385
			@NOTE_DVMS,
386
			@PO_ID,
387
			@PO_AMT,
388
			@TOTAL_AMT_ETM,
389
			@CURRENCY,
390
			@EXCHANGE_RATE ,
391
			@TAXES, 
392
			@DES_GOOD,
393
			@UNIT_NAME,
394
			@HANGHOA_ID,
395
			@CONTRACT_ID
396
		END
397
		CLOSE ListGoods
398
		DEALLOCATE ListGoods
399
		IF @@Error <> 0 GOTO ABORT
400

    
401
		UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID 
402

    
403
		--Insert into TABLE PL_REQUEST_DOC_DT
404
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
405
		DECLARE ListCostCenters  CURSOR FOR
406
		SELECT *
407
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
408
		WITH 
409
		(
410
			COST_ID	varchar(15),	
411
			NOTES	nvarchar(1000),
412
			AUTH_STATUS varchar(15),
413
			MAKER_ID varchar(15),
414
			CREATE_DT varchar(30),
415
			CHECKER_ID varchar(15),
416
			APPROVE_DT varchar(30)
417
		)
418

    
419
		OPEN ListCostCenters
420
		Declare 
421
		@COST_ID	varchar(15),
422
		@AUTH_STATUS varchar(15),
423
		@MAKER_ID varchar(15),
424
		@CREATE_DT varchar(30),
425
		@CHECKER_ID varchar(15),
426
		@APPROVE_DT varchar(30)
427

    
428
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
429
		WHILE @@FETCH_STATUS = 0	
430
		BEGIN
431
			
432
			DECLARE @l_REQ_COST_ID VARCHAR(15)
433
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
434
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
435
	
436
			INSERT INTO dbo.TR_REQUEST_COSTCENTER
437
			(
438
			    REQ_COST_ID,
439
			    COST_ID,
440
			    REQ_ID,
441
			    NOTES,
442
			    AUTH_STATUS,
443
			    MAKER_ID,
444
			    CREATE_DT,
445
			    CHECKER_ID,
446
			    APPROVE_DT
447
			)
448
			VALUES
449
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
450
			    @COST_ID,        -- COST_ID - varchar(15)
451
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
452
			    @NOTES,       -- NOTES - nvarchar(500)
453
			    @AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
454
			    @MAKER_ID,        -- MAKER_ID - varchar(15)
455
			     convert(datetime,@CREATE_DT,103), -- CREATE_DT - datetime
456
			    @CHECKER_ID,        -- CHECKER_ID - varchar(15)
457
			    convert(datetime,@APPROVE_DT,103)-- APPROVE_DT - datetime
458
			 )
459
			
460
			IF @@ERROR <> 0 GOTO ABORT1
461
		-- next Group_Id
462
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
463
		END
464
		CLOSE ListCostCenters
465
		DEALLOCATE ListCostCenters
466

    
467
		UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT= (SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID
468

    
469
		
470
		--Insert into TABLE TR_REQUEST_DOC_FILE
471

    
472
		if(@p_ListTrREQFile is not null and cast(@p_ListTrREQFile as nvarchar(max)) != '')
473
		begin
474
			--Insert into TABLE TR_REQUEST_DOC_FILE
475

    
476
		DECLARE @tableTrREQFile TABLE(
477
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
478
			IS_VIEW	bit,
479
			REQ_ID varchar(20),
480
			NOTES  nvarchar(200)
481
		)
482

    
483

    
484
		Declare @fdoc INT
485
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
486

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

    
498
		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
499
		DECLARE ListTrREQFile  CURSOR FOR
500
		SELECT * FROM @tableTrREQFile
501
		OPEN ListTrREQFile
502

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

    
509
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
510
		WHILE @@FETCH_STATUS = 0	
511
		BEGIN
512
			DECLARE @l_REQFile_ID VARCHAR(15)
513
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
514
			--select @l_REQFile_ID
515
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
516
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
517
			---------------------BAODNQ 23/5/2022: Chỉnh sửa đính kèm file------------
518
			DECLARE @p_REF_ID VARCHAR(15)
519
			--INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
520
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
521
			begin
522
				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 
523
				SET @p_REF_ID = @TR_REQUEST_DOC_FILE_ID
524
			end
525
			else
526
			begin
527
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
528
				(
529
					 [TR_REQUEST_DOC_FILE_ID]
530
					,[IS_VIEW]
531
					,[REQ_ID]
532
					,[NOTES]
533
				)	
534
				VALUES
535
				(   
536
					@l_REQFile_ID
537
					,isnull(@IS_VIEW,0)
538
					,@p_REQ_ID,
539
					@_NOTES
540
				)
541

    
542
				SET @p_REF_ID = @l_REQFile_ID
543
			end
544

    
545
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@p_REF_ID, 'TR_REQUEST_DOC_FILE')
546

    
547
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
548
		END
549
		CLOSE ListTrREQFile
550
		DEALLOCATE ListTrREQFile
551

    
552
		end
553
		
554
		if(select count(*) from @TEMP) = 0
555
		begin
556
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
557
		end
558
COMMIT TRANSACTION
559

    
560
SELECT '0' as Result, @p_REQ_ID  REQ_ID,[REF_ID], [TYPE] , @p_REQ_CODE AS ErrorDesc from @TEMP
561
RETURN '0'
562
ABORT:
563
BEGIN
564
		ROLLBACK TRANSACTION
565
		SELECT '-1' AS RESULT
566
		RETURN '-1'
567
End
568
ABORT1:
569
BEGIN
570
		CLOSE ListGoods
571
		DEALLOCATE ListGoods
572
		CLOSE ListCostCenters
573
		DEALLOCATE ListCostCenters
574
		ROLLBACK TRANSACTION
575
		SELECT '-1' AS RESULT
576
		RETURN '-1'
577
End