Project

General

Profile

PL_REQUEST_DOC_Upd.txt

Luc Tran Van, 11/08/2022 03:09 PM

 
1
ALTER PROCEDURE dbo.PL_REQUEST_DOC_Upd
2
@p_REQ_ID VARCHAR(15)=NULL,
3
@p_REQ_CODE	nvarchar(100)  = NULL,
4
@p_REQ_NAME	nvarchar(200)  = NULL,
5
@p_REQ_DT	NVARCHAR(20) = NULL,
6
@p_REQ_TYPE	int = NULL,
7
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
8
@p_REQ_REASON NVARCHAR(500)=NULL,
9
@p_TOTAL_AMT	decimal = NULL,
10
@p_NOTES	nvarchar(1000)  = NULL,
11
@p_RECORD_STATUS	varchar(1)  = NULL,
12
@p_MAKER_ID	varchar(20)  = NULL,
13
@p_CREATE_DT	NVARCHAR(20) = NULL,
14
@p_AUTH_STATUS	varchar(50)  = NULL,
15
@p_CHECKER_ID	varchar(20)  = NULL,
16
@p_APPROVE_DT	NVARCHAR(20) = NULL,
17
@p_BRANCH_ID VARCHAR(15)=NULL,
18
@p_DVDM_ID VARCHAR(20) = NULL,
19
@p_REQ_PARENT_ID VARCHAR(20) = NULL,
20
@p_BRANCH_FEE NVARCHAR(500) = NULL,
21
@p_DEP_ID VARCHAR(20)=NULL,
22
@p_DEP_FEE_ID VARCHAR(20)= NULL,
23
@p_IS_BACKDAY BIT= NULL,
24
@p_REQ_LINE VARCHAR(20),
25
@p_SIGN_USER VARCHAR(20) = NULL,
26
@p_IS_CHECKALL BIT = NULL,
27
@p_BASED_CONTENT NVARCHAR(3000) = NULL,
28
@p_PL_BASED_ID VARCHAR(15)= NULL,
29
---------BAODNQ 23/6/2022: THÊM THAM SỐ PROCESS_ID----
30
@p_PROCESS_ID VARCHAR(10) = NULL,
31
@p_CREATOR_NOTES NVARCHAR(1000)  = NULL,
32
@p_ListGood XML,
33
@p_ListCostCenter XML,
34
@p_ListTransfer XML,
35
@p_ListAttachFile XML
36

    
37
AS
38
DECLARE @TEMP TABLE
39
			(
40
				[KEY] varchar(15),
41
				[REF_ID] varchar(15),
42
				[TYPE] varchar(50)
43
			)
44
SET @p_CREATE_DT =convert(datetime,@p_CREATE_DT,103)
45
SET @p_APPROVE_DT=convert(datetime,@p_APPROVE_DT,103)
46
SET @p_REQ_DT = convert(datetime,@p_REQ_DT,103)
47
  
48
  IF(NOT EXISTS(SELECT prd.REQ_ID FROM PL_REQUEST_DOC prd WHERE prd.REQ_ID = @p_REQ_ID AND prd.AUTH_STATUS IN ('E','R')))
49
  BEGIN
50
    SELECT '-1' Result, '' REQ_ID, N'Cập nhật thất bại! Tờ trình đã được gửi phê duyệt.' ErrorDesc 
51
		RETURN '-1'
52
  END
53
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
54
	BEGIN
55
		SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã tờ trình chủ trương bắt buộc nhập' ErrorDesc 
56
		RETURN '-1'
57
	END
58
	IF EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
59
	BEGIN
60
		SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
61
		RETURN '-1'
62
	END
63
	DECLARE @sErrorCode VARCHAR(20)
64
		
65
  BEGIN TRANSACTION
66
		
67
		DECLARE @BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
