Project

General

Profile

TR_REQUEST_DOC_Ins.txt

Luc Tran Van, 12/01/2022 03:00 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_REQUEST_DOC_Ins]
3
@p_REQ_CODE	nvarchar(100)  = NULL,
4
@p_REQ_NAME	nvarchar(200)  = NULL,
5
@p_REQ_DT	VARCHAR(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 = 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	VARCHAR(30) = NULL,--
15
@p_AUTH_STATUS	varchar(50)  = NULL,
16
@p_CHECKER_ID	varchar(12)  = NULL,
17
@p_APPROVE_DT	VARCHAR(30) = NULL,--
18
@p_BRANCH_DO VARCHAR(15)=NULL,
19
@p_BRANCH_CREATE VARCHAR(15)=NULL,
20
@p_DEP_CREATE VARCHAR(20)=NULL,
21
@p_REQ_PARENT_ID VARCHAR(20)=NULL,
22
@p_USER_REQUEST VARCHAR(15)=NULL,
23
@p_SIGN_USER VARCHAR(15)=NULL,
24
@p_ListGood XML,
25
@p_ListPlGood XML,
26
@p_ListTrREQFile XML,
27
@p_IS_KT bit = null
28
AS
29
DECLARE @sErrorCode VARCHAR(20)
30
DECLARE @TEMP TABLE
31
			(
32
				[KEY] varchar(15),
33
				[REF_ID] varchar(15),
34
				[TYPE] varchar(50)
35
			)
36

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

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

    
59

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

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

    
162

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

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

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

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

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

    
234

    
235
		--Insert into TABLE PL_REQUEST_DOC_DT
236

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

    
257

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

    
261
		INSERT INTO @lstTRDT
262
		SELECT *
263
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
264
		WITH 
265
		(
266
			PL_REQDT_ID	varchar(15)  ,
267
			GOODS_ID	varchar(15)  ,
268
			[DESCRIPTION] nvarchar(500),
269
			QUANTITY	decimal(18,0)  ,
270
			PRICE	decimal(18,2)  ,
271
			TOTAL_AMT	decimal(18,2),	
272
			NOTES	nvarchar(1000),
273
			REQ_DT VARCHAR(30),
274
			AMORT_MONTH DECIMAL(18,2),
275
			TRADE_TYPE_ID varchar(15),
276
			SUP_ID varchar(15),
277
			HH_ID VARCHAR(20),
278
			CURRENCY	nvarchar(50),
279
			EXCHANGE_RATE	decimal(18, 2),
280
			TAXES	decimal(18, 2),
281
			DVDM_ID  VARCHAR(20),
282
			UNIT_NAME NVARCHAR(100)
283
		)
284

    
285
		
286
		DECLARE @p_REQ_DOC_DT_ROW_NUM INT = 0
287

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

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

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

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

    
484

    
485
		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 
486

    
487

    
488
		IF @@Error <> 0 GOTO ABORT
489

    
490
		DECLARE @COST_ID VARCHAR(20)
491

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

    
500

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

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

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

    
575

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

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

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

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

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

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

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