Project

General

Profile

1.0BVBANK CAP NHAT PYC.txt

Luc Tran Van, 06/10/2025 01:54 PM

 
1
SET QUOTED_IDENTIFIER ON
2
SET ANSI_NULLS ON
3
GO
4
ALTER PROCEDURE dbo.TR_REQUEST_DOC_DVMS_Upd
5
@p_REQ_ID varchar(15),
6
@p_REQ_CODE	nvarchar(100)  = NULL,
7
@p_REQ_NAME	nvarchar(200)  = NULL,
8
@p_REQ_DT	nvarchar(30) = NULL,
9
@p_REQ_TYPE	int = NULL,
10
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
11
@p_REQ_REASON NVARCHAR(500)=NULL,
12
@p_PL_REQ_ID VARCHAR(15),
13
@p_TOTAL_AMT	decimal(18, 2) = NULL,
14
@p_NOTES	nvarchar(1000)  = NULL,
15
@p_DMMS_OPINION NVARCHAR(MAX) = NULL,
16
@p_RECORD_STATUS	varchar(1)  = NULL,
17
@p_MAKER_ID	varchar(12)  = NULL,
18
@p_CREATE_DT	nvarchar(30) = NULL,
19
@p_AUTH_STATUS	varchar(50)  = NULL,
20
@p_CHECKER_ID	varchar(12)  = NULL,
21
@p_APPROVE_DT	nvarchar(30) = NULL,
22
@p_BRANCH_DO VARCHAR(15)=NULL,
23
@p_BRANCH_CREATE VARCHAR(15)=NULL,
24
@p_USER_REQUEST VARCHAR(15)=NULL,
25
@p_ListGood XML,
26
@p_ListCostCenter XML,
27
@p_ListTrREQFile XML,
28
@p_IS_KT bit = null,
29
@p_XMP_TEMP_TEMPLATE_REQUEST_DOC XML = NULL
30
AS
31
DECLARE @TEMP TABLE
32
			(
33
				[KEY] varchar(15),
34
				[REF_ID] varchar(15),
35
				[TYPE] varchar(50)
36
				)
37
	--IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
38
	--BEGIN
39
	--	SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
40
	--	RETURN '0'
41
	--END
42
	DECLARE @sErrorCode VARCHAR(20)
43
	
44
  BEGIN TRANSACTION
45

    
46
		UPDATE dbo.TR_REQUEST_DOC
47
		SET BRANCH_DO=@p_BRANCH_DO,
48
		-----------------BAODNQ 26/05/2022: Chỉnh sửa update USER_DVMS---------
49
		USER_DVMS=@p_MAKER_ID,
50
		--------------------END BAODNQ--------------------
51
		IS_KT = @p_IS_KT,
52
    DMMS_OPINION = @p_DMMS_OPINION --NGUYENTD 30072024_SECRETKEY: CẬP NHẬT Ý KIẾN DMMS
53
		WHERE REQ_ID=@p_REQ_ID
54
		-- UPDATE TOTAL_AMT MASTER
55
		UPDATE dbo.TR_REQUEST_DOC
56
		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
57
		IF @@Error <> 0 GOTO ABORT
58
		IF @@Error <> 0 GOTO ABORT
59

    
60

    
61
		--DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID
62
		DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
63
		--Insert into TABLE PL_REQUEST_DOC_DT
64

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

    
83
		------------BAODNQ 25/10/2022--------------
84
		DECLARE @p_ROW_COUNT INT = 0, @p_TRAN_TYPE_NAME NVARCHAR(500)
85

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

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

    
157
		FETCH NEXT FROM ListGoods INTO 
158
			@REQDT_ID, 
159
			@PL_REQDT_ID,
160
			@GOODS_ID,
161
			@DESCRIPTION,
162
			@QUANTITY,
163
			@PRICE,
164
			@TOTAL_AMT,
165
			@NOTES,
166
			@REQ_DT,
167
			@AMORT_MONTH, 
168
			@TRAN_TYPE_ID, 
169
			@SUP_ID,
170
			@BID_ID,
171
			@SUP_NAME,
172
			@OFFERING_VALUE,
173
			@NOTE_DVMS,
174
			@PO_ID,
175
			@PO_AMT,
176
			@TOTAL_AMT_ETM,
177
			@CURRENCY,
178
			@EXCHANGE_RATE ,
179
			@TAXES,
180
			@DES_GOOD,
181
			@UNIT_NAME,