68

    
69
		SET  @BRANCH_CREATE= (SELECT TLSUBBRID  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
70
		SET @DEP_CREATE=(SELECT SECUR_CODE  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
71
		
72
		IF(EXISTS(SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS') 
73
			OR EXISTS(SELECT DEP_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_CREATE AND DEP_CODE LIKE '069%'))		
74
			SET @DEP_CREATE=(SELECT SECUR_CODE  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
75
		ELSE
76
			SET @DEP_CREATE=''
77
		
78

    
79
		SET @p_DEP_ID=@DEP_CREATE
80
		SET @p_BRANCH_ID=@BRANCH_CREATE
81

    
82

    
83
		IF(convert(datetime,@p_REQ_DT,103) < CAST(GETDATE() AS DATE))
84
			SET @p_IS_BACKDAY=1;
85
		ELSE
86
			SET  @p_IS_BACKDAY=0
87

    
88
		UPDATE dbo.PL_REQUEST_DOC 
89
		SET REQ_CODE=@p_REQ_CODE,REQ_NAME=@p_REQ_NAME,REQ_TYPE=@p_REQ_TYPE,REQ_CONTENT=@p_REQ_CONTENT,REQ_REASON=@p_REQ_REASON,RECORD_STATUS=@p_RECORD_STATUS
90
		,BRANCH_ID=@p_BRANCH_ID,TOTAL_AMT=@p_TOTAL_AMT,NOTES=@p_NOTES,MAKER_ID=@p_MAKER_ID,CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT,AUTH_STATUS=@p_AUTH_STATUS,DVDM_APP_ID=@p_DVDM_ID
91
		,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,IS_CHECKALL=@p_IS_CHECKALL,BASED_CONTENT=@p_BASED_CONTENT,
92
		PL_BASED_ID =@p_PL_BASED_ID,CREATOR_NOTES = @p_CREATOR_NOTES,
93
		------------BAODNQ 23/6/2022 : SET THÊM GIÁ TRỊ PROCESS_ID---------
94
		PROCESS_ID = @p_PROCESS_ID
95
		WHERE REQ_ID=@p_REQ_ID
96

    
97
		----
98
		--- INSERT DATA CU VAO LOG : 14.10.2022. LUCTV
99
		INSERT INTO dbo.PL_REQUEST_DOC_DT_HIST SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID
100
		INSERT INTO dbo.PL_REQUEST_TRANSFER_HIST SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
101
		INSERT INTO dbo.PL_PROCESS
102
					(
103
					    REQ_ID,
104
					    PROCESS_ID,
105
					    CHECKER_ID,
106
					    APPROVE_DT,
107
					    PROCESS_DESC,
108
					    NOTES
109
					)
110
					VALUES
111
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
112
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
113
						'UPD',
114
					    @p_MAKER_ID,        -- CHECKER_ID - varchar(15)
115
					    GETDATE(), -- APPROVE_DT - datetime
116
					    N'Nhân viên cập nhật tờ trình' ,       -- PROCESS_DESC - nvarchar(1000)
117
					    N'Nhân viên cập nhật tờ trình thành công'        -- NOTES - nvarchar(1000)
118
					 )
119
		----
120

    
121
		DELETE FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID
122
		DELETE FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
123
		DELETE FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
124

    
125
		
126
		IF @@Error <> 0 GOTO ABORT
127
		--Insert into TABLE PL_REQUEST_DOC_DT
128
			DECLARE @TABLE TABLE(
129
			PLAN_ID	varchar(15)  ,
130
			TRADE_ID	varchar(15)  ,
131
			GOODS_ID	varchar(15)  ,
132
			[DESCRIPTION] nvarchar(4000),
133
			UNIT_ID	varchar(15)  ,
134
			QUANTITY	decimal(18,0)  ,
135
			PRICE	decimal(18,2)  ,
136
			TOTAL_AMT	decimal(18,2),	
137
			NOTES	nvarchar(4000),
138
			REQDT_TYPE VARCHAR(1),
139
			NAME NVARCHAR(500),
140
			DVDM_ID VARCHAR(20),
141
			HH_ID VARCHAR(20),
142
			CURRENCY	nvarchar(50),
143
			EXCHANGE_RATE	decimal(18,2),
144
			TAXES	decimal(18, 2),
145
			SUP_ID VARCHAR(20),
146
			TRADE_TYPE VARCHAR(20),
147
			KHOI_ID VARCHAR(20),
148
			UNIT_NAME NVARCHAR(200), SUP_NAME NVARCHAR(250)
149
		)
150
		--Insert into TABLE PL_REQUEST_DOC_DT
151
		Declare @hdoc INT
152
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
153
		INSERT INTO @TABLE
154
		SELECT PLAN_ID,
155
               TRADE_ID,
156
               GOODS_ID,
157
               DESCRIPTION,
158
               UNIT_ID,
159
               QUANTITY,
160
               PRICE,
161
               TOTAL_AMT,
162
               NOTES,
163
               REQDT_TYPE,
164
               NAME,
165
               DVDM_ID,
166
               HH_ID,
167
               CURRENCY,
168
               EXCHANGE_RATE,
169
               TAXES,
170
               SUP_ID,
171
               TRADE_TYPE,
172
			   KHOI_ID,UNIT_NAME, SUP_NAME
173
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
174
		WITH 
175
		(
176
			PLAN_ID	varchar(15)  ,
177
			TRADE_ID	varchar(15)  ,
178
			GOODS_ID	varchar(15)  ,
179
			[DESCRIPTION] nvarchar(4000),
180
			UNIT_ID	varchar(15)  ,
181
			QUANTITY	decimal(18,0)  ,
182
			PRICE	decimal(18,2)  ,
183
			TOTAL_AMT	decimal(18,2),	
184
			NOTES	nvarchar(4000),
185
			REQDT_TYPE VARCHAR(1),
186
			NAME NVARCHAR(4000),
187
			DVDM_ID VARCHAR(20),
188
			HH_ID VARCHAR(20),
189
			CURRENCY	nvarchar(50),
190
			EXCHANGE_RATE	decimal(18,2),
191
			TAXES	decimal(18, 2),
192
			SUP_ID VARCHAR(20),
193
			TRADE_TYPE VARCHAR(20),
194
			KHOI_ID VARCHAR(20),
195
			UNIT_NAME NVARCHAR(200),
196
			SUP_NAME NVARCHAR(200)
197
		)
198

    
199

    
200
	
201

    
202
		DECLARE @TABLE_TRANSFER TABLE (
203
			FR_PLAN_ID	varchar(15),
204
			FR_TRADE_ID	varchar(15),
205
			FR_GOOD_ID	varchar(15),
206
			FR_BRN_ID	varchar(15),
207
			TO_BRN_ID	varchar(15),
208
			TO_PLAN_ID	varchar(15),
209
			TO_TRADE_ID	varchar(15),	
210
			TO_GOOD_ID	varchar(15),	
211
			QTY  DECIMAL(18,0),
212
			TOTAL_AMT	decimal(18),	
213
			NOTES	nvarchar(1000),
214
			FR_DEP_ID VARCHAR(20),
215
			TO_DEP_ID VARCHAR(20),
216
			FR_DVDM_ID VARCHAR(20),
217
			TO_DVDM_ID VARCHAR(20),
218
			FR_KHOI_ID VARCHAR(20),
219
			TO_KHOI_ID VARCHAR(20),
220
			FR_GD_TYPE VARCHAR(20),
221
			TO_GD_TYPE VARCHAR(20),
222
			FR_AMT_APP decimal(18),
223
      TO_AMT_APP decimal(18),
224
      FR_AMT_TF DECIMAL(18),
225
      TO_AMT_TF DECIMAL(18),
226
      FR_AMT_RECEIVE_TF DECIMAL(18),
227
      TO_AMT_RECEIVE_TF DECIMAL(18),
228
      FR_AMT_EXE DECIMAL(18),
229
      TO_AMT_EXE DECIMAL(18),
230
      FR_AMT_ETM DECIMAL(18),
231
      TO_AMT_ETM DECIMAL(18),
232
      FR_AMT_ETM_TMP decimal(18),	
233
  		TO_AMT_ETM_TMP decimal(18)	
234
		)
235
		Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
236
		INSERT INTO @TABLE_TRANSFER
237
		SELECT FR_PLAN_ID,
238
           FR_TRADE_ID,
239
           FR_GOOD_ID,
240
           FR_BRN_ID,
241
           TO_BRN_ID,
242
           TO_PLAN_ID,
243
           TO_TRADE_ID,
244
           TO_GOOD_ID,
245
           QTY,
246
           TOTAL_AMT,
247
           NOTES,
248
           FR_DEP_ID,
249
           TO_DEP_ID,
250
           FR_DVDM_ID,
251
           TO_DVDM_ID,
252
           FR_KHOI_ID,
253
           TO_KHOI_ID,
254
           FR_GD_TYPE,
255
           TO_GD_TYPE,
256
          FR_AMT_APP,
257
          TO_AMT_APP,
258
          FR_AMT_TF,
259
          TO_AMT_TF,
260
          FR_AMT_RECEIVE_TF,
261
          TO_AMT_RECEIVE_TF,
262
          FR_AMT_EXE,
263
          TO_AMT_EXE,
264
          FR_AMT_ETM,
265
          TO_AMT_ETM,
266
          FR_AMT_ETM_TMP,	
267
      		TO_AMT_ETM_TMP
268
		FROM OPENXML(@hdoc,'/Root/ListTransfer',2)
269
		WITH 
270
		(
271
			FR_PLAN_ID	varchar(15),
272
			FR_TRADE_ID	varchar(15),
273
			FR_GOOD_ID	varchar(15),
274
			FR_BRN_ID	varchar(15),
275
			TO_BRN_ID	varchar(15),
276
			TO_PLAN_ID	varchar(15),
277
			TO_TRADE_ID	varchar(15),	
278
			TO_GOOD_ID	varchar(15),	
279
			QTY  DECIMAL(18,0),
280
			TOTAL_AMT	decimal(18),	
281
			NOTES	nvarchar(1000),
282
			FR_DEP_ID VARCHAR(20),
283
			TO_DEP_ID VARCHAR(20),
284
			FR_DVDM_ID VARCHAR(20),
285
			TO_DVDM_ID VARCHAR(20),
286
			FR_KHOI_ID VARCHAR(20),
287
			TO_KHOI_ID VARCHAR(20),
288
			FR_GD_TYPE VARCHAR(20),
289
			TO_GD_TYPE VARCHAR(20),
290
			FR_AMT_APP decimal(18),
291
      TO_AMT_APP decimal(18),
292
      FR_AMT_TF DECIMAL(18),
293
      TO_AMT_TF DECIMAL(18),
294
      FR_AMT_RECEIVE_TF DECIMAL(18),
295
      TO_AMT_RECEIVE_TF DECIMAL(18),
296
      FR_AMT_EXE DECIMAL(18),
297
      TO_AMT_EXE DECIMAL(18),
298
      FR_AMT_ETM DECIMAL(18),
299
      TO_AMT_ETM DECIMAL(18),
300
      FR_AMT_ETM_TMP decimal(18),	
301
  		TO_AMT_ETM_TMP decimal(18)	
302
		
303
		)
304
		--WHERE FR_BRN_ID !='' AND FR_BRN_ID IS NOT NULL
305

    
306
			
307

    
308

    
309

    
310
		DECLARE ListGoods  CURSOR FOR
311
		SELECT PLAN_ID,
312
               TRADE_ID,
313
               GOODS_ID,
314
               DESCRIPTION,
315
               UNIT_ID,
316
               QUANTITY,+
317
               PRICE,
318
               TOTAL_AMT,
319
               NOTES,
320
               REQDT_TYPE,
321
               NAME,
322
               DVDM_ID,
323
               HH_ID,
324
               CURRENCY,
325
               EXCHANGE_RATE,
326
               TAXES,
327
               SUP_ID,
328
               TRADE_TYPE,KHOI_ID,UNIT_NAME,SUP_NAME FROM @TABLE
329

    
330
		OPEN ListGoods
331

    
332
		Declare 
333
		@PLAN_ID	varchar(15),
334
		@TRADE_ID	varchar(15),
335
		@GOODS_ID	varchar(15),
336
		@DESCRIPTION nvarchar(4000),
337
		@UNIT_ID	varchar(15),
338
		@QUANTITY	decimal(18),
339
		@PRICE	decimal(18,2),
340
		@TOTAL_AMT	decimal(18,2),		
341
		@NOTES	nvarchar(4000),
342
		@REQDT_TYPE VARCHAR(1),
343
		@NAME NVARCHAR(4000),
344
		@DVDM_ID VARCHAR(20),
345
		@HH_ID VARCHAR(20),
346
		@CURRENCY	nvarchar(50),
347
		@EXCHANGE_RATE	decimal(18, 2),
348
		@TAXES	decimal(18, 2),
349
		@SUP_ID VARCHAR(20),
350
		@TRADE_TYPE VARCHAR(20),
351
		@KHOI_ID VARCHAR(20),
352
		@UNIT_NAME NVARCHAR(200),
353
		@SUP_NAME NVARCHAR(200),
354
		@l_SUP_ID VARCHAR(15)
355
		FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
356
		@PRICE,@TOTAL_AMT,@NOTES, @REQDT_TYPE, @NAME,@DVDM_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME,@SUP_NAME
357
		WHILE @@FETCH_STATUS = 0	
358
		BEGIN	
359
			-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
360
			--IF(@TRADE_TYPE IS NOT NULL AND @TRADE_TYPE <>'' AND @TRADE_TYPE ='VCCB' AND (@SUP_ID IS NOT NULL AND @SUP_ID <>''))
361
			--BEGIN
362
			--	SELECT 'REQ-00001' Result, '' REQ_ID, N'Nếu hình thức mua sắm theo quy định VCCB thì bạn không được phép chọn nhà cung cấp. Vui lòng để trống nhà cung cấp' ErrorDesc 
363
			--	ROLLBACK TRANSACTION
364
			--	RETURN '-1'
365
			--END
366
			--- THEM NHA CUNG CAP
367
			--IF(@SUP_NAME IS NOT NULL AND @SUP_NAME <>'')
368
			--BEGIN
369
				--IF(NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME))
370
				--BEGIN
371
				--	EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
372
				--	IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
373
				--	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)
374
				--	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)
