Project

General

Profile

2107 cap nhat 1.txt

Luc Tran Van, 07/21/2020 09:08 AM

 
1
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_CODE_GenKey]
2
	@p_BRANCH_ID varchar(50),	
3
	@p_DEP_ID VARCHAR(100),
4
	@p_KeyGen nvarchar(100)  OUT
5
AS	
6
	--DECLARE @SHORTNAME NVARCHAR(100) = (SELECT DAO_NAME FROM CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID)
7
	DECLARE @SHORTNAME NVARCHAR(100) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID)
8
	DECLARE @CurValue AS Numeric, @p_TYPE_ID VARCHAR(50) = 'PL_REQUEST_DOC'
9
	DECLARE @CODE_YEAR VARCHAR(50) = @p_DEP_ID + '.'+ CONVERT(VARCHAR,YEAR(GETDATE()))	
10
BEGIN TRANSACTION	
11

    
12
--SELECT * FROM TR_CODE_GEN
13

    
14
	IF NOT EXISTS(SELECT 1 FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR)
15
		BEGIN
16
			INSERT TR_CODE_GEN (
17
				CODE_TYPE,
18
				CUR_YEAR,				
19
				CUR_VALUE
20
			)VALUES(
21
				@p_TYPE_ID,
22
				@CODE_YEAR,				
23
				1	
24
			)
25
			IF @@ERROR <> 0 GOTO ABORT
26
			
27
			SET @CurValue = 1
28
		END
29
	ELSE
30
		BEGIN	
31
			IF EXISTS(SELECT 1 FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR)
32
				UPDATE	TR_CODE_GEN 
33
				SET		CUR_VALUE =CUR_VALUE + 1
34
				WHERE	CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR
35
			IF @@ERROR <> 0 GOTO ABORT
36
		
37
			SELECT @CurValue = CUR_VALUE FROM TR_CODE_GEN WHERE CODE_TYPE = @p_TYPE_ID AND CUR_YEAR = @CODE_YEAR
38
		END	
39
	SET @p_KeyGen =  right('00000000' + convert(varchar(20),@CurValue), 4)+'/'+CONVERT(VARCHAR,YEAR(GETDATE()))+'/TT-'+@SHORTNAME
40
	IF @@ERROR <> 0 GOTO ABORT
41

    
42
COMMIT TRANSACTION
43
RETURN 0
44

    
45
ABORT:
46
BEGIN
47
	ROLLBACK TRANSACTION
48
	SET @p_KeyGen = ''
49
	RETURN -1
50
END
51

    
52

    
53

    
54

    
55

    
56

    
57

    
58

    
59
2
60

    
61
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_Ins]
62
@p_REQ_CODE	nvarchar(100)  = NULL,
63
@p_REQ_NAME	nvarchar(200)  = NULL,
64
@p_REQ_DT	DATETIME = NULL,
65
@p_REQ_TYPE	int = NULL,
66
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
67
@p_REQ_REASON NVARCHAR(500)=NULL,
68
@p_TOTAL_AMT	decimal = NULL,
69
@p_NOTES	nvarchar(1000)  = NULL,
70
@p_RECORD_STATUS	varchar(1)  = NULL,
71
@p_MAKER_ID	varchar(20)  = NULL,
72
@p_CREATE_DT	DATETIME = NULL,
73
@p_AUTH_STATUS	varchar(50)  = NULL,
74
@p_CHECKER_ID	varchar(20)  = NULL,
75
@p_APPROVE_DT	DATETIME = NULL,
76
@p_BRANCH_ID VARCHAR(15)=NULL,
77
@p_DVDM_ID VARCHAR(20) = NULL,
78
@p_REQ_PARENT_ID VARCHAR(20) = NULL,
79
@p_BRANCH_FEE NVARCHAR(500) = NULL,
80
@p_DEP_ID VARCHAR(20)=NULL,
81
@p_DEP_FEE_ID VARCHAR(20)= NULL,
82
@p_IS_BACKDAY BIT = NULL,
83
@p_REQ_LINE VARCHAR(20),
84
@p_SIGN_USER VARCHAR(20) = NULL,
85
@p_ListGood XML,
86
@p_ListCostCenter XML,
87
@p_ListTransfer XML
88
AS	
89
  BEGIN TRANSACTION
90
		DECLARE @DEP_ID VARCHAR(15) = (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
91
		exec [dbo].[PL_REQUEST_DOC_CODE_GenKey] @p_BRANCH_ID,@DEP_ID, @p_REQ_CODE out
92
		IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
93
		BEGIN
94
			SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã tờ trình chủ trương bắc buộc nhập' ErrorDesc 
95
			ROLLBACK TRANSACTION
96
			RETURN '-1'
97
		END
98
		IF EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE)
99
		BEGIN
100
			SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
101
			ROLLBACK TRANSACTION
102
			RETURN '-1'
103
		END
104
		DECLARE @sErrorCode VARCHAR(20)
105
		--insert master				
106
		DECLARE @l_REQ_ID VARCHAR(15)
107
		EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC', @l_REQ_ID out
108
		IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
109

    
110

    
111
		DECLARE @BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
