Project

General

Profile

1.4. TR_REQUEST_DOC_DVMS_UPD.txt

Luc Tran Van, 06/19/2023 10:21 AM

 
1

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

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

    
55

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

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

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

    
81
		Declare @hdoc INT
82
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
83
		DECLARE ListGoods  CURSOR FOR
84
		SELECT *
85
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
86
		WITH 
87
		(
88
			REQDT_ID 	varchar(15)  ,
89
			PL_REQDT_ID	varchar(15)  ,
90
			GOODS_ID	varchar(15)  ,
91
			[DESCRIPTION] nvarchar(MAX),
92
			QUANTITY	decimal(18, 0)  ,
93
			PRICE	decimal(18, 2)  ,
94
			TOTAL_AMT	decimal(18, 2),	
95
			NOTES	nvarchar(1000),
96
			REQ_DT varchar(30),
97
			AMORT_MONTH DECIMAL(18,2),
98
			TRAN_TYPE_ID varchar(15),
99
			SUP_ID varchar(15),
100
			BID_ID VARCHAR(20),
101
			SUP_NAME NVARCHAR(2000),
102
			OFFERING_VALUE decimal(18, 2),
103
			NOTE_DVMS NVARCHAR(500),
104
			PO_ID VARCHAR(15),
105
			PO_AMT DECIMAL(18,2),
106
			TOTAL_AMT_ETM DECIMAL(18,2),
107
			CURRENCY VARCHAR(15),
108
			EXCHANGE_RATE DECIMAL(18,2),
109
			TAXES DECIMAL(18,2),
110
			-------------BAODNQ 21/4/2022 Thêm biến XML----
111
			DES_GOOD NVARCHAR(MAX),
112
			UNIT_NAME NVARCHAR(100),
113
			HANGHOA_ID VARCHAR(15),
114
			--------------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)
115
			CONTRACT_ID VARCHAR(15)
116
		)
117
		OPEN ListGoods
118

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

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

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

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

    
198
			-------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----
199
			------------THÌ NHÀ CUNG CẤP BẮT BUỘC CHỌN-----------------
200
			IF(@TRAN_TYPE_ID NOT IN ('TRN0000000006', 'TRN0000000007') AND (@SUP_NAME IS NULL OR @SUP_NAME = ''))
201
			BEGIN
202
				CLOSE ListGoods
203
				DEALLOCATE ListGoods
204
				ROLLBACK TRANSACTION
205
				SELECT '-1' AS RESULT, ''  REQ_ID, 
206
					N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT)
207
					+ 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
208
				RETURN '-1'
209
			END
210
			--------------ENDBAODNQ--------------------
211

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

    
301
			-------------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--------
302
			IF(@TRAN_TYPE_ID  = 'TRN0000000007')
303
			BEGIN
304
				SET @SUP_NAME = NULL
305
				SET @SUP_ID = ''
306
			END
307
			------------ENDBAODNQ-----------------
308
			ELSE
309
			BEGIN
310
				--LUCTV 21052020 KIEM TRA NEU CHUA TON TAI NHA CUNG CAP THI THEM MOI NHA CUNG CAP
311
				-- LUCTV 12062023_SECRETKEY KIỂM TRA NẾU NHÀ CUNG CẤP CHƯA TỒN TẠI THÌ BÁO LỖI
312
				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 <>''))
313
				BEGIN
314
						CLOSE ListGoods
315
						DEALLOCATE ListGoods
316
						ROLLBACK TRANSACTION
317
						SELECT '-1' AS RESULT, ''  REQ_ID, 
318
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
319
							N': Nhà cung cấp: ' + @SUP_NAME +N' chưa tồn tại trong hệ thống. Vui lòng vào danh mục quản lý nhà cung cấp khới tạo & phê duyệt nhà cung cấp này trước khi sử dụng'
320
							ErrorDesc
321
						RETURN '-1'
322
					--EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
323
					--IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
324
					--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)
325
					--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)
326
				END
327
				-- LUCTV 19062023_SECRETKEY KIỂM TRA NẾU NHÀ CUNG CẤP CHƯA ĐƯỢC DUYỆT THÌ BÁO LỖI
328
				IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>'' AND ISNULL(AUTH_STATUS,'') <> 'A'))
329
				BEGIN
330
						CLOSE ListGoods
331
						DEALLOCATE ListGoods
332
						ROLLBACK TRANSACTION
333
						SELECT '-1' AS RESULT, ''  REQ_ID, 
334
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
335
							N': Nhà cung cấp: ' + @SUP_NAME +N' chưa được duyệt. Vui lòng vào danh mục quản lý nhà cung cấp phê duyệt nhà cung cấp này trước khi sử dụng'
336
							ErrorDesc
337
						RETURN '-1'
338
				END