375
				--	SET @SUP_ID =@l_SUP_ID
376
				--END
377
				--ELSE
378
				--BEGIN
379
					--SET @l_SUP_ID =(SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME)
380
					--IF(@l_SUP_ID <> '' AND  @SUP_ID IS NOT NULL)
381
					--BEGIN
382
					--	SET @SUP_ID =@l_SUP_ID
383
					--END
384
				--END
385
				--END
386
				
387
			--END
388
			-------
389
			DECLARE @l_REQDT_ID VARCHAR(15)
390
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
391
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
392
			
393
		
394
			--SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + (@TAXES * @EXCHANGE_RATE)
395

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

    
455

    
456
			IF @@Error <> 0 GOTO ABORT
457
		--Insert into TABLE PL_REQUEST_DOC_DT
458
		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
459
		
460
		DECLARE ListTransfers  CURSOR FOR
461
		SELECT *
462
		FROM @TABLE_TRANSFER
463
		OPEN ListTransfers
464

    
465
		Declare 
466
		@FR_PLAN_ID	varchar(15),
467
		@FR_TRADE_ID	varchar(15),
468
		@FR_GOOD_ID	varchar(15),
469
		@FR_BRN_ID	varchar(15),
470
		@TO_BRN_ID	varchar(15),
471
		@TO_PLAN_ID	varchar(15),
