Project

General

Profile

1.0 PL REQUEST DOC UPD.txt

Luc Tran Van, 11/21/2022 10:23 AM

 
1

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

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

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

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

    
83

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

    
89
		UPDATE dbo.PL_REQUEST_DOC 
90
		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
91
		,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
92
		,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,
93
		PL_BASED_ID =@p_PL_BASED_ID,CREATOR_NOTES = @p_CREATOR_NOTES,
94
		REQ_DT =CONVERT(DATE, @p_REQ_DT,103), --- LUCTV: 21.11.2022 BO SUNG CHO PHEP CAP NHAT NGAY LUI KHI CAP NHAT
95
		------------BAODNQ 23/6/2022 : SET THÊM GIÁ TRỊ PROCESS_ID---------
96
		PROCESS_ID = @p_PROCESS_ID
97
		WHERE REQ_ID=@p_REQ_ID
98

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

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

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

    
201

    
202
	
203

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

    
308
			
309

    
310

    
311

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

    
332
		OPEN ListGoods
333

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

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

    
457

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

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

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

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

    
622

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

    
663

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

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

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

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

    
703

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

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

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