112

    
113
		SET  @BRANCH_CREATE= (SELECT TLSUBBRID  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
114
		IF(EXISTS(SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS'))		
115
			SET @DEP_CREATE=(SELECT SECUR_CODE  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
116
		ELSE
117
			SET @DEP_CREATE=''
118
		
119

    
120
		INSERT INTO dbo.PL_REQUEST_DOC
121
		(
122
		    REQ_ID,
123
		    REQ_CODE,
124
		    REQ_NAME,
125
		    REQ_DT,
126
		    REQ_TYPE,
127
		    REQ_CONTENT,
128
		    REQ_REASON,
129
		    BRANCH_ID,
130
		    TOTAL_AMT,
131
		    NOTES,
132
		    RECORD_STATUS,
133
		    MAKER_ID,
134
		    CREATE_DT,
135
		    AUTH_STATUS,
136
		    CHECKER_ID,
137
		    APPROVE_DT,
138
			DVDM_APP_ID,
139
			REQ_PARENT_ID,
140
			BRANCH_FEE,
141
			IS_BACKDAY,
142
			PROCESS_ID,
143
			DEP_ID,
144
			DEP_FEE,
145
			BRANCH_CREATE,
146
			DEP_CREATE,
147
			REQ_LINE,SIGN_USER
148
			
149
		)
150
		VALUES
151
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
152
		    @p_REQ_CODE,        -- REQ_CODE - varchar(100)
153
		    @p_REQ_NAME,       -- REQ_NAME - nvarchar(200)
154
			  CAST(@p_REQ_DT AS DATE), -- REQ_DT - datetime
155
		    @p_REQ_TYPE,         -- REQ_TYPE - int
156
		    @p_REQ_CONTENT,       -- REQ_CONTENT - nvarchar(1000)
157
		    @p_REQ_REASON,       -- REQ_REASON - nvarchar(500)
158
		    @p_BRANCH_ID,        -- BRANCH_ID - varchar(15)
159
		    @p_TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
160
		    @p_NOTES,       -- NOTES - nvarchar(1000)
161
		    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
162
		    @p_MAKER_ID,        -- MAKER_ID - varchar(12)
163
		    CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
164
		    'E',        -- AUTH_STATUS - varchar(50)
165
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(12)
166
		    CAST(@P_APPROVE_DT AS DATE),  -- APPROVE_DT - datetime
167
			@p_DVDM_ID,
168
			@p_REQ_PARENT_ID,
169
			@p_BRANCH_FEE,
170
			@p_IS_BACKDAY,
171
			'',
172
			@p_DEP_ID,
173
			@p_DEP_FEE_ID,
174
			@BRANCH_CREATE,
175
			@DEP_CREATE,
176
			@p_REQ_LINE,@p_SIGN_USER
177
		    )
178
		
179
		
180
		IF @@Error <> 0 GOTO ABORT
181
		DECLARE @TABLE TABLE(
182
			PLAN_ID	varchar(15)  ,
183
			TRADE_ID	varchar(15)  ,
184
			GOODS_ID	varchar(15)  ,
185
			[DESCRIPTION] nvarchar(500),
186
			UNIT_ID	varchar(15)  ,
187
			QUANTITY	decimal(18,0)  ,
188
			PRICE	decimal(18,2)  ,
189
			TOTAL_AMT	decimal(18,2),	
190
			NOTES	nvarchar(1000),
191
			REQDT_TYPE VARCHAR(1),
192
			NAME NVARCHAR(500),
193
			DVDM_ID VARCHAR(20),
194
			HH_ID VARCHAR(20),
195
			CURRENCY	nvarchar(50),
196
			EXCHANGE_RATE	decimal(18,2),
197
			TAXES	decimal(18, 2),
198
			SUP_ID VARCHAR(20),
199
			TRADE_TYPE VARCHAR(20),
200
			KHOI_ID VARCHAR(20),
201
			UNIT_NAME nvarchar(200)
202
		)
203
	
204

    
205
		--Insert into TABLE PL_REQUEST_DOC_DT
206
		Declare @hdoc INT
207
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
208
		INSERT INTO @TABLE
209
		SELECT PLAN_ID,
210
               TRADE_ID,
211
               GOODS_ID,
212
               DESCRIPTION,
213
               UNIT_ID,
214
               QUANTITY,
215
               PRICE,
216
               TOTAL_AMT,
217
               NOTES,
218
               REQDT_TYPE,
219
               NAME,
220
               DVDM_ID,
221
               HH_ID,
222
               CURRENCY,
223
               EXCHANGE_RATE,
224
               TAXES,
225
               SUP_ID,
226
               TRADE_TYPE,
227
			   KHOI_ID,UNIT_NAME
228
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
229
		WITH 
230
		(
231
			PLAN_ID	varchar(15)  ,
232
			TRADE_ID	varchar(15)  ,
233
			GOODS_ID	varchar(15)  ,
234
			[DESCRIPTION] nvarchar(500),
235
			UNIT_ID	varchar(15)  ,
236
			QUANTITY	decimal(18,0)  ,
237
			PRICE	decimal(18,2)  ,
238
			TOTAL_AMT	decimal(18,2),	
239
			NOTES	nvarchar(1000),
240
			REQDT_TYPE VARCHAR(1),
241
			NAME NVARCHAR(500),
242
			DVDM_ID VARCHAR(20),
243
			HH_ID VARCHAR(20),
244
			CURRENCY	nvarchar(50),
245
			EXCHANGE_RATE	decimal(18,2),
246
			TAXES	decimal(18, 2),
247
			SUP_ID VARCHAR(20),
248
			TRADE_TYPE VARCHAR(20),
249
			KHOI_ID VARCHAR(20),
250
			UNIT_NAME nvarchar(200)
251
		)
252

    
253
		
254

    
255
		
256

    
257
	
258
		DECLARE @TABLE_TRANSFER TABLE (
259
			FR_PLAN_ID	varchar(15),
260
			FR_TRADE_ID	varchar(15),
261
			FR_GOOD_ID	varchar(15),
262
			FR_BRN_ID	varchar(15),
263
			TO_BRN_ID	varchar(15),
264
			TO_PLAN_ID	varchar(15),
265
			TO_TRADE_ID	varchar(15),	
266
			TO_GOOD_ID	varchar(15),	
267
			QTY  DECIMAL(18,0),
268
			TOTAL_AMT	decimal(18),	
269
			NOTES	nvarchar(1000),
270
			FR_DEP_ID VARCHAR(20),
271
			TO_DEP_ID VARCHAR(20),
272
			FR_DVDM_ID VARCHAR(20),
273
			TO_DVDM_ID VARCHAR(20),
274
			FR_KHOI_ID VARCHAR(20),
275
			TO_KHOI_ID VARCHAR(20),
276
			FR_GD_TYPE VARCHAR(20),
277
			TO_GD_TYPE VARCHAR(20)
278
		)
279

    
280
		Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
281

    
282
		INSERT INTO @TABLE_TRANSFER
283
		SELECT FR_PLAN_ID,
284
               FR_TRADE_ID,
285
               FR_GOOD_ID,
286
               FR_BRN_ID,
287
               TO_BRN_ID,
288
               TO_PLAN_ID,
289
               TO_TRADE_ID,
290
               TO_GOOD_ID,
291
               QTY,
292
               TOTAL_AMT,
293
               NOTES,
294
               FR_DEP_ID,
295
               TO_DEP_ID,
296
               FR_DVDM_ID,
297
               TO_DVDM_ID,
298
               FR_KHOI_ID,
299
               TO_KHOI_ID,
300
               FR_GD_TYPE,
301
               TO_GD_TYPE 
302
		FROM OPENXML(@hdoc,'/Root/ListTransfer',2)
303
		WITH 
304
		(
305
			FR_PLAN_ID	varchar(15),
306
			FR_TRADE_ID	varchar(15),
307
			FR_GOOD_ID	varchar(15),
308
			FR_BRN_ID	varchar(15),
309
			TO_BRN_ID	varchar(15),
310
			TO_PLAN_ID	varchar(15),
311
			TO_TRADE_ID	varchar(15),	
312
			TO_GOOD_ID	varchar(15),	
313
			QTY  DECIMAL(18,0),
314
			TOTAL_AMT	decimal(18),	
315
			NOTES	nvarchar(1000),
316
			FR_DEP_ID VARCHAR(20),
317
			TO_DEP_ID VARCHAR(20),
318
			FR_DVDM_ID VARCHAR(20),
319
			TO_DVDM_ID VARCHAR(20),
320
			FR_KHOI_ID VARCHAR(20),
321
			TO_KHOI_ID VARCHAR(20),
322
			FR_GD_TYPE VARCHAR(20),
323
			TO_GD_TYPE VARCHAR(20)
324
		
325
		)
326
		WHERE FR_BRN_ID !='' AND FR_BRN_ID IS NOT NULL
327

    
328

    
329
		
330

    
331

    
332

    
333

    
334

    
335

    
336
		DECLARE ListGoods  CURSOR FOR
337
		SELECT PLAN_ID,
338
               TRADE_ID,
339
               GOODS_ID,
340
               DESCRIPTION,
341
               UNIT_ID,
342
               QUANTITY,
343
               PRICE,
344
               TOTAL_AMT,
345
               NOTES,
346
               REQDT_TYPE,
347
               NAME,
348
               DVDM_ID,
349
               HH_ID,
350
               CURRENCY,
351
               EXCHANGE_RATE,
352
               TAXES,
353
               SUP_ID,
354
               TRADE_TYPE,KHOI_ID,UNIT_NAME FROM @TABLE
355

    
356
		OPEN ListGoods
357

    
358
		Declare 
359
		@PLAN_ID	varchar(15),
360
		@TRADE_ID	varchar(15),
361
		@GOODS_ID	varchar(15),
362
		@DESCRIPTION nvarchar(500),
363
		@UNIT_ID	varchar(15),
364
		@QUANTITY	decimal(18),
365
		@PRICE	decimal(18,2),
366
		@TOTAL_AMT	decimal(18,2),		
367
		@NOTES	nvarchar(1000),
368
		@REQDT_TYPE VARCHAR(1),
369
		@NAME NVARCHAR(500),
370
		@DVDM_ID VARCHAR(20),
371
		@HH_ID VARCHAR(20),
372
		@CURRENCY	nvarchar(50),
373
		@EXCHANGE_RATE	decimal(18, 2),
374
		@TAXES	decimal(18, 2),
375
		@SUP_ID VARCHAR(20),
376
		@TRADE_TYPE VARCHAR(20),
377
		@KHOI_ID VARCHAR(20),
378
		@UNIT_NAME nvarchar(200)
379

    
380
		FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
381
		@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
382
		WHILE @@FETCH_STATUS = 0	
383
		BEGIN
384
			
385

    
386
			DECLARE @l_REQDT_ID VARCHAR(15)
387
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
388
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
389
			
390
			SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + @TAXES
391

    
392
			INSERT INTO dbo.PL_REQUEST_DOC_DT
393
			(
394
			    REQDT_ID,
395
			    REQ_ID,
396
			    PLAN_ID,
397
			    TRADE_ID,
398
			    GOODS_ID,
399
			    NAME,
400
			    DESCRIPTION,
401
			    REQDT_TYPE,
402
			    UNIT_ID,
403
			    QUANTITY,
404
			    PRICE,
405
			    TOTAL_AMT,
406
			    RECORD_STATUS,
407
			    MAKER_ID,
408
			    CREATE_DT,
409
			    AUTH_STATUS,
410
			    CHECKER_ID,
411
			    APPROVE_DT,
412
				DVDM_ID,
413
				HANGHOA_ID,
414
				CURRENCY,
415
				EXCHANGE_RATE,
416
				TAXES,SUP_ID,TRADE_TYPE,KHOI_ID,UNIT_NAME
417
			)
418
			VALUES
419
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
420
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
421
			    @PLAN_ID,        -- PLAN_ID - varchar(15)
422
			    @TRADE_ID,        -- TRADE_ID - varchar(15)
423
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
424
			    @NAME,       -- NAME - nvarchar(200)
425
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
426
			    @REQDT_TYPE,        -- REQDT_TYPE - varchar(1)
427
			    @UNIT_ID,        -- UNIT_ID - varchar(15)
428
			    @QUANTITY,      -- QUANTITY - decimal(18, 0)
429
			    @PRICE,      -- PRICE - decimal(18, 0)
430
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
431
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
432
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
433
			     CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
434
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
435
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
436
			     CAST(@P_APPROVE_DT AS DATE),   -- APPROVE_DT - datetime
437
			    @DVDM_ID,
438
				@HH_ID,
439
				@CURRENCY,
440
				@EXCHANGE_RATE,
441
				@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
442
				)
443
			
444
			
445
			IF @@ERROR <> 0 GOTO ABORT1
446
		-- next Group_Id
447
			FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
448
			@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
449
			END
450
			CLOSE ListGoods
451
			DEALLOCATE ListGoods
452

    
453

    
454
			IF @@Error <> 0 GOTO ABORT
455
		--Insert into TABLE PL_REQUEST_DOC_DT
456

    
457
		UPDATE dbo.PL_REQUEST_DOC SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID =@l_REQ_ID) WHERE PL_REQUEST_DOC.REQ_ID=@l_REQ_ID
458
		
459

    
460
		Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
461
		DECLARE ListTransfers  CURSOR FOR
462
		SELECT *
463
		FROM @TABLE_TRANSFER
464
		OPEN ListTransfers
465

    
466
		Declare 
467
		@FR_PLAN_ID	varchar(15),
468
		@FR_TRADE_ID	varchar(15),
469
		@FR_GOOD_ID	varchar(15),
470
		@FR_BRN_ID	varchar(15),
471
		@TO_BRN_ID	varchar(15),
472
		@TO_PLAN_ID	varchar(15),
473
		@TO_TRADE_ID	varchar(15),	
474
		@TO_GOOD_ID	varchar(15),	
475
		@QTY  DECIMAL(18,0),
476
		@FR_DEP_ID VARCHAR(20),
477
		@TO_DEP_ID VARCHAR(20),
478
		@FR_DVDM_ID VARCHAR(20),
479
		@TO_DVDM_ID VARCHAR(20),
480
		@FR_KHOI_ID VARCHAR(20),
481
		@TO_KHOI_ID VARCHAR(20),
482
		@FR_GD_TYPE VARCHAR(20),
483
		@TO_GD_TYPE VARCHAR(20)
484

    
485
		FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
486
		@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
487
		WHILE @@FETCH_STATUS = 0	
488
		BEGIN
489
			
490
			
491

    
492

    
493

    
494

    
495
			DECLARE @l_REQ_TRANSFER_ID VARCHAR(15)
496
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_TRANSFER', @l_REQ_TRANSFER_ID out
497
			IF @l_REQ_TRANSFER_ID='' OR @l_REQ_TRANSFER_ID IS NULL GOTO ABORT
498
			
499
			INSERT INTO dbo.PL_REQUEST_TRANSFER
500
			(
501
			    REQ_TRANSFER_ID,
502
			    REQ_DOC_ID,
503
			    FR_PLAN_ID,
504
			    FR_TRADE_ID,
505
			    FR_GOOD_ID,
506
			    FR_BRN_ID,
507
			    TO_BRN_ID,
508
			    TO_PLAN_ID,
509
			    TO_TRADE_ID,
510
			    TO_GOOD_ID,
511
			    QTY,
512
			    TOTAL_AMT,
513
			    NOTES,
514
			    AUTH_STATUS,
515
			    MAKER_ID,
516
			    CREATE_DT,
517
			    CHECKER_ID,
518
			    APPROVE_DT,
519
				FR_DEP_ID,
520
				TO_DEP_ID,
521
				FR_DVDM_ID,
522
				TO_DVDM_ID,
523
				FR_KHOI_ID,
524
				TO_KHOI_ID
525
			)
526
			VALUES
527
			(   @l_REQ_TRANSFER_ID,        -- REQ_TRANSFER_ID - varchar(15)
528
			    @l_REQ_ID,        -- REQ_DOC_ID - varchar(15)
529
			    @FR_PLAN_ID,        -- FR_PLAN_ID - varchar(15)
530
			    @FR_TRADE_ID,        -- FR_TRADE_ID - varchar(15)
531
			    @FR_GOOD_ID,        -- FR_GOOD_ID - varchar(15)
532
			    @FR_BRN_ID,        -- FR_BRN_ID - varchar(15)
533
			    @TO_BRN_ID,        -- TO_BRN_ID - varchar(15)
534
			    @TO_PLAN_ID,        -- TO_PLAN_ID - varchar(15)
535
			    @TO_TRADE_ID,        -- TO_TRADE_ID - varchar(15)
536
			    @TO_GOOD_ID,        -- TO_GOOD_ID - varchar(15)
537
			    @QTY,      -- QTY - decimal(18, 0)
538
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
539
			    @NOTES,       -- NOTES - nvarchar(500)
540
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
541
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
542
			     CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
543
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
544
			    CAST(@p_APPROVE_DT AS DATE),
545
				@FR_DEP_ID,
546
				@TO_DEP_ID,
547
				@FR_DVDM_ID,
548
				@TO_DVDM_ID,
549
				@FR_KHOI_ID,
550
				@TO_KHOI_ID  -- APPROVE_DT - datetime
551
			    )
552
			
553
			
554
			IF @@ERROR <> 0 GOTO ABORT1
555
		-- next Group_Id
556
			FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
557
		@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
558
		END
559
		CLOSE ListTransfers
560
		DEALLOCATE ListTransfers
561

    
562
			IF @@Error <> 0 GOTO ABORT
563
		--Insert into TABLE PL_REQUEST_DOC_DT
564
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
565
		DECLARE ListCostCenters  CURSOR FOR
566
		SELECT *
567
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
568
		WITH 
569
		(
570
			COST_ID	varchar(15),	
571
			NOTES	nvarchar(1000)
572
		
573
		)
574
		OPEN ListCostCenters
575

    
576
		Declare 
577
		@COST_ID	varchar(15)
578

    
579

    
580
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
581
		WHILE @@FETCH_STATUS = 0	
582
		BEGIN
583
			
584
			DECLARE @l_REQ_COST_ID VARCHAR(15)
585
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_COSTCENTER', @l_REQ_COST_ID out
586
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
587
	
588
			INSERT INTO dbo.PL_REQUEST_COSTCENTER
589
			(
590
			    REQ_COST_ID,
591
			    COST_ID,
592
			    REQ_ID,
593
			    NOTES,
594
			    AUTH_STATUS,
595
			    MAKER_ID,
596
			    CREATE_DT,
597
			    CHECKER_ID,
598
			    APPROVE_DT
599
			)
600
			VALUES
601
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
602
			    @COST_ID,        -- COST_ID - varchar(15)
603
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
604
			    @NOTES,       -- NOTES - nvarchar(500)
605
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
606
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
607
			      CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
608
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
609
			        CAST(@p_APPROVE_DT AS DATE)  -- APPROVE_DT - datetime
610
			 )