182
			@HANGHOA_ID,
183
			@CONTRACT_ID,
184
      @HH_DT_ID
185

    
186
		WHILE @@FETCH_STATUS = 0	
187
		BEGIN
188
			SET @p_ROW_COUNT = @p_ROW_COUNT + 1
189
			SET @p_TRAN_TYPE_NAME = (SELECT TRN_TYPE_NAME FROM CM_TRAN_TYPE WHERE TRN_TYPE = @TRAN_TYPE_ID)
190

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

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

    
220
			--------------------BAODNQ 6/12/2022---------------------------
221
			------------------TH nếu có nhập BBXG-----------------
222
			IF(@p_TR_REPORT_PRICE_TYPE IS NOT NULL AND @p_TR_REPORT_PRICE_TYPE <> '')
223
			BEGIN
224
				-------------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--------------
225
				IF(@TRAN_TYPE_ID IN ('TRN0000000003', 'TRN0000000008'))
226
				BEGIN
227
					CLOSE ListGoods
228
					DEALLOCATE ListGoods
229
					ROLLBACK TRANSACTION
230
					SELECT '-1' AS RESULT, ''  REQ_ID, 
231
						N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
232
						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) +
233
						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) + 
234
						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á.'
235
						ErrorDesc
236
					RETURN '-1'
237
				END
238
			END
239
      ---------------------NGUYENTD NẾU HTMS LÀ MUA SẮM TRỰC TRIẾP (HĐNT) VÀ KHÔNG CHỌN HỢP ĐỒNG THÌ KHÔNG CHO LƯU -------------------------------
240
      IF(@TRAN_TYPE_ID = 'TRN0000000008' AND (@CONTRACT_ID  IS NULL OR @CONTRACT_ID = ''))
241
				BEGIN
242
					CLOSE ListGoods
243
					DEALLOCATE ListGoods
244
					ROLLBACK TRANSACTION
245
					SELECT '-1' AS RESULT, ''  REQ_ID, 
246
						N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
247
						N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không chọn hợp đồng.' + CHAR(10) +
248
						N'</br>*  Nếu chọn hình thức ' + @p_TRAN_TYPE_NAME + N', vui lòng chọn hợp đồng.'
249
						ErrorDesc
250
					RETURN '-1'
251
				END
252
			------------------TH nếu có nhập tờ trình CĐT/ tờ trình xin chi phí--------------------
253
			IF(EXISTS(SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID))
254
			BEGIN
255
				----------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------------------
256
				IF(@TRAN_TYPE_ID IN ('TRN0000000001', 'TRN0000000002', 'TRN0000000004', 'TRN0000000005'))
257
				BEGIN
258
					CLOSE ListGoods
259
					DEALLOCATE ListGoods
260
					ROLLBACK TRANSACTION
261
					--------------------Tờ trình chỉ định thầu------------------------
262
--					IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'CDT')
263
--					BEGIN
264
--						SELECT '-1' AS RESULT, ''  REQ_ID, 
265
--							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
266
--							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.' +
267
--							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.' +
268
--							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.'
269
--							ErrorDesc
270
--						RETURN '-1'
271
--					END
272
--					--------------------Tờ trình xin chi phí------------------------
273
--					ELSE 
274
          IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'TTCP')
275
					BEGIN
276
						SELECT '-1' AS RESULT, ''  REQ_ID, 
277
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
278
							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í.' +
279
							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).' +
280
							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í.'
281
							ErrorDesc
282
						RETURN '-1'
283
					END
284
				END
285
				IF(@TRAN_TYPE_ID IN ('TRN0000000003', 'TRN0000000008'))
286
				BEGIN
287
					---------------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-----------------
288
--					IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'CDT'
289
--						AND @TRAN_TYPE_ID = 'TRN0000000008'
290
--					)
291
--					BEGIN
292
--						CLOSE ListGoods
293
--						DEALLOCATE ListGoods
294
--						ROLLBACK TRANSACTION
295
--						SELECT '-1' AS RESULT, ''  REQ_ID, 
296
--							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
297
--							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.' +
298
--							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.' +
299
--							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.'
300
--							ErrorDesc
301
--						RETURN '-1'
302
--					END
303
--					---------------nếu làm tờ trình xin chi phí mà chọn HTMS là chỉ định thầu, ko cho lưu-----------------
304
--					ELSE 
305
          IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'TTCP'
306
						AND @TRAN_TYPE_ID = 'TRN0000000003'