472
		@TO_TRADE_ID	varchar(15),	
473
		@TO_GOOD_ID	varchar(15),	
474
		@QTY  DECIMAL(18,0),
475
		@FR_DEP_ID VARCHAR(20),
476
		@TO_DEP_ID VARCHAR(20),
477
		@FR_DVDM_ID VARCHAR(20),
478
		@TO_DVDM_ID VARCHAR(20),
479
		@FR_KHOI_ID VARCHAR(20),
480
		@TO_KHOI_ID VARCHAR(20),
481
		@FR_GD_TYPE VARCHAR(20),
482
		@TO_GD_TYPE VARCHAR(20),
483
    @FR_AMT_APP decimal(18),
484
    @TO_AMT_APP decimal(18),
485
    @FR_AMT_TF DECIMAL(18),
486
    @TO_AMT_TF DECIMAL(18),
487
    @FR_AMT_RECEIVE_TF DECIMAL(18),
488
    @TO_AMT_RECEIVE_TF DECIMAL(18),
489
    @FR_AMT_EXE DECIMAL(18),
490
    @TO_AMT_EXE DECIMAL(18),
491
    @FR_AMT_ETM DECIMAL(18),
492
    @TO_AMT_ETM DECIMAL(18),
493
    @FR_AMT_ETM_TMP decimal(18),	