611
			
612
			
613
			IF @@ERROR <> 0 GOTO ABORT1
614
		-- next Group_Id
615
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
616
		END
617
		CLOSE ListCostCenters
618
		DEALLOCATE ListCostCenters
619

    
620
	
621

    
622

    
623
		
624
COMMIT TRANSACTION
625
SELECT '0' as Result, @l_REQ_ID  REQ_ID, @p_REQ_CODE ErrorDesc
626
RETURN '0'
627
ABORT:
628
BEGIN
629
		ROLLBACK TRANSACTION
630
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
631
		RETURN '-1'
632
End
633
ABORT1:
634
BEGIN
635
		CLOSE ListGoods
636
		DEALLOCATE ListGoods
637
		CLOSE ListCostCenters
638
		DEALLOCATE ListCostCenters
639
		CLOSE ListCostCenters
640
		DEALLOCATE ListCostCenters
641
		ROLLBACK TRANSACTION
642
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
643
		RETURN '-1'
644
End
645

    
646

    
647

    
648
3
649
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_Upd]
650
@p_REQ_ID VARCHAR(15)=NULL,
651
@p_REQ_CODE	nvarchar(100)  = NULL,
652
@p_REQ_NAME	nvarchar(200)  = NULL,
653
@p_REQ_DT	DATETIME = NULL,
654
@p_REQ_TYPE	int = NULL,
655
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
656
@p_REQ_REASON NVARCHAR(500)=NULL,
657
@p_TOTAL_AMT	decimal = NULL,
658
@p_NOTES	nvarchar(1000)  = NULL,
659
@p_RECORD_STATUS	varchar(1)  = NULL,
660
@p_MAKER_ID	varchar(20)  = NULL,
661
@p_CREATE_DT	DATETIME = NULL,
662
@p_AUTH_STATUS	varchar(50)  = NULL,
663
@p_CHECKER_ID	varchar(20)  = NULL,
664
@p_APPROVE_DT	DATETIME = NULL,
665
@p_BRANCH_ID VARCHAR(15)=NULL,
666
@p_DVDM_ID VARCHAR(20) = NULL,
667
@p_REQ_PARENT_ID VARCHAR(20) = NULL,
668
@p_BRANCH_FEE NVARCHAR(500) = NULL,
669
@p_DEP_ID VARCHAR(20)=NULL,
670
@p_DEP_FEE_ID VARCHAR(20)= NULL,
671
@p_IS_BACKDAY BIT= NULL,
672
@p_REQ_LINE VARCHAR(20),
673
@p_SIGN_USER VARCHAR(20) = NULL,
674
@p_ListGood XML,
675
@p_ListCostCenter XML,
676
@p_ListTransfer XML
677
AS
678
SET @p_CREATE_DT =CAST(@p_CREATE_DT AS DATE)
679
SET @p_APPROVE_DT=CAST(@p_APPROVE_DT AS DATE)
680
SET @p_REQ_DT = CAST(@p_REQ_DT AS DATE)
681

    
682
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
683
	BEGIN