307
					)
308
					BEGIN
309
						CLOSE ListGoods
310
						DEALLOCATE ListGoods
311
						ROLLBACK TRANSACTION
312
						SELECT '-1' AS RESULT, ''  REQ_ID, 
313
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
314
							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í.' +
315
							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).' +
316
							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í.'
317
							ErrorDesc
318
						RETURN '-1'
319
					END
320
				END
321
			END
322
			--------------------ENDBAODNQ 6/12/2022---------------------------
323

    
324
			-------------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--------
325
			IF(@TRAN_TYPE_ID  = 'TRN0000000007')
326
			BEGIN
327
				SET @SUP_NAME = NULL
328
				SET @SUP_ID = ''
329
			END
330
			------------ENDBAODNQ-----------------
331
			ELSE
332
			BEGIN
333
				--LUCTV 21052020 KIEM TRA NEU CHUA TON TAI NHA CUNG CAP THI THEM MOI NHA CUNG CAP
334
				-- LUCTV 12062023_SECRETKEY KIỂM TRA NẾU NHÀ CUNG CẤP CHƯA TỒN TẠI THÌ BÁO LỖI
335
        --- hieuhm 24072023_SECRETKEY tắt check nhà cung cấp không có trong hệ thống
336
--				IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_ID = @SUP_ID AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
337
--				BEGIN
338
--						CLOSE ListGoods
339
--						DEALLOCATE ListGoods
340
--						ROLLBACK TRANSACTION
341
--						SELECT '-1' AS RESULT, ''  REQ_ID, 
342
--							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
343
--							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'
344
--							ErrorDesc
345
--						RETURN '-1'
346
--					--EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
347
--					--IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
348
--					--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)
349
--					--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)
350
--				END
351
				-- LUCTV 19062023_SECRETKEY KIỂM TRA NẾU NHÀ CUNG CẤP CHƯA ĐƯỢC DUYỆT THÌ BÁO LỖI  HIEUHM ĐỔI SUP_NAME THÀNH SUP_ID 22062023_SECRETKEY
352
				IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_ID =@SUP_ID AND SUP_NAME IS NOT NULL AND SUP_NAME <>'' AND ISNULL(AUTH_STATUS,'') <> 'A'))
353
				BEGIN
354
						CLOSE ListGoods
355
						DEALLOCATE ListGoods
356
						ROLLBACK TRANSACTION
357
						SELECT '-1' AS RESULT, ''  REQ_ID, 
358
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
359
							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'
360
							ErrorDesc
361
						RETURN '-1'
362
				END
363
				IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_ID =@SUP_ID AND ISNULL(AUTH_STATUS,'') <> 'A'))
364
				BEGIN
365
						CLOSE ListGoods
366
						DEALLOCATE ListGoods
367
						ROLLBACK TRANSACTION
368
						SELECT '-1' AS RESULT, ''  REQ_ID, 
369
							N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT) + 
370
							N': Nhà cung cấp: ' + @SUP_NAME +N'có mã: '+ @SUP_ID +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'
371
							ErrorDesc
372
						RETURN '-1'
373
				END
374
				----LUCTV 22062023_KIEM TRA BỎ QUA VIỆC LẤY NCC THEO TÊN, SẼ LẤY MẶC ĐỊNH THEO ID NCC
375
				--IF(@SUP_ID IS NULL OR @SUP_ID='')
376
				--IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
377
				--	SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_NAME=@SUP_NAME)
378

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

    
382

    
383
				IF(@SUP_NAME IS NULL AND @SUP_NAME = '')
384
					SET @SUP_ID = NULL
385
			END
386
			
387
			-----------BAODNQ 1/12/2022 : TẠM THỜI HOT FIX TỔNG SỐ TIỀN TÍNH THEO ĐƠN GIÁ---------------
388
			IF(@CURRENCY != 'VND')
389
			BEGIN
390
				SET @TOTAL_AMT = ((@PRICE * @QUANTITY) + @TAXES) * @EXCHANGE_RATE
391
			END
392
			ELSE
393
			BEGIN
394
        SET @TAXES = 0
395
        SET @EXCHANGE_RATE = 1
396
				SET @TOTAL_AMT = @PRICE * @QUANTITY * 1
397
			END
398
			------------ENDBAODNQ-----------------
399

    
400
			UPDATE dbo.TR_REQUEST_DOC_DT SET 
401
				CURRENCY =@CURRENCY, 