494
		@TO_AMT_ETM_TMP decimal(18)	
495

    
496
		FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
497
		@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,
498
    @FR_AMT_APP,@TO_AMT_APP,@FR_AMT_TF,@TO_AMT_TF,@FR_AMT_RECEIVE_TF,@TO_AMT_RECEIVE_TF,@FR_AMT_EXE,@TO_AMT_EXE,@FR_AMT_ETM,@TO_AMT_ETM,@FR_AMT_ETM_TMP,@TO_AMT_ETM_TMP
499
		WHILE @@FETCH_STATUS = 0	
500
		BEGIN
501
		
502
			
503
			DECLARE @l_REQ_TRANSFER_ID VARCHAR(15)
504
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_TRANSFER', @l_REQ_TRANSFER_ID out
505
			IF @l_REQ_TRANSFER_ID='' OR @l_REQ_TRANSFER_ID IS NULL GOTO ABORT
506
	
507
			INSERT INTO dbo.PL_REQUEST_TRANSFER
508
			(
509
  	    REQ_TRANSFER_ID,
510
  	    REQ_DOC_ID,
511
  	    FR_PLAN_ID,
512
  	    FR_TRADE_ID,
513
  	    FR_GOOD_ID,
514
  	    FR_BRN_ID,
515
  	    TO_BRN_ID,
516
  	    TO_PLAN_ID,
517
  	    TO_TRADE_ID,
518
  	    TO_GOOD_ID,
519
  	    QTY,
520
  	    TOTAL_AMT,
521
  	    NOTES,
522
  	    AUTH_STATUS,
523
  	    MAKER_ID,
524
  	    CREATE_DT,
525
  	    CHECKER_ID,
526
  	    APPROVE_DT,
527
				FR_DEP_ID,
528
				TO_DEP_ID,
529
				FR_DVDM_ID,
530
				TO_DVDM_ID,
531
				FR_KHOI_ID,
532
				TO_KHOI_ID,
533
        FR_AMT_APP,
534
        TO_AMT_APP,
535
        FR_AMT_TF,
536
        TO_AMT_TF,
537
        FR_AMT_RECEIVE_TF,
538
        TO_AMT_RECEIVE_TF,
539
        FR_AMT_EXE,
540
        TO_AMT_EXE,
541
        FR_AMT_ETM,
542
        TO_AMT_ETM,
543
        FR_AMT_ETM_TMP,
544
        TO_AMT_ETM_TMP
545
			)
