Project

General

Profile

TR_REQUEST_DOC_DVMS_Upd.txt

Luc Tran Van, 10/26/2022 08:58 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 25/10/2022--------------
61
		DECLARE @p_ROW_COUNT INT = 0
62

    
63
		Declare @hdoc INT
64
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
65
		DECLARE ListGoods  CURSOR FOR
66
		SELECT *
67
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
68
		WITH 
69
		(
70
			REQDT_ID 	varchar(15)  ,
71
			PL_REQDT_ID	varchar(15)  ,
72
			GOODS_ID	varchar(15)  ,
73
			[DESCRIPTION] nvarchar(500),
74
			QUANTITY	decimal(18, 0)  ,
75
			PRICE	decimal(18, 2)  ,
76
			TOTAL_AMT	decimal(18, 2),	
77
			NOTES	nvarchar(1000),
78
			REQ_DT varchar(30),
79
			AMORT_MONTH DECIMAL(18,2),
80
			TRAN_TYPE_ID varchar(15),
81
			SUP_ID varchar(15),
82
			BID_ID VARCHAR(20),
83
			SUP_NAME NVARCHAR(2000),
84
			OFFERING_VALUE decimal(18, 2),
85
			NOTE_DVMS NVARCHAR(500),
86
			PO_ID VARCHAR(15),
87
			PO_AMT DECIMAL(18,2),
88
			TOTAL_AMT_ETM DECIMAL(18,2),
89
			CURRENCY VARCHAR(15),
90
			EXCHANGE_RATE DECIMAL(18,2),
91
			TAXES DECIMAL(18,2),
92
			-------------BAODNQ 21/4/2022 Thêm biến XML----
93
			DES_GOOD NVARCHAR(500),
94
			UNIT_NAME NVARCHAR(100),
95
			HANGHOA_ID VARCHAR(15),
96
			--------------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)
97
			CONTRACT_ID VARCHAR(15)
98
		)
99
		OPEN ListGoods
100

    
101
		Declare 
102
		@REQDT_ID 	varchar(15)  ,
103
		@PL_REQDT_ID	varchar(15),
104
		@SUP_ID	varchar(15),
105
		@GOODS_ID	varchar(15),
106
		@DESCRIPTION nvarchar(500),
107
		@QUANTITY	decimal(18, 0),
108
		@PRICE	decimal(18, 2),
109
		@TOTAL_AMT	decimal(18, 2),		
110
		@NOTES	nvarchar(1000),
111
		@TRAN_TYPE_ID varchar(15),
112
		@AMORT_MONTH DECIMAL(18,2),
113
		@REQ_DT varchar(30),
114
		@BID_ID VARCHAR(20),
115
		@SUP_NAME NVARCHAR(2000),
116
		@l_SUP_ID VARCHAR(15),
117
		@OFFERING_VALUE DECIMAL(18,2),
118
		@NOTE_DVMS NVARCHAR(500),
119
		@PO_ID VARCHAR(15),
120
		@PO_AMT DECIMAL(18,2),
121
		@TOTAL_AMT_ETM DECIMAL(18,2),
122
		@CURRENCY VARCHAR(15),
123
		@EXCHANGE_RATE DECIMAL(18,2),
124
		@TAXES DECIMAL(18,2),
125
		-------------BAODNQ 21/4/2022 Thêm biến XML----
126
		@DES_GOOD NVARCHAR(500),
127
		@UNIT_NAME NVARCHAR(100),
128
		@HANGHOA_ID VARCHAR(15),
129
		@CONTRACT_ID VARCHAR(15)
130
		
131

    
132
		FETCH NEXT FROM ListGoods INTO 
133
			@REQDT_ID, 
134
			@PL_REQDT_ID,
135
			@GOODS_ID,
136
			@DESCRIPTION,
137
			@QUANTITY,
138
			@PRICE,
139
			@TOTAL_AMT,
140
			@NOTES,
141
			@REQ_DT,
142
			@AMORT_MONTH, 
143
			@TRAN_TYPE_ID, 
144
			@SUP_ID,
145
			@BID_ID,
146
			@SUP_NAME,
147
			@OFFERING_VALUE,
148
			@NOTE_DVMS,
149
			@PO_ID,
150
			@PO_AMT,
151
			@TOTAL_AMT_ETM,
152
			@CURRENCY,
153
			@EXCHANGE_RATE ,
154
			@TAXES,
155
			@DES_GOOD,
156
			@UNIT_NAME,
157
			@HANGHOA_ID,
158
			@CONTRACT_ID
159

    
160
		WHILE @@FETCH_STATUS = 0	
161
		BEGIN
162
			SET @p_ROW_COUNT = @p_ROW_COUNT + 1
163
			-------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----
164
			------------THÌ NHÀ CUNG CẤP BẮT BUỘC CHỌN-----------------