402
				EXCHANGE_RATE =@EXCHANGE_RATE,
403
				TAXES =@TAXES, 
404
				PRICE=@PRICE,
405
				--TOTAL_AMT=ROUND(((QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE),0),
406
				TOTAL_AMT = @TOTAL_AMT,
407
				TRAN_TYPE_ID=@TRAN_TYPE_ID,
408
				SUP_ID=@SUP_ID,
409
				BID_ID=@BID_ID,
410
				OFFERING_VALUE =@OFFERING_VALUE,
411
				NOTE_DVMS =@NOTE_DVMS,
412
				PO_ID = @PO_ID,
413
				PO_AMT = @PO_AMT, 
414
				TOTAL_AMT_ETM = @TOTAL_AMT_ETM, 
415
				----------BADNQ 21/4/2022: Đổi tên biến cập nhật-------
416
				DESCRIPTION = @DES_GOOD,
417
				UNIT_NAME = @UNIT_NAME,
418
				QUANTITY = @QUANTITY,
419
				REQ_DT = CONVERT(DATETIME, @REQ_DT, 103),
420
				HANGHOA_ID = @HANGHOA_ID,
421
				CONTRACT_ID = @CONTRACT_ID,
422
        HH_DT_ID = @HH_DT_ID
423

    
424
			WHERE REQDT_ID=@REQDT_ID
425
			UPDATE dbo.BID_MASTER SET REQUEST_ID=@p_REQ_ID WHERE BID_ID=@BID_ID
426
			
427
			IF @@ERROR <> 0 GOTO ABORT1
428
		-- next Group_Id
429
			FETCH NEXT FROM ListGoods INTO 
430
				@REQDT_ID, 
431
				@PL_REQDT_ID,
432
				@GOODS_ID,
433
				@DESCRIPTION,
434
				@QUANTITY,
435
				@PRICE,
436
				@TOTAL_AMT,
437
			@NOTES,
438
			@REQ_DT,
439
			@AMORT_MONTH, 
440
			@TRAN_TYPE_ID, 
441
			@SUP_ID,
442
			@BID_ID,
443
			@SUP_NAME,
444
			@OFFERING_VALUE,
445
			@NOTE_DVMS,
446
			@PO_ID,
447
			@PO_AMT,
448
			@TOTAL_AMT_ETM,
449
			@CURRENCY,
450
			@EXCHANGE_RATE ,
451
			@TAXES, 
452
			@DES_GOOD,
453
			@UNIT_NAME,
454
			@HANGHOA_ID,
455
			@CONTRACT_ID,
456
      @HH_DT_ID
457
		END
458
		CLOSE ListGoods
459
		DEALLOCATE ListGoods
460
		IF @@Error <> 0 GOTO ABORT
461

    
462
		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 
463

    
464
		--Insert into TABLE PL_REQUEST_DOC_DT
465
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
466
		DECLARE ListCostCenters  CURSOR FOR
467
		SELECT *
468
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
469
		WITH 
470
		(
471
			COST_ID	varchar(15),	
472
			NOTES	nvarchar(1000),
473
			AUTH_STATUS varchar(15),
474
			MAKER_ID varchar(15),
475
			CREATE_DT varchar(30),
476
			CHECKER_ID varchar(15),
477
			APPROVE_DT varchar(30)
478
		)
479

    
480
		OPEN ListCostCenters
481
		Declare 
482
		@COST_ID	varchar(15),
483
		@AUTH_STATUS varchar(15),
484
		@MAKER_ID varchar(15),
485
		@CREATE_DT varchar(30),
486
		@CHECKER_ID varchar(15),
487
		@APPROVE_DT varchar(30)
488

    
489
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
490
		WHILE @@FETCH_STATUS = 0	
491
		BEGIN
492
			
493
			DECLARE @l_REQ_COST_ID VARCHAR(15)
494
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
495
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
496
	
497
			INSERT INTO dbo.TR_REQUEST_COSTCENTER
498
			(
499
			    REQ_COST_ID,
500
			    COST_ID,
501
			    REQ_ID,
502
			    NOTES,
503
			    AUTH_STATUS,
504
			    MAKER_ID,
505
			    CREATE_DT,
506
			    CHECKER_ID,
507
			    APPROVE_DT
508
			)
509
			VALUES
510
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
511
			    @COST_ID,        -- COST_ID - varchar(15)
512
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
513
			    @NOTES,       -- NOTES - nvarchar(500)
514
			    @AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
515
			    @MAKER_ID,        -- MAKER_ID - varchar(15)
516
			     convert(datetime,@CREATE_DT,103), -- CREATE_DT - datetime
517
			    @CHECKER_ID,        -- CHECKER_ID - varchar(15)
518
			    convert(datetime,@APPROVE_DT,103)-- APPROVE_DT - datetime
519
			 )