546
			VALUES
547
			(   @l_REQ_TRANSFER_ID,        -- REQ_TRANSFER_ID - varchar(15)
548
			    @p_REQ_ID,        -- REQ_DOC_ID - varchar(15)
549
			    @FR_PLAN_ID,        -- FR_PLAN_ID - varchar(15)
550
			    @FR_TRADE_ID,        -- FR_TRADE_ID - varchar(15)
551
			    @FR_GOOD_ID,        -- FR_GOOD_ID - varchar(15)
552
			    @FR_BRN_ID,        -- FR_BRN_ID - varchar(15)
553
			    @TO_BRN_ID,        -- TO_BRN_ID - varchar(15)
554
			    @TO_PLAN_ID,        -- TO_PLAN_ID - varchar(15)
555
			    @TO_TRADE_ID,        -- TO_TRADE_ID - varchar(15)
556
			    @TO_GOOD_ID,        -- TO_GOOD_ID - varchar(15)
557
			    @QTY,      -- QTY - decimal(18, 0)
558
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
559
			    @NOTES,       -- NOTES - nvarchar(500)
560
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
561
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
562
			    CONVERT(DATETIME, @p_CREATE_DT, 103),
563
				--CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
564
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
565
			    CONVERT(DATETIME, @p_APPROVE_DT, 103),
566
				--CAST(@p_APPROVE_DT AS DATE),
567
				@FR_DEP_ID,
568
				@TO_DEP_ID,
569
				@FR_DVDM_ID,
570
				@TO_DVDM_ID,
571
				@FR_KHOI_ID,
572
				@TO_KHOI_ID,  -- APPROVE_DT - datetime
573
        @FR_AMT_APP,
574
        @TO_AMT_APP,
575
        @FR_AMT_TF,
576
        @TO_AMT_TF,
577
        @FR_AMT_RECEIVE_TF,
578
        @TO_AMT_RECEIVE_TF,
579
        @FR_AMT_EXE,
580
        @TO_AMT_EXE,
581
        @FR_AMT_ETM,
582
        @TO_AMT_ETM,
583
        @FR_AMT_ETM_TMP,
584
        @TO_AMT_ETM_TMP
585
      )