165
			IF(@TRAN_TYPE_ID NOT IN ('TRN0000000006', 'TRN0000000007') AND (@SUP_NAME IS NULL OR @SUP_NAME = ''))
166
			BEGIN
167
				CLOSE ListGoods
168
				DEALLOCATE ListGoods
169
				ROLLBACK TRANSACTION
170
				SELECT '-1' AS RESULT, ''  REQ_ID, 
171
					N'Lưới chi tiết mua sắm thực tế, dòng: ' + CONVERT(VARCHAR, @p_ROW_COUNT)
172
					+ 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
173
				RETURN '-1'
174
			END
175
			--------------ENDBAODNQ--------------------
176
			--LUCTV 21052020 KIEM TRA NEU CHUA TON TAI NHA CUNG CAP THI THEM MOI NHA CUNG CAP
177
			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 <>''))
178
			BEGIN
179
			EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
180
				IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
181
				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)
182
				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)
183
			END
184
			----
185
			--IF(@SUP_ID IS NULL OR @SUP_ID='')
186
			IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
187
				SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_NAME=@SUP_NAME)
188

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

    
192

    
193
			IF(@SUP_NAME IS NULL AND @SUP_NAME = '')
194
				SET @SUP_ID = NULL
195

    
196
			UPDATE dbo.TR_REQUEST_DOC_DT SET 
197
				CURRENCY =@CURRENCY, 
198
				EXCHANGE_RATE =@EXCHANGE_RATE,
199
				TAXES =@TAXES, 
200
				PRICE=@PRICE,
201
				--TOTAL_AMT=ROUND(((QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE),0),
202
				TOTAL_AMT = @TOTAL_AMT,
203
				TRAN_TYPE_ID=@TRAN_TYPE_ID,
204
				SUP_ID=@SUP_ID,
205
				BID_ID=@BID_ID,
206
				OFFERING_VALUE =@OFFERING_VALUE,
207
				NOTE_DVMS =@NOTE_DVMS,
208
				PO_ID = @PO_ID,
209
				PO_AMT = @PO_AMT, 
210
				TOTAL_AMT_ETM = @TOTAL_AMT_ETM, 
211
				----------BADNQ 21/4/2022: Đổi tên biến cập nhật-------
212
				DESCRIPTION = @DES_GOOD,
213
				UNIT_NAME = @UNIT_NAME,
214
				QUANTITY = @QUANTITY,
215
				REQ_DT = CONVERT(DATETIME, @REQ_DT, 103),
216
				HANGHOA_ID = @HANGHOA_ID,
217
				CONTRACT_ID = @CONTRACT_ID
218

    
219
			WHERE REQDT_ID=@REQDT_ID
220
			UPDATE dbo.BID_MASTER SET REQUEST_ID=@p_REQ_ID WHERE BID_ID=@BID_ID
221
			
222
			IF @@ERROR <> 0 GOTO ABORT1
223
		-- next Group_Id
224
			FETCH NEXT FROM ListGoods INTO 
225
				@REQDT_ID, 
226
				@PL_REQDT_ID,
227
				@GOODS_ID,
228
				@DESCRIPTION,
229
				@QUANTITY,
230
				@PRICE,
231
				@TOTAL_AMT,
232
			@NOTES,
233
			@REQ_DT,
234
			@AMORT_MONTH, 
235
			@TRAN_TYPE_ID, 
236
			@SUP_ID,
237
			@BID_ID,
238
			@SUP_NAME,
239
			@OFFERING_VALUE,
240
			@NOTE_DVMS,
241
			@PO_ID,
242
			@PO_AMT,
243
			@TOTAL_AMT_ETM,
244
			@CURRENCY,
245
			@EXCHANGE_RATE ,
246
			@TAXES, 
247
			@DES_GOOD,
248
			@UNIT_NAME,
249
			@HANGHOA_ID,
250
			@CONTRACT_ID
251
		END
252
		CLOSE ListGoods
253
		DEALLOCATE ListGoods
254
		IF @@Error <> 0 GOTO ABORT
255

    
256
		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 
257

    
258
		--Insert into TABLE PL_REQUEST_DOC_DT
259
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
260
		DECLARE ListCostCenters  CURSOR FOR
261
		SELECT *
262
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
263
		WITH 
264
		(
265
			COST_ID	varchar(15),	
266
			NOTES	nvarchar(1000),
267
			AUTH_STATUS varchar(15),
268
			MAKER_ID varchar(15),
269
			CREATE_DT varchar(30),
270
			CHECKER_ID varchar(15),
271
			APPROVE_DT varchar(30)
272
		)
273

    
274
		OPEN ListCostCenters
275
		Declare 
276
		@COST_ID	varchar(15),
277
		@AUTH_STATUS varchar(15),
278
		@MAKER_ID varchar(15),
279
		@CREATE_DT varchar(30),
280
		@CHECKER_ID varchar(15),
281
		@APPROVE_DT varchar(30)
282

    
283
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
284
		WHILE @@FETCH_STATUS = 0	
285
		BEGIN
286
			
287
			DECLARE @l_REQ_COST_ID VARCHAR(15)
288
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
289
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
290
	
291
			INSERT INTO dbo.TR_REQUEST_COSTCENTER
292
			(
293
			    REQ_COST_ID,
294
			    COST_ID,
295
			    REQ_ID,
296
			    NOTES,
297
			    AUTH_STATUS,
298
			    MAKER_ID,
299
			    CREATE_DT,
300
			    CHECKER_ID,
301
			    APPROVE_DT
302
			)
303
			VALUES
304
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
305
			    @COST_ID,        -- COST_ID - varchar(15)
306
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
307
			    @NOTES,       -- NOTES - nvarchar(500)
308
			    @AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
309
			    @MAKER_ID,        -- MAKER_ID - varchar(15)
310
			     convert(datetime,@CREATE_DT,103), -- CREATE_DT - datetime
311
			    @CHECKER_ID,        -- CHECKER_ID - varchar(15)
312
			    convert(datetime,@APPROVE_DT,103)-- APPROVE_DT - datetime
313
			 )