520
			
521
			IF @@ERROR <> 0 GOTO ABORT1
522
		-- next Group_Id
523
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
524
		END
525
		CLOSE ListCostCenters
526
		DEALLOCATE ListCostCenters
527

    
528
		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
529

    
530
		
531
		--Insert into TABLE TR_REQUEST_DOC_FILE
532

    
533
		if(@p_ListTrREQFile is not null and cast(@p_ListTrREQFile as nvarchar(max)) != '')
534
		begin
535
			--Insert into TABLE TR_REQUEST_DOC_FILE
536

    
537
		DECLARE @tableTrREQFile TABLE(
538
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
539
			IS_VIEW	bit,
540
			REQ_ID varchar(20),
541
			NOTES  nvarchar(200)
542
		)
543

    
544

    
545
		Declare @fdoc INT
546
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
547

    
548
		INSERT INTO @tableTrREQFile
549
		SELECT *
550
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
551
		WITH 
552
		(
553
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
554
			IS_VIEW	bit,
555
			REQ_ID varchar(20),
556
			NOTES  nvarchar(200)
557
		)
558

    
559
		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
560
		DECLARE ListTrREQFile  CURSOR FOR
561
		SELECT * FROM @tableTrREQFile
562
		OPEN ListTrREQFile
563

    
564
		Declare 
565
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
566
		@IS_VIEW	bit,
567
		@REQ_ID varchar(20),
568
		@_NOTES nvarchar(200)
569

    
570
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
571
		WHILE @@FETCH_STATUS = 0	
572
		BEGIN
573
			DECLARE @l_REQFile_ID VARCHAR(15)
574
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
575
			--select @l_REQFile_ID
576
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
577
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
578
			---------------------BAODNQ 23/5/2022: Chỉnh sửa đính kèm file------------
579
			DECLARE @p_REF_ID VARCHAR(15)
580
			--INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
581
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
582
			begin
583
				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 
584
				SET @p_REF_ID = @TR_REQUEST_DOC_FILE_ID
585
			end
586
			else
587
			begin
588
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
589
				(
590
					 [TR_REQUEST_DOC_FILE_ID]
591
					,[IS_VIEW]
592
					,[REQ_ID]
593
					,[NOTES]
594
				)	
595
				VALUES
596
				(   
597
					@l_REQFile_ID
598
					,isnull(@IS_VIEW,0)
599
					,@p_REQ_ID,
600
					@_NOTES
601
				)
602

    
603
				SET @p_REF_ID = @l_REQFile_ID
604
			end
605

    
606
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@p_REF_ID, 'TR_REQUEST_DOC_FILE')
607

    
608
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
609
		END
610
		CLOSE ListTrREQFile
611
		DEALLOCATE ListTrREQFile
612

    
613
		end
614
		
615
		if(select count(*) from @TEMP) = 0
616
		begin
617
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
618
		END
619
    --NGUYENTD 31072024_SECRETKEY: THÊM TỜ TRÌNH NGHIỆP VỤ Ở DMMS -- NÂNG CẤP GD 4
620
		IF(@p_XMP_TEMP_TEMPLATE_REQUEST_DOC.exist('*') = 0)
621
		BEGIN
622
			SET @p_XMP_TEMP_TEMPLATE_REQUEST_DOC = NULL;
623
		END
624
    --XOÁ TỜ TRÌNH NGHIỆP VỤ CŨ ADD MỚI 
625
    DELETE CM_TEMPLATE_REQUEST_DOC WHERE TRN_ID = @p_REQ_ID
626
		DECLARE @hdocTemplateRequestDoc INT
627
		EXEC sp_xml_preparedocument @hdocTemplateRequestDoc OUTPUT, @p_XMP_TEMP_TEMPLATE_REQUEST_DOC;
628
		-- DS TO TRINH NGHIEP VU
629
				DECLARE @REQUEST_TEMPLATE_ID VARCHAR(20), @REQUEST_TEMPLATE_CODE VARCHAR(20), @REQUEST_TEMPLATE_NAME NVARCHAR(500), 