586
			
587
			
588
			IF @@ERROR <> 0 GOTO ABORT1
589
		-- next Group_Id
590
	  FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
591
		@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,
592
    @FR_AMT_APP,@TO_AMT_APP,@FR_AMT_TF,@TO_AMT_TF,@FR_AMT_RECEIVE_TF,@TO_AMT_RECEIVE_TF,@FR_AMT_EXE,@TO_AMT_EXE,@FR_AMT_ETM,@TO_AMT_ETM,@FR_AMT_ETM_TMP,@TO_AMT_ETM_TMP
593
		END
594
		CLOSE ListTransfers
595
		DEALLOCATE ListTransfers
596

    
597
			IF @@Error <> 0 GOTO ABORT
598
		--Insert into TABLE PL_REQUEST_DOC_DT
599
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
600
		DECLARE ListCostCenters  CURSOR FOR
601
		SELECT *
602
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
603
		WITH 
604
		(
605
			COST_ID	varchar(15),	
606
			NOTES	nvarchar(1000)
607
		
608
		)
609
		WHERE COST_ID <>'DVDM-CHUNG'
610
		OPEN ListCostCenters
611
		
612
		Declare 
613
		@COST_ID	varchar(15)
614

    
615

    
616
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
617
		WHILE @@FETCH_STATUS = 0	
618
		BEGIN
619
			
620
			DECLARE @l_REQ_COST_ID VARCHAR(15)
621
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_COSTCENTER', @l_REQ_COST_ID out
622
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
623
	
624
			INSERT INTO dbo.PL_REQUEST_COSTCENTER
625
			(
626
			    REQ_COST_ID,
627
			    COST_ID,
628
			    REQ_ID,
629
			    NOTES,
630
			    AUTH_STATUS,
631
			    MAKER_ID,
632
			    CREATE_DT,
633
			    CHECKER_ID,
634
			    APPROVE_DT
635
			)
636
			VALUES
637
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
638
			    @COST_ID,        -- COST_ID - varchar(15)
639
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
640
			    @NOTES,       -- NOTES - nvarchar(500)
641
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
642
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
643
			      convert(datetime,@p_CREATE_DT,103) , -- CREATE_DT - datetime
644
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
645
			        convert(datetime,@p_APPROVE_DT,103)  -- APPROVE_DT - datetime
646
			 )
647
			
648
			
