Project

General

Profile

TR_REQUEST_DOC_Ins.txt

Luc Tran Van, 04/07/2023 02:25 PM

 
1
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_Ins]
2
@p_REQ_CODE	nvarchar(100)  = NULL,
3
@p_REQ_NAME	nvarchar(200)  = NULL,
4
@p_REQ_DT	VARCHAR(30) = NULL,--
5
@p_REQ_TYPE	int = NULL,
6
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
7
@p_REQ_REASON NVARCHAR(500)=NULL,
8
@p_PL_REQ_ID VARCHAR(15),
9
@p_TOTAL_AMT	decimal = NULL,
10
@p_NOTES	nvarchar(1000)  = NULL,
11
@p_RECORD_STATUS	varchar(1)  = NULL,
12
@p_MAKER_ID	varchar(12)  = NULL,
13
@p_CREATE_DT	VARCHAR(30) = NULL,--
14
@p_AUTH_STATUS	varchar(50)  = NULL,
15
@p_CHECKER_ID	varchar(12)  = NULL,
16
@p_APPROVE_DT	VARCHAR(30) = NULL,--
17
@p_BRANCH_DO VARCHAR(15)=NULL,
18
@p_BRANCH_CREATE VARCHAR(15)=NULL,
19
@p_DEP_CREATE VARCHAR(20)=NULL,
20
@p_REQ_PARENT_ID VARCHAR(20)=NULL,
21
@p_USER_REQUEST VARCHAR(15)=NULL,
22
@p_SIGN_USER VARCHAR(15)=NULL,
23
@p_ListGood XML,
24
@p_ListPlGood XML,
25
@p_ListTrREQFile XML,
26
@p_IS_KT bit = null
27
AS
28
DECLARE @sErrorCode VARCHAR(20)
29
DECLARE @TEMP TABLE
30
			(
31
				[KEY] varchar(15),
32
				[REF_ID] varchar(15),
33
				[TYPE] varchar(50)
34
			)
35

    
36
  BEGIN TRANSACTION
37
  
38
	exec [TR_CODE_GenKey] 'TR_REQUEST_DOC', '','PUR', @p_REQ_CODE OUT
39
    
40
	IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE)
41
	BEGIN
42
		ROLLBACK TRANSACTION
43
		SELECT '-1' Result, '' REQ_ID, N'Số phiếu yêu cầu đã tồn tại' ErrorDesc
44
		RETURN '-1'
45
	END
46

    
47
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
48
	BEGIN
49
		ROLLBACK TRANSACTION
50
		SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắt buộc nhập' ErrorDesc 
51
		RETURN '-1'
52
	END
53
		--insert master				
54
		DECLARE @l_REQ_ID VARCHAR(15)
55
		EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC', @l_REQ_ID out
56
		IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
57

    
58

    
59
		INSERT INTO dbo.TR_REQUEST_DOC
60
		(
61
		    REQ_ID,
62
		    REQ_CODE,
63
		    REQ_NAME,
64
		    REQ_DT,
65
		    REQ_TYPE,
66
		    REQ_REASON,
67
		    REQ_CONTENT,
68
		    PL_REQ_ID,
69
		    TOTAL_AMT,
70
		    NOTES,
71
		    RECORD_STATUS,
72
		    MAKER_ID,
73
		    CREATE_DT,
74
		    AUTH_STATUS,
75
		    CHECKER_ID,
76
		    APPROVE_DT,
77
			BRANCH_DO,
78
			PROCESS_ID,
79
			BRANCH_CREATE,
80
			USER_REQUEST,
81
			BRANCH_DVMS,
82
			DEP_CREATE,
83
			REQ_PARENT_ID,SIGN_USER,IS_KT
84
		)
85
		VALUES
86
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
87
		    @p_REQ_CODE,        -- REQ_CODE - varchar(100)
88
		    @p_REQ_NAME,       -- REQ_NAME - nvarchar(200)
89
			CONVERT(DATETIME, @p_REQ_DT, 103), -- REQ_DT - datetime
90
		    @p_REQ_TYPE, 
91
			@p_REQ_REASON,        -- REQ_TYPE - int