339
				----
340
				--IF(@SUP_ID IS NULL OR @SUP_ID='')
341
				IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
342
					SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_NAME=@SUP_NAME)
343

    
344
				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))
345
					SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_ID=@SUP_ID AND SUP_NAME = @SUP_NAME)
346

    
347

    
348
				IF(@SUP_NAME IS NULL AND @SUP_NAME = '')
349
					SET @SUP_ID = NULL
350
			END
351
			
352
			-----------BAODNQ 1/12/2022 : TẠM THỜI HOT FIX TỔNG SỐ TIỀN TÍNH THEO ĐƠN GIÁ---------------
353
			IF(@CURRENCY != 'VND')
354
			BEGIN
355
				SET @TOTAL_AMT = ((@PRICE * @QUANTITY) + @TAXES) * @EXCHANGE_RATE
356
			END
357
			ELSE
358
			BEGIN
359
				SET @TOTAL_AMT = @PRICE * @QUANTITY * 1
360
			END
361
			------------ENDBAODNQ-----------------
362

    
363
			UPDATE dbo.TR_REQUEST_DOC_DT SET 
364
				CURRENCY =@CURRENCY, 
365
				EXCHANGE_RATE =@EXCHANGE_RATE,
366
				TAXES =@TAXES, 
367
				PRICE=@PRICE,
368
				--TOTAL_AMT=ROUND(((QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE),0),
369
				TOTAL_AMT = @TOTAL_AMT,
370
				TRAN_TYPE_ID=@TRAN_TYPE_ID,
371
				SUP_ID=@SUP_ID,
372
				BID_ID=@BID_ID,
373
				OFFERING_VALUE =@OFFERING_VALUE,
374
				NOTE_DVMS =@NOTE_DVMS,
375
				PO_ID = @PO_ID,
376
				PO_AMT = @PO_AMT, 
377
				TOTAL_AMT_ETM = @TOTAL_AMT_ETM, 
378
				----------BADNQ 21/4/2022: Đổi tên biến cập nhật-------
379
				DESCRIPTION = @DES_GOOD,
380
				UNIT_NAME = @UNIT_NAME,
381
				QUANTITY = @QUANTITY,
382
				REQ_DT = CONVERT(DATETIME, @REQ_DT, 103),
383
				HANGHOA_ID = @HANGHOA_ID,
384
				CONTRACT_ID = @CONTRACT_ID
385

    
386
			WHERE REQDT_ID=@REQDT_ID
387
			UPDATE dbo.BID_MASTER SET REQUEST_ID=@p_REQ_ID WHERE BID_ID=@BID_ID
388
			
389
			IF @@ERROR <> 0 GOTO ABORT1
390
		-- next Group_Id
391
			FETCH NEXT FROM ListGoods INTO 
392
				@REQDT_ID, 
393
				@PL_REQDT_ID,
394
				@GOODS_ID,
395
				@DESCRIPTION,
396
				@QUANTITY,
397
				@PRICE,
398
				@TOTAL_AMT,
399
			@NOTES,
400
			@REQ_DT,
401
			@AMORT_MONTH, 
402
			@TRAN_TYPE_ID, 
403
			@SUP_ID,
404
			@BID_ID,
405
			@SUP_NAME,
406
			@OFFERING_VALUE,
407
			@NOTE_DVMS,
408
			@PO_ID,
409
			@PO_AMT,
410
			@TOTAL_AMT_ETM,
411
			@CURRENCY,
412
			@EXCHANGE_RATE ,
413
			@TAXES, 
414
			@DES_GOOD,
415
			@UNIT_NAME,
416
			@HANGHOA_ID,
417
			@CONTRACT_ID
418
		END
419
		CLOSE ListGoods
420
		DEALLOCATE ListGoods
421
		IF @@Error <> 0 GOTO ABORT
422

    
423
		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 
424

    
425
		--Insert into TABLE PL_REQUEST_DOC_DT
426
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
427
		DECLARE ListCostCenters  CURSOR FOR
428
		SELECT *
429
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
430
		WITH 
431
		(
432
			COST_ID	varchar(15),	
433
			NOTES	nvarchar(1000),
434
			AUTH_STATUS varchar(15),
435
			MAKER_ID varchar(15),
436
			CREATE_DT varchar(30),
437
			CHECKER_ID varchar(15),
438
			APPROVE_DT varchar(30)
439
		)
440

    
441
		OPEN ListCostCenters
442
		Declare 
443
		@COST_ID	varchar(15),
444
		@AUTH_STATUS varchar(15),
445
		@MAKER_ID varchar(15),
446
		@CREATE_DT varchar(30),
447
		@CHECKER_ID varchar(15),
448
		@APPROVE_DT varchar(30)
449

    
450
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
451
		WHILE @@FETCH_STATUS = 0	
452
		BEGIN
453
			
454
			DECLARE @l_REQ_COST_ID VARCHAR(15)
455
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
456
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
457
	
458
			INSERT INTO dbo.TR_REQUEST_COSTCENTER
459
			(
460
			    REQ_COST_ID,
461
			    COST_ID,
462
			    REQ_ID,
463
			    NOTES,
464
			    AUTH_STATUS,
465
			    MAKER_ID,
466
			    CREATE_DT,
467
			    CHECKER_ID,
468
			    APPROVE_DT
469
			)
470
			VALUES
471
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
472
			    @COST_ID,        -- COST_ID - varchar(15)
473
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
474
			    @NOTES,       -- NOTES - nvarchar(500)
475
			    @AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
476
			    @MAKER_ID,        -- MAKER_ID - varchar(15)
477
			     convert(datetime,@CREATE_DT,103), -- CREATE_DT - datetime
478
			    @CHECKER_ID,        -- CHECKER_ID - varchar(15)
479
			    convert(datetime,@APPROVE_DT,103)-- APPROVE_DT - datetime
480
			 )