684
		SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã tờ trình chủ trương bắt buộc nhập' ErrorDesc 
685
		RETURN '-1'
686
	END
687

    
688

    
689
	IF EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
690
	BEGIN
691
		SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
692
		RETURN '-1'
693
	END
694
	DECLARE @sErrorCode VARCHAR(20)
695
		
696
  BEGIN TRANSACTION
697
		
698

    
699
		UPDATE dbo.PL_REQUEST_DOC 
700
		SET REQ_CODE=@p_REQ_CODE,REQ_NAME=@p_REQ_NAME,REQ_DT=@p_REQ_DT,REQ_TYPE=@p_REQ_TYPE,REQ_CONTENT=@p_REQ_CONTENT,REQ_REASON=@p_REQ_REASON,RECORD_STATUS=@p_RECORD_STATUS
701
		,BRANCH_ID=@p_BRANCH_ID,TOTAL_AMT=@p_TOTAL_AMT,NOTES=@p_NOTES,MAKER_ID=@p_MAKER_ID,CREATE_DT=@p_CREATE_DT,CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT,AUTH_STATUS=@p_AUTH_STATUS,DVDM_APP_ID=@p_DVDM_ID
702
		,REQ_PARENT_ID=@p_REQ_PARENT_ID,BRANCH_FEE=@p_BRANCH_FEE,IS_BACKDAY=@p_IS_BACKDAY,DEP_ID=@p_DEP_ID,DEP_FEE=@p_DEP_FEE_ID,REQ_LINE=@p_REQ_LINE,SIGN_USER = @p_SIGN_USER