630
				@TYPE_TEMPLATE_NAME NVARCHAR(500), @REPORT_NO NVARCHAR(500), @BRANCH_NAME NVARCHAR(100), @REPORT_DT VARCHAR(25), @APPROVE_DT1 VARCHAR(25)
631

    
632
				DECLARE XmlDataTemplateRequestDoc CURSOR LOCAL FOR
633
				SELECT * FROM OPENXML(@hdocTemplateRequestDoc, 'Root/XmlDataTemplateRequestDoc',2) 
634
				WITH(REQUEST_TEMPLATE_ID VARCHAR(20), REQUEST_TEMPLATE_CODE VARCHAR(20), REQUEST_TEMPLATE_NAME NVARCHAR(500), 
635
				TYPE_TEMPLATE_NAME NVARCHAR(500), REPORT_NO NVARCHAR(500), BRANCH_NAME NVARCHAR(100), REPORT_DT VARCHAR(25), APPROVE_DT VARCHAR(25)) 
636
				OPEN XmlDataTemplateRequestDoc
637

    
638
			--- INSERT TO TRINH NGHIEP VU
639
				FETCH NEXT FROM XmlDataTemplateRequestDoc INTO @REQUEST_TEMPLATE_ID, @REQUEST_TEMPLATE_CODE, @REQUEST_TEMPLATE_NAME, 
640
				@TYPE_TEMPLATE_NAME, @REPORT_NO, @BRANCH_NAME, @REPORT_DT, @APPROVE_DT1
641
				WHILE @@fetch_status=0 
642
				BEGIN
643
					DECLARE @l_CM_TEMPLATE_REQUEST_DOC_ID VARCHAR(15);
644
					EXEC SYS_CodeMasters_Gen 'CM_TEMPLATE_REQUEST_DOC', @l_CM_TEMPLATE_REQUEST_DOC_ID OUT;
645
					IF @l_CM_TEMPLATE_REQUEST_DOC_ID='' OR @l_CM_TEMPLATE_REQUEST_DOC_ID IS NULL GOTO ABORT;
646

    
647
						
648
					INSERT INTO [dbo].[CM_TEMPLATE_REQUEST_DOC]
649
					([CM_TEMPLATE_REQUEST_DOC_ID] ,[TRN_ID] ,[REQUEST_TEMPLATE_ID] ,[MAKER_ID] ,[CREATE_DT] )
650
					VALUES (@l_CM_TEMPLATE_REQUEST_DOC_ID ,@p_REQ_ID ,@REQUEST_TEMPLATE_ID ,@p_MAKER_ID , GETDATE())
651

    
652
				IF @@error<>0 GOTO ABORT;
653
				FETCH NEXT FROM XmlDataTemplateRequestDoc INTO @REQUEST_TEMPLATE_ID, @REQUEST_TEMPLATE_CODE, @REQUEST_TEMPLATE_NAME, 
654
				@TYPE_TEMPLATE_NAME, @REPORT_NO, @BRANCH_NAME, @REPORT_DT, @APPROVE_DT1
655
				END;
656
				CLOSE XmlDataTemplateRequestDoc;
657
				DEALLOCATE XmlDataTemplateRequestDoc;
658
    --NGUYENTD 31072024_SECRETKEY: THÊM TỜ TRÌNH NGHIỆP VỤ Ở DMMS
659
    --INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
660
    --SELECT value,'UPD', @p_MAKER_ID, GETDATE(),N'Nhân viên cập nhật ký kiến DMMS với nội dung: ' + @p_DMMS_OPINION, N' Nhân viên xử lý phiếu'
661
    --FROM WSISPLIT(@p_REQ_ID,',')
662
COMMIT TRANSACTION
663

    
664
SELECT '0' as Result, @p_REQ_ID  REQ_ID,[REF_ID], [TYPE] , @p_REQ_CODE AS ErrorDesc from @TEMP
665
RETURN '0'
666
ABORT:
667
BEGIN
668
		ROLLBACK TRANSACTION
669
		SELECT '-1' AS RESULT
670
		RETURN '-1'
671
End
672
ABORT1:
673
BEGIN
674
		CLOSE ListGoods
675
		DEALLOCATE ListGoods
676
		CLOSE ListCostCenters
677
		DEALLOCATE ListCostCenters
678
		ROLLBACK TRANSACTION
679
		SELECT '-1' AS RESULT
680
		RETURN '-1'
681
End
682
--12012024_SECRETKEY
683
--10062025_secretkey