481
			
482
			IF @@ERROR <> 0 GOTO ABORT1
483
		-- next Group_Id
484
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
485
		END
486
		CLOSE ListCostCenters
487
		DEALLOCATE ListCostCenters
488

    
489
		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
490

    
491
		
492
		--Insert into TABLE TR_REQUEST_DOC_FILE
493

    
494
		if(@p_ListTrREQFile is not null and cast(@p_ListTrREQFile as nvarchar(max)) != '')
495
		begin
496
			--Insert into TABLE TR_REQUEST_DOC_FILE
497

    
498
		DECLARE @tableTrREQFile TABLE(
499
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
500
			IS_VIEW	bit,
501
			REQ_ID varchar(20),
502
			NOTES  nvarchar(200)
503
		)
504

    
505

    
506
		Declare @fdoc INT
507
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
508

    
509
		INSERT INTO @tableTrREQFile
510
		SELECT *
511
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
512
		WITH 
513
		(
514
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
515
			IS_VIEW	bit,
516
			REQ_ID varchar(20),
517
			NOTES  nvarchar(200)
518
		)
519

    
520
		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
521
		DECLARE ListTrREQFile  CURSOR FOR
522
		SELECT * FROM @tableTrREQFile
523
		OPEN ListTrREQFile
524

    
525
		Declare 
526
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
527
		@IS_VIEW	bit,
528
		@REQ_ID varchar(20),
529
		@_NOTES nvarchar(200)
530

    
531
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
532
		WHILE @@FETCH_STATUS = 0	
533
		BEGIN
534
			DECLARE @l_REQFile_ID VARCHAR(15)
535
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
536
			--select @l_REQFile_ID
537
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
538
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
539
			---------------------BAODNQ 23/5/2022: Chỉnh sửa đính kèm file------------
540
			DECLARE @p_REF_ID VARCHAR(15)
541
			--INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
542
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
543
			begin
544
				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 
545
				SET @p_REF_ID = @TR_REQUEST_DOC_FILE_ID
546
			end
547
			else
548
			begin
549
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
550
				(
551
					 [TR_REQUEST_DOC_FILE_ID]
552
					,[IS_VIEW]
553
					,[REQ_ID]
554
					,[NOTES]
555
				)	
556
				VALUES
557
				(   
558
					@l_REQFile_ID
559
					,isnull(@IS_VIEW,0)
560
					,@p_REQ_ID,
561
					@_NOTES
562
				)
563

    
564
				SET @p_REF_ID = @l_REQFile_ID
565
			end
566

    
567
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@p_REF_ID, 'TR_REQUEST_DOC_FILE')
568

    
569
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
570
		END
571
		CLOSE ListTrREQFile
572
		DEALLOCATE ListTrREQFile
573

    
574
		end
575
		
576
		if(select count(*) from @TEMP) = 0
577
		begin
578
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
579
		end
580
COMMIT TRANSACTION
581

    
582
SELECT '0' as Result, @p_REQ_ID  REQ_ID,[REF_ID], [TYPE] , @p_REQ_CODE AS ErrorDesc from @TEMP
583
RETURN '0'
584
ABORT:
585
BEGIN
586
		ROLLBACK TRANSACTION
587
		SELECT '-1' AS RESULT
588
		RETURN '-1'
589
End
590
ABORT1:
591
BEGIN
592
		CLOSE ListGoods
593
		DEALLOCATE ListGoods
594
		CLOSE ListCostCenters
595
		DEALLOCATE ListCostCenters
596
		ROLLBACK TRANSACTION
597
		SELECT '-1' AS RESULT
598
		RETURN '-1'
599
End