703
		WHERE REQ_ID=@p_REQ_ID
704
		DELETE FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID
705
		DELETE FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
706
		DELETE FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
707

    
708
		
709
		IF @@Error <> 0 GOTO ABORT
710
		--Insert into TABLE PL_REQUEST_DOC_DT
711
	DECLARE @TABLE TABLE(
712
			PLAN_ID	varchar(15)  ,
713
			TRADE_ID	varchar(15)  ,
714
			GOODS_ID	varchar(15)  ,
715
			[DESCRIPTION] nvarchar(500),
716
			UNIT_ID	varchar(15)  ,
717
			QUANTITY	decimal(18,0)  ,
718
			PRICE	decimal(18,2)  ,
719
			TOTAL_AMT	decimal(18,2),	
720
			NOTES	nvarchar(1000),
721
			REQDT_TYPE VARCHAR(1),
722
			NAME NVARCHAR(500),
723
			DVDM_ID VARCHAR(20),
724
			HH_ID VARCHAR(20),
725
			CURRENCY	nvarchar(50),
726
			EXCHANGE_RATE	decimal(18,2),
727
			TAXES	decimal(18, 2),
728
			SUP_ID VARCHAR(20),
729
			TRADE_TYPE VARCHAR(20),
730
			KHOI_ID VARCHAR(20),
731
			UNIT_NAME NVARCHAR(200)
732
		)