92
		    @p_REQ_CONTENT,       -- REQ_CONTENT - nvarchar(1000)
93
		         -- REQ_REASON - nvarchar(500)
94
		    @p_PL_REQ_ID,     
95
		    @p_TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
96
		    @p_NOTES,       -- NOTES - nvarchar(1000)
97
		    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
98
		    @p_MAKER_ID,        -- MAKER_ID - varchar(12)
99
		    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
100
		    'E',        -- AUTH_STATUS - varchar(50)
101
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(12)
102
		    CONVERT(DATETIME, @p_APPROVE_DT, 103),  -- APPROVE_DT - datetime
103
		    @p_BRANCH_DO,
104
			'',   -- PROCESS_ID - varchar(15)
105
			@p_BRANCH_CREATE,
106
			@p_USER_REQUEST,
107
			@p_BRANCH_CREATE,
108
			@p_DEP_CREATE,
109
			@p_REQ_PARENT_ID,@p_SIGN_USER,@p_IS_KT
110
			)
111
		IF @@Error <> 0 GOTO ABORT
112

    
113
		-- LƯỚI HÀNG HÓA THEO TỜ TRÌNH
114
		DECLARE @lstPLDT TABLE(
115
			REQPL_DT_ID VARCHAR(15),
116
			REQ_DOC_ID VARCHAR(15),
117
			PL_REQDT_ID VARCHAR(15),
118
			GD_ID VARCHAR(15),
119
			SUP_ID VARCHAR(15),
120
			HH_ID VARCHAR(15),
121
			TRAN_TYPE_ID VARCHAR(15),
122
			DES_GOOD NVARCHAR(500),
123
			QUANTITY_PL DECIMAL(18, 0),
124
			PRICE_PL DECIMAL(18, 2),
125
			CURRENCY NVARCHAR(50),
126
			EXCHANGE_RATE DECIMAL(18, 2),
127
			TAXES DECIMAL(18, 2),
128
			TOTAL_AMT_ETM DECIMAL(18, 2),
129
			REASON_CDT NVARCHAR(500),
130
			REQ_DT VARCHAR(30),
131
			NOTES NVARCHAR(500)
132
		)
133
		
134
		DECLARE @doc INT
135
		Exec sp_xml_preparedocument @doc Output,@p_ListPlGood
136
		
137
		INSERT INTO @lstPLDT
138
		SELECT *
139
		FROM OPENXML(@doc,'/Root/ListPlGood',2)
140
		WITH 
141
		(
142
			REQPL_DT_ID VARCHAR(15),
143
			REQ_DOC_ID VARCHAR(15),
144
			PL_REQDT_ID VARCHAR(15),
145
			GD_ID VARCHAR(15),
146
			SUP_ID VARCHAR(15),
147
			HH_ID VARCHAR(15),
148
			TRAN_TYPE_ID VARCHAR(15),
149
			DES_GOOD NVARCHAR(500),
150
			QUANTITY_PL DECIMAL(18, 0),
151
			PRICE_PL DECIMAL(18, 2),
152
			CURRENCY NVARCHAR(50),
153
			EXCHANGE_RATE DECIMAL(18, 2),
154
			TAXES DECIMAL(18, 2),
155
			TOTAL_AMT_ETM DECIMAL(18, 2),
156
			REASON_CDT NVARCHAR(500),
157
			REQ_DT VARCHAR(30),
158
			NOTES NVARCHAR(500)
159
		)
160

    
161

    
162
		DECLARE PlGoodsCur CURSOR FOR SELECT * FROM @lstPLDT
163
		OPEN PlGoodsCur
164

    
165
		DECLARE
166
		@pl_REQPL_DT_ID VARCHAR(15),
167
		@pl_REQ_DOC_ID VARCHAR(15),
168
		@pl_PL_REQDT_ID VARCHAR(15),
169
		@pl_GD_ID VARCHAR(15),
170
		@pl_SUP_ID VARCHAR(15),
171
		@pl_HH_ID VARCHAR(15),
172
		@pl_TRAN_TYPE_ID VARCHAR(15),
