Project

General

Profile

PL_REQUEST_DOC_Upd.txt

Luc Tran Van, 12/06/2022 09:52 AM

 
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
		,TOTAL_AMT=@p_TOTAL_AMT,NOTES=@p_NOTES,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_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
		REQ_DT =CONVERT(DATE, @p_REQ_DT,103), --- LUCTV: 21.11.2022 BO SUNG CHO PHEP CAP NHAT NGAY LUI KHI CAP NHAT
94
		------------BAODNQ 23/6/2022 : SET THÊM GIÁ TRỊ PROCESS_ID---------
95
		PROCESS_ID = @p_PROCESS_ID
96
		WHERE REQ_ID=@p_REQ_ID
97

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

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

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

    
200

    
201
	
202

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

    
307
			
308

    
309

    
310

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

    
331
		OPEN ListGoods
332

    
333
		Declare 
334
		@PLAN_ID	varchar(15),
335
		@TRADE_ID	varchar(15),
336
		@GOODS_ID	varchar(15),
337
		@DESCRIPTION nvarchar(4000),
338
		@UNIT_ID	varchar(15),
339
		@QUANTITY	decimal(18),
340
		@PRICE	decimal(18,2),
341
		@TOTAL_AMT	decimal(18,2),		
342
		@NOTES	nvarchar(4000),
343
		@REQDT_TYPE VARCHAR(1),
344
		@NAME NVARCHAR(4000),
345
		@DVDM_ID VARCHAR(20),
346
		@HH_ID VARCHAR(20),
347
		@CURRENCY	nvarchar(50),
348
		@EXCHANGE_RATE	decimal(18, 2),
349
		@TAXES	decimal(18, 2),
350
		@SUP_ID VARCHAR(20),
351
		@TRADE_TYPE VARCHAR(20),
352
		@KHOI_ID VARCHAR(20),
353
		@UNIT_NAME NVARCHAR(200),
354
		@SUP_NAME NVARCHAR(200),
355
		@l_SUP_ID VARCHAR(15)
356
		FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
357
		@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
358
		WHILE @@FETCH_STATUS = 0	
359
		BEGIN	
360
			-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
361
			--IF(@TRADE_TYPE IS NOT NULL AND @TRADE_TYPE <>'' AND @TRADE_TYPE ='VCCB' AND (@SUP_ID IS NOT NULL AND @SUP_ID <>''))
362
			--BEGIN
363
			--	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 
364
			--	ROLLBACK TRANSACTION
365
			--	RETURN '-1'
366
			--END
367
			--- THEM NHA CUNG CAP
368
			--IF(@SUP_NAME IS NOT NULL AND @SUP_NAME <>'')
369
			--BEGIN
370
				--IF(NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME))
371
				--BEGIN
372
				--	EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
373
				--	IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
374
				--	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)
375
				--	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)
376
				--	SET @SUP_ID =@l_SUP_ID
377
				--END
378
				--ELSE
379
				--BEGIN
380
					--SET @l_SUP_ID =(SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME)
381
					--IF(@l_SUP_ID <> '' AND  @SUP_ID IS NOT NULL)
382
					--BEGIN
383
					--	SET @SUP_ID =@l_SUP_ID
384
					--END
385
				--END
386
				--END
387
				
388
			--END
389
			-------
390
			DECLARE @l_REQDT_ID VARCHAR(15)
391
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
392
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
393
			
394
		
395
			--SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + (@TAXES * @EXCHANGE_RATE)
396

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

    
456

    
457
			IF @@Error <> 0 GOTO ABORT
458
		--Insert into TABLE PL_REQUEST_DOC_DT
459
		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
460
		
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
    @FR_AMT_APP decimal(18),
485
    @TO_AMT_APP decimal(18),
486
    @FR_AMT_TF DECIMAL(18),
487
    @TO_AMT_TF DECIMAL(18),
488
    @FR_AMT_RECEIVE_TF DECIMAL(18),
489
    @TO_AMT_RECEIVE_TF DECIMAL(18),
490
    @FR_AMT_EXE DECIMAL(18),
491
    @TO_AMT_EXE DECIMAL(18),
492
    @FR_AMT_ETM DECIMAL(18),
493
    @TO_AMT_ETM DECIMAL(18),
494
    @FR_AMT_ETM_TMP decimal(18),	
495
		@TO_AMT_ETM_TMP decimal(18)	
496

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

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

    
621

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

    
662

    
663
		-- Insert into TABLE PL_REQUEST_DOC_FILE
664
		DECLARE @tableAttachFile TABLE(
665
			PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
666
			IS_VIEW	bit,
667
			REQ_ID varchar(20),
668
			NOTES  nvarchar(200)
669
		)
670

    
671
		Declare @fdoc INT
672
		Exec sp_xml_preparedocument @fdoc Output,@p_ListAttachFile
673

    
674
		INSERT INTO @tableAttachFile
675
		SELECT *
676
		FROM OPENXML(@fDoc,'/Root/ListAttachFile',2)
677
		WITH 
678
		(
679
			PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
680
			IS_VIEW	bit,
681
			REQ_ID varchar(20),
682
			NOTES  nvarchar(200)
683
		)
684
    DELETE PL_REQUEST_DOC_FILE WHERE REQ_ID = @p_REQ_ID
685
		DECLARE ListAttachFile  CURSOR FOR
686
		SELECT * FROM @tableAttachFile
687
		OPEN ListAttachFile
688

    
689
		Declare 
690
			@PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
691
			@IS_VIEW	bit,
692
			@REQ_ID varchar(20),
693
			@_NOTES nvarchar(200)
694
		
695
		FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
696
		WHILE @@FETCH_STATUS = 0	
697
		BEGIN
698
			DECLARE @l_File_ID VARCHAR(15)
699
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_FILE', @l_File_ID out
700
			IF @l_File_ID='' OR @l_File_ID IS NULL GOTO ABORT
701

    
702

    
703
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_File_ID, 'PL_REQUEST_DOC_FILE')
704

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

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