733
	
734

    
735
		--Insert into TABLE PL_REQUEST_DOC_DT
736
		Declare @hdoc INT
737
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
738
		INSERT INTO @TABLE
739
		SELECT PLAN_ID,
740
               TRADE_ID,
741
               GOODS_ID,
742
               DESCRIPTION,
743
               UNIT_ID,
744
               QUANTITY,
745
               PRICE,
746
               TOTAL_AMT,
747
               NOTES,
748
               REQDT_TYPE,
749
               NAME,
750
               DVDM_ID,
751
               HH_ID,
752
               CURRENCY,
753
               EXCHANGE_RATE,
754
               TAXES,
755
               SUP_ID,
756
               TRADE_TYPE,
757
			   KHOI_ID,UNIT_NAME
758
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
759
		WITH 
760
		(
761
			PLAN_ID	varchar(15)  ,
762
			TRADE_ID	varchar(15)  ,
763
			GOODS_ID	varchar(15)  ,
764
			[DESCRIPTION] nvarchar(500),
765
			UNIT_ID	varchar(15)  ,
766
			QUANTITY	decimal(18,0)  ,
767
			PRICE	decimal(18,2)  ,
768
			TOTAL_AMT	decimal(18,2),	
769
			NOTES	nvarchar(1000),
770
			REQDT_TYPE VARCHAR(1),
771
			NAME NVARCHAR(500),
772
			DVDM_ID VARCHAR(20),
773
			HH_ID VARCHAR(20),
774
			CURRENCY	nvarchar(50),
775
			EXCHANGE_RATE	decimal(18,2),
776
			TAXES	decimal(18, 2),
777
			SUP_ID VARCHAR(20),
778
			TRADE_TYPE VARCHAR(20),
779
			KHOI_ID VARCHAR(20),
780
			UNIT_NAME NVARCHAR(200)
781
		)
782

    
783

    
784
	
785

    
786
		DECLARE @TABLE_TRANSFER TABLE (
787
			FR_PLAN_ID	varchar(15),
788
			FR_TRADE_ID	varchar(15),
789
			FR_GOOD_ID	varchar(15),
790
			FR_BRN_ID	varchar(15),
791
			TO_BRN_ID	varchar(15),
792
			TO_PLAN_ID	varchar(15),
793
			TO_TRADE_ID	varchar(15),	
794
			TO_GOOD_ID	varchar(15),	
795
			QTY  DECIMAL(18,0),
796
			TOTAL_AMT	decimal(18),	
797
			NOTES	nvarchar(1000),
798
			FR_DEP_ID VARCHAR(20),
799
			TO_DEP_ID VARCHAR(20),
800
			FR_DVDM_ID VARCHAR(20),
801
			TO_DVDM_ID VARCHAR(20),
802
			FR_KHOI_ID VARCHAR(20),
803
			TO_KHOI_ID VARCHAR(20),
804
			FR_GD_TYPE VARCHAR(20),
805
			TO_GD_TYPE VARCHAR(20)
806
		)
807
		Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
808
		INSERT INTO @TABLE_TRANSFER
809
		SELECT FR_PLAN_ID,
810
               FR_TRADE_ID,
811
               FR_GOOD_ID,
812
               FR_BRN_ID,
813
               TO_BRN_ID,
814
               TO_PLAN_ID,
815
               TO_TRADE_ID,
816
               TO_GOOD_ID,
817
               QTY,
818
               TOTAL_AMT,
819
               NOTES,
820
               FR_DEP_ID,
821
               TO_DEP_ID,
822
               FR_DVDM_ID,
823
               TO_DVDM_ID,
824
               FR_KHOI_ID,
825
               TO_KHOI_ID,
826
               FR_GD_TYPE,
827
               TO_GD_TYPE 
828
		FROM OPENXML(@hdoc,'/Root/ListTransfer',2)
829
		WITH 
830
		(
831
			FR_PLAN_ID	varchar(15),
832
			FR_TRADE_ID	varchar(15),
833
			FR_GOOD_ID	varchar(15),
834
			FR_BRN_ID	varchar(15),
835
			TO_BRN_ID	varchar(15),
836
			TO_PLAN_ID	varchar(15),
837
			TO_TRADE_ID	varchar(15),	
838
			TO_GOOD_ID	varchar(15),	
839
			QTY  DECIMAL(18,0),
840
			TOTAL_AMT	decimal(18),	
841
			NOTES	nvarchar(1000),
842
			FR_DEP_ID VARCHAR(20),
843
			TO_DEP_ID VARCHAR(20),
844
			FR_DVDM_ID VARCHAR(20),
845
			TO_DVDM_ID VARCHAR(20),
846
			FR_KHOI_ID VARCHAR(20),
847
			TO_KHOI_ID VARCHAR(20),
848
			FR_GD_TYPE VARCHAR(20),
849
			TO_GD_TYPE VARCHAR(20)
850
		
851
		)
852
		WHERE FR_BRN_ID !='' AND FR_BRN_ID IS NOT NULL
853

    
854
			
855

    
856

    
857

    
858
		DECLARE ListGoods  CURSOR FOR