173
		@pl_DES_GOOD NVARCHAR(500),
174
		@pl_QUANTITY_PL DECIMAL(18, 0),
175
		@pl_PRICE_PL DECIMAL(18, 2),
176
		@pl_CURRENCY NVARCHAR(50),
177
		@pl_EXCHANGE_RATE DECIMAL(18, 2),
178
		@pl_TAXES DECIMAL(18, 2),
179
		@pl_TOTAL_AMT_ETM DECIMAL(18, 2),
180
		@pl_REASON_CDT NVARCHAR(500),
181
		@pl_REQ_DT VARCHAR(30),
182
		@pl_NOTES NVARCHAR(500)
183

    
184
		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,
185
		@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
186
			
187
		WHILE @@FETCH_STATUS = 0	
188
		BEGIN
189

    
190
		DECLARE @l_PLDT_ID VARCHAR(15)
191
		EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_PL_DT', @l_PLDT_ID out
192
		IF @l_PLDT_ID='' OR @l_PLDT_ID IS NULL GOTO ABORT
193

    
194
		INSERT INTO dbo.TR_REQUEST_DOC_PL_DT
195
		(
196
		    REQPL_DT_ID, REQ_DOC_ID, PL_REQDT_ID, GD_ID, SUP_ID, HH_ID, TRAN_TYPE_ID, MAKER_ID, CREATE_DT,
197
		    AUTH_STATUS, CHECKER_ID,APPROVE_DT,DES_GOOD,QUANTITY_PL,PRICE_PL,CURRENCY,EXCHANGE_RATE,TAXES,TOTAL_AMT_ETM,
198
			REASON_CDT,REQ_DT,NOTES, RECORD_STATUS
199
		)
200
		VALUES
201
		(   @l_PLDT_ID,        -- REQPL_DT_ID - varchar(15) -- primary key
202
		    @l_REQ_ID,        -- REQ_DOC_ID - varchar(15)
203
		    @pl_PL_REQDT_ID,        -- PL_REQDT_ID - varchar(15) -- chi tiết hàng hóa trong tờ trình
204
		    @pl_GD_ID,        -- GD_ID - varchar(15)
205
		    @pl_SUP_ID,        -- SUP_ID - varchar(15)
206
		    @pl_HH_ID,        -- HH_ID - varchar(15)
207
		    @pl_TRAN_TYPE_ID,        -- TRAN_TYPE_ID - varchar(15)
208
		    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
209
		    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
210
		    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
211
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
212
		    CONVERT(DATETIME, @p_APPROVE_DT, 103), -- APPROVE_DT - datetime
213
		    @pl_DES_GOOD,       -- DES_GOOD - nvarchar(500)
214
		    @pl_QUANTITY_PL,      -- QUANTITY_PL - decimal(18, 0)
215
		    @pl_PRICE_PL,      -- PRICE_PL - decimal(18, 2)
216
		    @pl_CURRENCY,       -- CURRENCY - nvarchar(50)
217
		    @pl_EXCHANGE_RATE,      -- EXCHANGE_RATE - decimal(18, 2)
218
		    @pl_TAXES,      -- TAXES - decimal(18, 2)
219
		    @pl_TOTAL_AMT_ETM,      -- TOTAL_AMT_ETM - decimal(18, 2)
220
		    @pl_REASON_CDT,       -- REASON_CDT - nvarchar(500)
221
		    CONVERT(DATETIME, @pl_REQ_DT, 103), -- REQ_DT - datetime
222
		    @pl_NOTES,       -- NOTES - nvarchar(500)
223
		    @p_RECORD_STATUS         -- RECORD_STATUS - varchar(1)
224
		)
225
		
226
		IF @@ERROR <> 0 GOTO ABORT1
227
		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,
228
		@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
229
		END
230
		CLOSE PlGoodsCur
231
		DEALLOCATE PlGoodsCur
232

    
233

    
234
		--Insert into TABLE PL_REQUEST_DOC_DT