649
			IF @@ERROR <> 0 GOTO ABORT1
650
		-- next Group_Id
651
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
652
		END
653
		CLOSE ListCostCenters
654
		DEALLOCATE ListCostCenters
655

    
656

    
657
		-- Insert into TABLE PL_REQUEST_DOC_FILE
658
		DECLARE @tableAttachFile TABLE(
659
			PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
660
			IS_VIEW	bit,
661
			REQ_ID varchar(20),
662
			NOTES  nvarchar(200)
663
		)
664

    
665
		Declare @fdoc INT
666
		Exec sp_xml_preparedocument @fdoc Output,@p_ListAttachFile
667

    
668
		INSERT INTO @tableAttachFile
669
		SELECT *
670
		FROM OPENXML(@fDoc,'/Root/ListAttachFile',2)
671
		WITH 
672
		(
673
			PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
674
			IS_VIEW	bit,
675
			REQ_ID varchar(20),
676
			NOTES  nvarchar(200)
677
		)
678
    DELETE PL_REQUEST_DOC_FILE WHERE REQ_ID = @p_REQ_ID
679
		DECLARE ListAttachFile  CURSOR FOR
680
		SELECT * FROM @tableAttachFile
681
		OPEN ListAttachFile
682

    
683
		Declare 
684
			@PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
685
			@IS_VIEW	bit,
686
			@REQ_ID varchar(20),
687
			@_NOTES nvarchar(200)
688
		
689
		FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
690
		WHILE @@FETCH_STATUS = 0	
691
		BEGIN
692
			DECLARE @l_File_ID VARCHAR(15)
693
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_FILE', @l_File_ID out
694
			IF @l_File_ID='' OR @l_File_ID IS NULL GOTO ABORT
695

    
696

    
697
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_File_ID, 'PL_REQUEST_DOC_FILE')
698

    
699
				
700
				INSERT INTO dbo.PL_REQUEST_DOC_FILE
701
				(
702
					 [PL_REQUEST_DOC_FILE_ID]
703
					,[IS_VIEW]
704
					,[REQ_ID]
705
					,[NOTES]
706
				)	
707
				VALUES
708
				(   
709
					@l_File_ID
710
					,isnull(@IS_VIEW,0)
711
					,@p_REQ_ID
712
					,@_NOTES
713
				)
714
			
715
			IF @@ERROR <> 0 GOTO ABORT1
716
			FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
717
		END
718
		CLOSE ListAttachFile
719
		DEALLOCATE ListAttachFile
720
		
721
		IF @@Error <> 0 GOTO ABORT
722

    
723
		--IF (SELECT COUNT(*) FROM @TEMP) = 0
724
		--	INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_File_ID, 'PL_REQUEST_DOC_FILE')
725
	
726
COMMIT TRANSACTION
727
IF (SELECT COUNT(*) FROM @TEMP) = 0
728
BEGIN
729
	SELECT '0' as Result, @p_REQ_ID  REQ_ID,'', '' , @p_REQ_CODE AS ErrorDesc
730
	RETURN '0'
731
END
732
ELSE
733
BEGIN
734
	SELECT '0' as Result, @p_REQ_ID  REQ_ID,REF_ID, [TYPE] , @p_REQ_CODE AS ErrorDesc FROM @TEMP
735
	RETURN '0'
736
END
737
ABORT:
738
BEGIN
739
		ROLLBACK TRANSACTION
740
		SELECT '-1' AS Result, ''  REQ_ID, '' ErrorDesc
741
		RETURN '-1'
742
End
743
ABORT1:
744
BEGIN
745
		CLOSE ListGoods
746
		DEALLOCATE ListGoods
747
		CLOSE ListCostCenters
748
		DEALLOCATE ListCostCenters
749
		CLOSE ListCostCenters
750
		DEALLOCATE ListCostCenters
751
		ROLLBACK TRANSACTION
752
		SELECT '-1' AS Result, ''  REQ_ID, '' ErrorDesc
753
		RETURN '-1'
754
End
755
GO