859
		SELECT PLAN_ID,
860
               TRADE_ID,
861
               GOODS_ID,
862
               DESCRIPTION,
863
               UNIT_ID,
864
               QUANTITY,
865
               PRICE,
866
               TOTAL_AMT,
867
               NOTES,
868
               REQDT_TYPE,
869
               NAME,
870
               DVDM_ID,
871
               HH_ID,
872
               CURRENCY,
873
               EXCHANGE_RATE,
874
               TAXES,
875
               SUP_ID,
876
               TRADE_TYPE,KHOI_ID,UNIT_NAME FROM @TABLE
877

    
878
		OPEN ListGoods
879

    
880
		Declare 
881
		@PLAN_ID	varchar(15),
882
		@TRADE_ID	varchar(15),
883
		@GOODS_ID	varchar(15),
884
		@DESCRIPTION nvarchar(500),
885
		@UNIT_ID	varchar(15),
886
		@QUANTITY	decimal(18),
887
		@PRICE	decimal(18,2),
888
		@TOTAL_AMT	decimal(18,2),		
889
		@NOTES	nvarchar(1000),
890
		@REQDT_TYPE VARCHAR(1),
891
		@NAME NVARCHAR(500),
892
		@DVDM_ID VARCHAR(20),
893
		@HH_ID VARCHAR(20),
894
		@CURRENCY	nvarchar(50),
895
		@EXCHANGE_RATE	decimal(18, 2),
896
		@TAXES	decimal(18, 2),
897
		@SUP_ID VARCHAR(20),
898
		@TRADE_TYPE VARCHAR(20),
899
		@KHOI_ID VARCHAR(20),
900
		@UNIT_NAME NVARCHAR(200)
901

    
902
		FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
903
		@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
904
		WHILE @@FETCH_STATUS = 0	
905
		BEGIN
906
			
907

    
908

    
909

    
910
			DECLARE @l_REQDT_ID VARCHAR(15)
911
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
912
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
913
			
914
		
915
			SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + @TAXES
916

    
917
			INSERT INTO dbo.PL_REQUEST_DOC_DT
918
			(
919
			    REQDT_ID,
920
			    REQ_ID,
921
			    PLAN_ID,
922
			    TRADE_ID,
923
			    GOODS_ID,
924
			    NAME,
925
			    DESCRIPTION,
926
			    REQDT_TYPE,
927
			    UNIT_ID,
928
			    QUANTITY,
929
			    PRICE,
930
			    TOTAL_AMT,
931
			    RECORD_STATUS,
932
			    MAKER_ID,
933
			    CREATE_DT,
934
			    AUTH_STATUS,
935
			    CHECKER_ID,
936
			    APPROVE_DT,
937
				DVDM_ID,
938
				HANGHOA_ID,
939
				CURRENCY,
940
				EXCHANGE_RATE,
941
				TAXES,SUP_ID,TRADE_TYPE,KHOI_ID,UNIT_NAME
942
			)
943
			VALUES
944
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
945
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
946
			    @PLAN_ID,        -- PLAN_ID - varchar(15)
947
			    @TRADE_ID,        -- TRADE_ID - varchar(15)
948
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
949
			    @NAME,       -- NAME - nvarchar(200)
950
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
951
			    @REQDT_TYPE,        -- REQDT_TYPE - varchar(1)
952
			    @UNIT_ID,        -- UNIT_ID - varchar(15)
953
			    @QUANTITY,      -- QUANTITY - decimal(18, 0)
954
			    @PRICE,      -- PRICE - decimal(18, 0)
955
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
956
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
957
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
958
			     CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
959
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
960
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
961
			     CAST(@P_APPROVE_DT AS DATE),   -- APPROVE_DT - datetime
962
			    @DVDM_ID,
963
				@HH_ID,
964
				@CURRENCY,
965
				@EXCHANGE_RATE,
966
				@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
967
				)
968
			
969
			
970
			IF @@ERROR <> 0 GOTO ABORT1
971
		-- next Group_Id
972
			FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
973
		@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
974
		END
975
		CLOSE ListGoods
976
		DEALLOCATE ListGoods
977

    
978

    
979
			IF @@Error <> 0 GOTO ABORT
980
		--Insert into TABLE PL_REQUEST_DOC_DT
981
		UPDATE dbo.PL_REQUEST_DOC SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) WHERE PL_REQUEST_DOC.REQ_ID=@p_REQ_ID
982
		
983

    
984

    
985
		DECLARE ListTransfers  CURSOR FOR
986
		SELECT *
987
		FROM @TABLE_TRANSFER
988
		OPEN ListTransfers
989

    
990
		Declare 
991
		@FR_PLAN_ID	varchar(15),
992
		@FR_TRADE_ID	varchar(15),
993
		@FR_GOOD_ID	varchar(15),
994
		@FR_BRN_ID	varchar(15),
995
		@TO_BRN_ID	varchar(15),
996
		@TO_PLAN_ID	varchar(15),
997
		@TO_TRADE_ID	varchar(15),	
998
		@TO_GOOD_ID	varchar(15),	
999
		@QTY  DECIMAL(18,0),
1000
		@FR_DEP_ID VARCHAR(20),
1001
			@TO_DEP_ID VARCHAR(20),
1002
			@FR_DVDM_ID VARCHAR(20),
1003
			@TO_DVDM_ID VARCHAR(20),
1004
			@FR_KHOI_ID VARCHAR(20),
1005
			@TO_KHOI_ID VARCHAR(20),
1006
			@FR_GD_TYPE VARCHAR(20),
1007
			@TO_GD_TYPE VARCHAR(20)
1008

    
1009
		FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
1010
		@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
1011
		WHILE @@FETCH_STATUS = 0	
1012
		BEGIN
1013
		
1014
			
1015
			DECLARE @l_REQ_TRANSFER_ID VARCHAR(15)