235

    
236
		DECLARE @lstTRDT TABLE(
237
			PL_REQDT_ID	varchar(15)  ,
238
			GOODS_ID	varchar(15)  ,
239
			[DESCRIPTION] nvarchar(MAX),
240
			QUANTITY	decimal(18,0)  ,
241
			PRICE	decimal(18,2)  ,
242
			TOTAL_AMT	decimal(18,2),	
243
			NOTES	nvarchar(1000),
244
			REQ_DT VARCHAR(30),
245
			AMORT_MONTH DECIMAL(18,2),
246
			TRADE_TYPE_ID varchar(15),
247
			SUP_ID varchar(15),
248
			HH_ID VARCHAR(20),
249
			CURRENCY	nvarchar(50),
250
			EXCHANGE_RATE	decimal(18, 2),
251
			TAXES	decimal(18, 2),
252
			DVDM_ID  VARCHAR(20),
253
			UNIT_NAME NVARCHAR(100)
254
		)
255

    
256

    
257
		Declare @hdoc INT
258
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
259

    
260
		INSERT INTO @lstTRDT
261
		SELECT *
262
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
263
		WITH 
264
		(
265
			PL_REQDT_ID	varchar(15)  ,
266
			GOODS_ID	varchar(15)  ,
267
			[DESCRIPTION] nvarchar(MAX),
268
			QUANTITY	decimal(18,0)  ,
269
			PRICE	decimal(18,2)  ,
270
			TOTAL_AMT	decimal(18,2),	
271
			NOTES	nvarchar(1000),
272
			REQ_DT VARCHAR(30),
273
			AMORT_MONTH DECIMAL(18,2),
274
			TRADE_TYPE_ID varchar(15),
275
			SUP_ID varchar(15),
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
		
285
		DECLARE @p_REQ_DOC_DT_ROW_NUM INT = 0
286

    
287
		DECLARE ListGoods  CURSOR FOR
288
		SELECT * FROM @lstTRDT
289
		OPEN ListGoods
290

    
291
		Declare 
292
		@PL_REQDT_ID	varchar(15),
293
		@SUP_ID	varchar(15),
294
		@GOODS_ID	varchar(15),
295
		@DESCRIPTION nvarchar(MAX),
296
		@QUANTITY	decimal(18, 0),
297
		@PRICE	decimal(18, 2),
298
		@TOTAL_AMT	decimal(18, 2),		
299
		@NOTES	nvarchar(1000),
300
		@TRADE_TYPE_ID varchar(15),
301
		@AMORT_MONTH DECIMAL(18,2),
302
		@RED_DT VARCHAR(30),
303
		@HH_ID VARCHAR(20),
304
		@CURRENCY	nvarchar(50),
305
		@EXCHANGE_RATE	decimal(18, 2),
306
		@DVDM_ID VARCHAR(20),
307
		@TAXES	decimal(18, 2),
308
		@UNIT_NAME NVARCHAR(100)
309

    
310
		FETCH NEXT FROM ListGoods INTO @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
311
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
312
		WHILE @@FETCH_STATUS = 0	
313
		BEGIN
314
			
315
			SET @p_REQ_DOC_DT_ROW_NUM = @p_REQ_DOC_DT_ROW_NUM + 1
316
			--------------Mô tả hàng hóa dịch vụ-----------
317
			IF(@DESCRIPTION IS NULL OR @DESCRIPTION = '')
318
			BEGIN
319
				CLOSE ListGoods
320
				DEALLOCATE ListGoods
321
				ROLLBACK TRANSACTION
322
				SELECT '-1' AS Result, 
323
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
324
					+ N'. Mô tả hàng hóa/ dịch vụ không được để trống' AS ErrorDesc
325
				RETURN '-1'
326
			END
327
			---------------Đơn vị tính----------------
328
			IF(@UNIT_NAME IS NULL OR @UNIT_NAME = '')
329
			BEGIN
330
				CLOSE ListGoods
331
				DEALLOCATE ListGoods
332
				ROLLBACK TRANSACTION
333
				SELECT '-1' AS Result, 
334
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
335
					+ N'. Đơn vị tính không được để trống' AS ErrorDesc
336
				RETURN '-1'
337
			END
338
			---------------Số lượng---------------
339
			IF(@QUANTITY IS NULL)
340
			BEGIN
341
				CLOSE ListGoods
342
				DEALLOCATE ListGoods
343
				ROLLBACK TRANSACTION
344
				SELECT '-1' AS Result, 
345
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
346
					+ N'. Số lượng không được để trống' AS ErrorDesc
347
				RETURN '-1'
348
			END
349
			--------------Đơn giá-------------------
350
			IF(@PRICE IS NULL)
351
			BEGIN
352
				CLOSE ListGoods
353
				DEALLOCATE ListGoods
354
				ROLLBACK TRANSACTION
355
				SELECT '-1' AS Result, 
356
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
357
					+ N'. Đơn giá không được để trống' AS ErrorDesc
358
				RETURN '-1'
359
			END
360
			--------------Loại tiền tệ---------------
361
			IF(@CURRENCY IS NULL OR @CURRENCY = '')
362
			BEGIN
363
				CLOSE ListGoods
364
				DEALLOCATE ListGoods
365
				ROLLBACK TRANSACTION
366
				SELECT '-1' AS Result, 
367
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
368
					+ N'. Loại tiền tệ không được để trống' AS ErrorDesc
369
				RETURN '-1'
370
			END
371
			----------------Thuế NTNN---------------
372
			IF(@TAXES IS NULL)
373
			BEGIN
374
				CLOSE ListGoods
375
				DEALLOCATE ListGoods
376
				ROLLBACK TRANSACTION
377
				SELECT '-1' AS Result, 
378
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
379
					+ N'. Thuế NTNN không được để trống' AS ErrorDesc
380
				RETURN '-1'
381
			END
382
			--------------Tỷ giá quy đổi-----------
383
			IF(@EXCHANGE_RATE IS NULL)
384
			BEGIN
385
				CLOSE ListGoods
386
				DEALLOCATE ListGoods
387
				ROLLBACK TRANSACTION
388
				SELECT '-1' AS Result, 
389
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
390
					+ N'. Tỷ giá quy đổi không được để trống' AS ErrorDesc
391
				RETURN '-1'
392
			END
393
			-------------Ngày cần--------------
394
			IF(@RED_DT IS NULL OR @RED_DT = '')
395
			BEGIN
396
				CLOSE ListGoods
397
				DEALLOCATE ListGoods
398
				ROLLBACK TRANSACTION
399
				SELECT '-1' AS Result, 
400
					N'Lưới chi tiết mua sắm thực tế, dòng:' + CONVERT(VARCHAR,@p_REQ_DOC_DT_ROW_NUM)
401
					+ N'. Ngày cần không được để trống' AS ErrorDesc
402
				RETURN '-1'
403
			END
404
			
405
			DECLARE @l_REQDT_ID VARCHAR(15)
406
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_DT', @l_REQDT_ID out
407
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
408
	
409
			SET @TOTAL_AMT= (@QUANTITY * @PRICE + @TAXES) * @EXCHANGE_RATE
410

    
411
			INSERT INTO dbo.TR_REQUEST_DOC_DT
412
			(
413
			    REQDT_ID,
414
				[REQPL_DT_ID],
415
			    REQ_DOC_ID,
416
			    PL_REQDT_ID,
417
			    GD_ID,
418
				TRAN_TYPE_ID,
419
				SUP_ID,
420
			    DESCRIPTION,
421
			    QUANTITY,
422
			    PRICE,
423
				PRICE_ETM,
424
			    TOTAL_AMT,
425
				TOTAL_AMT_ETM,
426
			    REQ_DT,
427
			    AMORT_MONTH,
428
			    NOTES,
429
			    RECORD_STATUS,
430
			    MAKER_ID,
431
			    CREATE_DT,
432
			    AUTH_STATUS,
433
			    CHECKER_ID,
434
			    APPROVE_DT,
435
				HANGHOA_ID,
436
				CURRENCY,
437
				EXCHANGE_RATE,
438
				TAXES,
439
				DVDM_ID,
440
				UNIT_NAME
441
			)	
442
			VALUES
443
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
444
				(SELECT TOP 1 REQPL_DT_ID FROM dbo.TR_REQUEST_DOC_PL_DT WHERE REQ_DOC_ID = @l_REQ_ID AND PL_REQDT_ID = @PL_REQDT_ID),
445
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
446
			    @PL_REQDT_ID,        -- PLAN_ID - varchar(15)
447
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
448
			    --@TRADE_TYPE_ID,
449
				CASE WHEN (SELECT TOP 1 TRADE_TYPE FROM dbo.PL_REQUEST_DOC_DT WHERE REQDT_ID = @PL_REQDT_ID) ='CDT' THEN 'TRN0000000003' ELSE 'TRN0000000009' END, -- LUCTV 17-03-2023 FIX
450
				-- NEU TTCT LA CDT THÌ PYCMS AUTO CDT & NGUOC LAI
451
				@SUP_ID,       -- NAME - nvarchar(200)
452
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
453
				@QUANTITY,      -- QUANTITY - decimal(18, 0)
454
			    @PRICE,
455
				@PRICE,     -- PRICE - decimal(18, 0)
456
			    ROUND(@TOTAL_AMT,0),
457
				ROUND(@TOTAL_AMT,0),
458
				CONVERT(DATETIME, @RED_DT, 103),
459
				@AMORT_MONTH,
460
				@NOTES,  -- TOTAL_AMT - decimal(18, 0)
461
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
462
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
463
			    CONVERT(DATETIME, @p_CREATE_DT, 103), -- CREATE_DT - datetime
464
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
465
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
466
			    CONVERT(DATETIME, @p_APPROVE_DT, 103),
467
				@HH_ID,
468
				@CURRENCY,
469
				@EXCHANGE_RATE,
470
				@TAXES,
471
				@DVDM_ID,-- APPROVE_DT - datetime,
472
				@UNIT_NAME
473
				)