314
			
315
			IF @@ERROR <> 0 GOTO ABORT1
316
		-- next Group_Id
317
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
318
		END
319
		CLOSE ListCostCenters
320
		DEALLOCATE ListCostCenters
321

    
322
		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
323

    
324
		
325
		--Insert into TABLE TR_REQUEST_DOC_FILE
326

    
327
		if(@p_ListTrREQFile is not null and cast(@p_ListTrREQFile as nvarchar(max)) != '')
328
		begin
329
			--Insert into TABLE TR_REQUEST_DOC_FILE
330

    
331
		DECLARE @tableTrREQFile TABLE(
332
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
333
			IS_VIEW	bit,
334
			REQ_ID varchar(20),
335
			NOTES  nvarchar(200)
336
		)
337

    
338

    
339
		Declare @fdoc INT
340
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
341

    
342
		INSERT INTO @tableTrREQFile
343
		SELECT *
344
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
345
		WITH 
346
		(
347
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
348
			IS_VIEW	bit,
349
			REQ_ID varchar(20),
350
			NOTES  nvarchar(200)
351
		)
352

    
353
		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
354
		DECLARE ListTrREQFile  CURSOR FOR
355
		SELECT * FROM @tableTrREQFile
356
		OPEN ListTrREQFile
357

    
358
		Declare 
359
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
360
		@IS_VIEW	bit,
361
		@REQ_ID varchar(20),
362
		@_NOTES nvarchar(200)
363

    
364
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
365
		WHILE @@FETCH_STATUS = 0	
366
		BEGIN
367
			DECLARE @l_REQFile_ID VARCHAR(15)
368
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
369
			--select @l_REQFile_ID
370
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
371
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
372
			---------------------BAODNQ 23/5/2022: Chỉnh sửa đính kèm file------------
373
			DECLARE @p_REF_ID VARCHAR(15)
374
			--INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
375
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
376
			begin
377
				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 
378
				SET @p_REF_ID = @TR_REQUEST_DOC_FILE_ID
379
			end
380
			else
381
			begin
382
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
383
				(
384
					 [TR_REQUEST_DOC_FILE_ID]
385
					,[IS_VIEW]
386
					,[REQ_ID]
387
					,[NOTES]
388
				)	
389
				VALUES
390
				(   
391
					@l_REQFile_ID
392
					,isnull(@IS_VIEW,0)
393
					,@p_REQ_ID,
394
					@_NOTES
395
				)
396

    
397
				SET @p_REF_ID = @l_REQFile_ID
398
			end
399

    
400
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@p_REF_ID, 'TR_REQUEST_DOC_FILE')
401

    
402
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
403
		END
404
		CLOSE ListTrREQFile
405
		DEALLOCATE ListTrREQFile
406

    
407
		end
408
		
409
		if(select count(*) from @TEMP) = 0
410
		begin
411
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
412
		end
413
COMMIT TRANSACTION
414

    
415
SELECT '0' as Result, @p_REQ_ID  REQ_ID,[REF_ID], [TYPE] , @p_REQ_CODE AS ErrorDesc from @TEMP
416
RETURN '0'
417
ABORT:
418
BEGIN
419
		ROLLBACK TRANSACTION
420
		SELECT '-1' AS RESULT
421
		RETURN '-1'
422
End
423
ABORT1:
424
BEGIN
425
		CLOSE ListGoods
426
		DEALLOCATE ListGoods
427
		CLOSE ListCostCenters
428
		DEALLOCATE ListCostCenters
429
		ROLLBACK TRANSACTION
430
		SELECT '-1' AS RESULT
431
		RETURN '-1'
432
End