1016
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_TRANSFER', @l_REQ_TRANSFER_ID out
1017
			IF @l_REQ_TRANSFER_ID='' OR @l_REQ_TRANSFER_ID IS NULL GOTO ABORT
1018
	
1019
			INSERT INTO dbo.PL_REQUEST_TRANSFER
1020
			(
1021
			    REQ_TRANSFER_ID,
1022
			    REQ_DOC_ID,
1023
			    FR_PLAN_ID,
1024
			    FR_TRADE_ID,
1025
			    FR_GOOD_ID,
1026
			    FR_BRN_ID,
1027
			    TO_BRN_ID,
1028
			    TO_PLAN_ID,
1029
			    TO_TRADE_ID,
1030
			    TO_GOOD_ID,
1031
			    QTY,
1032
			    TOTAL_AMT,
1033
			    NOTES,
1034
			    AUTH_STATUS,
1035
			    MAKER_ID,
1036
			    CREATE_DT,
1037
			    CHECKER_ID,
1038
			    APPROVE_DT,
1039
				FR_DEP_ID,
1040
				TO_DEP_ID,
1041
				FR_DVDM_ID,
1042
				TO_DVDM_ID,
1043
				FR_KHOI_ID,
1044
				TO_KHOI_ID
1045
			)
1046
			VALUES
1047
			(   @l_REQ_TRANSFER_ID,        -- REQ_TRANSFER_ID - varchar(15)
1048
				@p_REQ_ID,        -- REQ_DOC_ID - varchar(15)
1049
			    @FR_PLAN_ID,        -- FR_PLAN_ID - varchar(15)
1050
			    @FR_TRADE_ID,        -- FR_TRADE_ID - varchar(15)
1051
			    @FR_GOOD_ID,        -- FR_GOOD_ID - varchar(15)
1052
			    @FR_BRN_ID,        -- FR_BRN_ID - varchar(15)
1053
			    @TO_BRN_ID,        -- TO_BRN_ID - varchar(15)
1054
			    @TO_PLAN_ID,        -- TO_PLAN_ID - varchar(15)
1055
			    @TO_TRADE_ID,        -- TO_TRADE_ID - varchar(15)
1056
			    @TO_GOOD_ID,        -- TO_GOOD_ID - varchar(15)
1057
			    @QTY,      -- QTY - decimal(18, 0)
1058
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
1059
			    @NOTES,       -- NOTES - nvarchar(500)
1060
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
1061
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
1062
			     CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
1063
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
1064
			    CAST(@p_APPROVE_DT AS DATE),
1065
				@FR_DEP_ID,
1066
				@TO_DEP_ID,
1067
				@FR_DVDM_ID,
1068
				@TO_DVDM_ID,
1069
				@FR_KHOI_ID,
1070
				@TO_KHOI_ID  -- APPROVE_DT - datetime
1071
			    )
1072
			
1073
			
1074
			IF @@ERROR <> 0 GOTO ABORT1
1075
		-- next Group_Id
1076
			FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
1077
		@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
1078
		END
1079
		CLOSE ListTransfers
1080
		DEALLOCATE ListTransfers
1081

    
1082
			IF @@Error <> 0 GOTO ABORT
1083
		--Insert into TABLE PL_REQUEST_DOC_DT
1084
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
1085
		DECLARE ListCostCenters  CURSOR FOR
1086
		SELECT *
1087
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
1088
		WITH 
1089
		(
1090
			COST_ID	varchar(15),	
1091
			NOTES	nvarchar(1000)
1092
		
1093
		)
1094
		OPEN ListCostCenters
1095

    
1096
		Declare 
1097
		@COST_ID	varchar(15)
1098

    
1099

    
1100
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
1101
		WHILE @@FETCH_STATUS = 0	
1102
		BEGIN
1103
			
1104
			DECLARE @l_REQ_COST_ID VARCHAR(15)
1105
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_COSTCENTER', @l_REQ_COST_ID out
1106
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
1107
	
1108
			INSERT INTO dbo.PL_REQUEST_COSTCENTER
1109
			(
1110
			    REQ_COST_ID,
1111
			    COST_ID,
1112
			    REQ_ID,
1113
			    NOTES,
1114
			    AUTH_STATUS,
1115
			    MAKER_ID,
1116
			    CREATE_DT,
1117
			    CHECKER_ID,
1118
			    APPROVE_DT
1119
			)
1120
			VALUES
1121
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
1122
			    @COST_ID,        -- COST_ID - varchar(15)
1123
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
1124
			    @NOTES,       -- NOTES - nvarchar(500)
1125
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
1126
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
1127
			      CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
1128
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
1129
			        CAST(@p_APPROVE_DT AS DATE)  -- APPROVE_DT - datetime
1130
			 )
1131
			
1132
			
1133
			IF @@ERROR <> 0 GOTO ABORT1
1134
		-- next Group_Id
1135
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
1136
		END
1137
		CLOSE ListCostCenters
1138
		DEALLOCATE ListCostCenters
1139

    
1140

    
1141

    
1142

    
1143
		
1144
COMMIT TRANSACTION
1145
SELECT '0' as Result, @p_REQ_ID  REQ_ID, '' ErrorDesc
1146
RETURN '0'
1147
ABORT:
1148
BEGIN
1149
		ROLLBACK TRANSACTION
1150
		SELECT '-1' AS Result, ''  REQ_ID, '' ErrorDesc
1151
		RETURN '-1'
1152
End
1153
ABORT1:
1154
BEGIN
1155
		CLOSE ListGoods
1156
		DEALLOCATE ListGoods
1157
		CLOSE ListCostCenters
1158
		DEALLOCATE ListCostCenters
1159
		CLOSE ListCostCenters
1160
		DEALLOCATE ListCostCenters
1161
		ROLLBACK TRANSACTION
1162
		SELECT '-1' AS Result, ''  REQ_ID, '' ErrorDesc
1163
		RETURN '-1'
1164
End
1165

    
1166