474
			
475
		
476
		
477
			IF @@ERROR <> 0 GOTO ABORT1
478
		-- next Group_Id
479
			FETCH NEXT FROM ListGoods INTO @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
480
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID,@UNIT_NAME
481
		END
482
		CLOSE ListGoods
483
		DEALLOCATE ListGoods
484

    
485

    
486
		UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(TOTAL_AMT_ETM) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@l_REQ_ID) WHERE REQ_ID=@l_REQ_ID 
487

    
488

    
489
		IF @@Error <> 0 GOTO ABORT
490

    
491
		DECLARE @COST_ID VARCHAR(20)
492

    
493
		DECLARE lstCostCenter CURSOR FOR
494
		SELECT COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_PL_REQ_ID
495
		GROUP BY COST_ID
496
		OPEN lstCostCenter
497
		FETCH NEXT FROM lstCostCenter INTO @COST_ID
498
		WHILE @@FETCH_STATUS=0
499
		BEGIN
500

    
501

    
502
			DECLARE @l_REQ_COST_ID VARCHAR(15)
503
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
504
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
505
				INSERT INTO dbo.TR_REQUEST_COSTCENTER
506
				(
507
					REQ_COST_ID,
508
					COST_ID,
509
					REQ_ID,
510
					NOTES,
511
					AUTH_STATUS,
512
					MAKER_ID,
513
					CREATE_DT,
514
					CHECKER_ID,
515
					APPROVE_DT
516
				)
517
				VALUES
518
				(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
519
					@COST_ID,        -- COST_ID - varchar(15)
520
					@l_REQ_ID,        -- REQ_ID - varchar(15)
521
					N'',       -- NOTES - nvarchar(500)
522
					'',        -- AUTH_STATUS - varchar(1)
523
					@p_MAKER_ID,        -- MAKER_ID - varchar(15)
524
					NULL, -- CREATE_DT - datetime
525
					'',        -- CHECKER_ID - varchar(15)
526
					NULL  -- APPROVE_DT - datetime
527
					)
528
				FETCH NEXT FROM lstCostCenter INTO @COST_ID
529
		END 
530
		CLOSE lstCostCenter
531
		DEALLOCATE lstCostCenter
532
		IF @@Error <> 0 GOTO ABORT
533

    
534
		
535
		INSERT INTO dbo.PL_REQUEST_PROCESS
536
		(
537
		    REQ_ID,
538
		    PROCESS_ID,
539
		    STATUS,
540
		    ROLE_USER,
541
		    BRANCH_ID,
542
		    CHECKER_ID,
543
		    APPROVE_DT,
544
		    PARENT_PROCESS_ID,
545
		    IS_LEAF,
546
		    COST_ID,
547
		    DVDM_ID,
548
		    NOTES,
549
		    IS_HAS_CHILD
550
		)
551
		VALUES
552
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
553
		    'NEW',        -- PROCESS_ID - varchar(10)
554
		    'C',        -- STATUS - varchar(5)
555
		    '',        -- ROLE_USER - varchar(50)
556
		    '',        -- BRANCH_ID - varchar(15)
557
		    '',        -- CHECKER_ID - varchar(15)
558
		    NULL,      -- APPROVE_DT - datetime
559
		    '',        -- PARENT_PROCESS_ID - varchar(10)
560
		    'N',        -- IS_LEAF - varchar(1)
561
		    '',        -- COST_ID - varchar(15)
562
		    '',        -- DVDM_ID - varchar(15)
563
		    N'Chờ gửi phê duyệt',       -- NOTES - nvarchar(500)
564
		    NULL       -- IS_HAS_CHILD - bit
565
		    )
566
		
567
		--Insert into TABLE TR_REQUEST_DOC_FILE
568

    
569
		DECLARE @tableTrREQFile TABLE(
570
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
571
			IS_VIEW	bit,
572
			REQ_ID varchar(20),
573
			NOTES  nvarchar(200)
574
		)
575

    
576

    
577
		Declare @fdoc INT
578
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
579

    
580
		INSERT INTO @tableTrREQFile
581
		SELECT *
582
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
583
		WITH 
584
		(
585
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
586
			IS_VIEW	bit,
587
			REQ_ID varchar(20),
588
			NOTES  nvarchar(200)
589
		)
590

    
591
		DECLARE ListTrREQFile  CURSOR FOR
592
		SELECT * FROM @tableTrREQFile
593
		OPEN ListTrREQFile
594

    
595
		Declare 
596
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
597
		@IS_VIEW	bit,
598
		@REQ_ID varchar(20),
599
		@_NOTES nvarchar(200)
600

    
601
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
602
		WHILE @@FETCH_STATUS = 0	
603
		BEGIN
604
			DECLARE @l_REQFile_ID VARCHAR(15)
605
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
606
			--select @l_REQFile_ID
607
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
608
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
609

    
610
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
611

    
612
			INSERT INTO dbo.TR_REQUEST_DOC_FILE
613
			(
614
			     [TR_REQUEST_DOC_FILE_ID]
615
				,[IS_VIEW]
616
				,[REQ_ID]
617
				,[NOTES]
618
			)	
619
			VALUES
620
			(   
621
				@l_REQFile_ID
622
				,isnull(@IS_VIEW,0)
623
				,@l_REQ_ID
624
				,@_NOTES
625
			)
626
			IF @@ERROR <> 0 GOTO ABORT1
627
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
628
		END
629
		CLOSE ListTrREQFile
630
		DEALLOCATE ListTrREQFile
631
		IF @@Error <> 0 GOTO ABORT
632
		
633
		if(select count(*) from @TEMP) = 0
634
		begin
635
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_REQUEST_DOC_FILE')
636
		end
637
COMMIT TRANSACTION
638
SELECT '0' as Result, @l_REQ_ID  REQ_ID,[REF_ID], [TYPE] ,@p_REQ_CODE REQ_CODE, '' AS ErrorDesc from @TEMP
639
RETURN '0'
640
ABORT:
641
BEGIN
642
		ROLLBACK TRANSACTION
643
		SELECT '-1' AS Result
644
		RETURN '-1'
645
End
646
ABORT1:
647
BEGIN
648
		CLOSE ListGoods
649
		DEALLOCATE ListGoods
650
		ROLLBACK TRANSACTION
651
		SELECT '-1' AS Result
652
		RETURN '-1'
653
End
654

    
655

    
656