Project

General

Profile

dbo.PL_REQUEST_DOC_Ins.txt

Luc Tran Van, 04/10/2023 11:09 AM

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

    
34
AS	
35
 BEGIN TRANSACTION
36

    
37
		DECLARE @DEP_ID VARCHAR(15) = (SELECT SECUR_CODE FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
38

    
39
		-- TABLE INSERT FILE
40
		DECLARE @TEMP TABLE
41
		(
42
			[KEY] varchar(15),
43
			[REF_ID] varchar(15),
44
			[TYPE] varchar(50)
45
		)
46

    
47

    
48
		IF(@p_REQ_DT IS NULL)
49
		BEGIN
50
			SELECT 'REQ-00001' Result, '' REQ_ID, N'Ngày yêu cầu tờ trình không được phép để trống' ErrorDesc 
51
			ROLLBACK TRANSACTION
52
			RETURN '-1'
53
		END
54
		--IF(CAST(@p_REQ_DT AS DATE) > CAST(GETDATE() AS DATE))
55
		IF(CONVERT(DATETIME,@p_REQ_DT,103) > CONVERT(DATETIME,GETDATE(),103))
56
		BEGIN
57
			SELECT 'REQ-00001' Result, '' REQ_ID, N'Ngày yêu cầu không lớn hơn ngày hiện tại' ErrorDesc 
58
			ROLLBACK TRANSACTION
59
			RETURN '-1'
60
		END
61

    
62
		exec [dbo].[PL_REQUEST_DOC_CODE_GenKey] @p_BRANCH_ID,@DEP_ID,'TTCT', @p_REQ_CODE out
63
		IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
64
		BEGIN
65
			SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã tờ trình chủ trương bắc buộc nhập' ErrorDesc 
66
			ROLLBACK TRANSACTION
67
			RETURN '-1'
68
		END
69
		IF EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE)
70
		BEGIN
71
			SELECT '-1' Result, '' REQ_ID, N'Tờ trình số:' + @p_REQ_CODE + N' đã tồn tại trong hệ thống!"' ErrorDesc 
72
			ROLLBACK TRANSACTION
73
			RETURN '-1'
74
		END
75
		DECLARE @sErrorCode VARCHAR(20)
76
		--insert master				
77
		DECLARE @l_REQ_ID VARCHAR(15)
78
		EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC', @l_REQ_ID out
79
		IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
80

    
81

    
82
		DECLARE @BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
83

    
84
		SET  @BRANCH_CREATE= (SELECT TLSUBBRID  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
85
		SET @DEP_CREATE=(SELECT SECUR_CODE  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
86
		
87
		IF(EXISTS(SELECT * FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE AND BRANCH_TYPE='HS') 
88
			OR EXISTS(SELECT DEP_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_CREATE AND DEP_CODE LIKE '069%'))		
89
			SET @DEP_CREATE=(SELECT SECUR_CODE  FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
90
		ELSE
91
			SET @DEP_CREATE=''
92
		
93

    
94
		SET @DEP_ID=@DEP_CREATE
95
		SET @p_BRANCH_ID=@BRANCH_CREATE
96

    
97
		--IF(CAST(@p_REQ_DT AS DATE) < CAST(GETDATE() AS DATE))
98
		IF(CONVERT(DATE,@p_REQ_DT,103) < CONVERT(DATE,GETDATE(),103)) --- LUCTV 10.04.2023 FIX LỖI SO SÁNH LÙI NGÀY CHỈ SO SÁNH CẤP ĐỘ DATE THAY VÌ DATETIME --update _secretkey10042023
99
			SET @p_IS_BACKDAY=1;
100
		ELSE
101
			SET  @p_IS_BACKDAY=0
102

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

    
198
		--Insert into TABLE PL_REQUEST_DOC_DT
199
		Declare @hdoc INT
200
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
201
		INSERT INTO @TABLE
202
		SELECT PLAN_ID,
203
               TRADE_ID,
204
               GOODS_ID,
205
               DESCRIPTION,
206
               UNIT_ID,
207
               QUANTITY,
208
               PRICE,
209
               TOTAL_AMT,
210
               NOTES,
211
               REQDT_TYPE,
212
               NAME,
213
               DVDM_ID,
214
               HH_ID,
215
               CURRENCY,
216
               EXCHANGE_RATE,
217
               TAXES,
218
               SUP_ID,
219
               TRADE_TYPE,
220
			   KHOI_ID,UNIT_NAME,SUP_NAME
221
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
222
		WITH 
223
		(
224
			PLAN_ID	varchar(15)  ,
225
			TRADE_ID	varchar(15)  ,
226
			GOODS_ID	varchar(15)  ,
227
			[DESCRIPTION] nvarchar(2000),
228
			UNIT_ID	varchar(15)  ,
229
			QUANTITY	decimal(18,0)  ,
230
			PRICE	decimal(18,2)  ,
231
			TOTAL_AMT	decimal(18,2),	
232
			NOTES	nvarchar(1000),
233
			REQDT_TYPE VARCHAR(1),
234
			NAME NVARCHAR(500),
235
			DVDM_ID VARCHAR(20),
236
			HH_ID VARCHAR(20),
237
			CURRENCY	nvarchar(50),
238
			EXCHANGE_RATE	decimal(18,2),
239
			TAXES	decimal(18, 2),
240
			SUP_ID VARCHAR(20),
241
			TRADE_TYPE VARCHAR(20),
242
			KHOI_ID VARCHAR(20),
243
			UNIT_NAME nvarchar(200),
244
			SUP_NAME NVARCHAR(250)
245
		)
246
		DECLARE @TABLE_TRANSFER TABLE (
247
			FR_PLAN_ID	varchar(15),
248
			FR_TRADE_ID	varchar(15),
249
			FR_GOOD_ID	varchar(15),
250
			FR_BRN_ID	varchar(15),
251
			TO_BRN_ID	varchar(15),
252
			TO_PLAN_ID	varchar(15),
253
			TO_TRADE_ID	varchar(15),	
254
			TO_GOOD_ID	varchar(15),	
255
			QTY  DECIMAL(18,0),
256
			TOTAL_AMT	decimal(18),	
257
			NOTES	nvarchar(1000),
258
			FR_DEP_ID VARCHAR(20),
259
			TO_DEP_ID VARCHAR(20),
260
			FR_DVDM_ID VARCHAR(20),
261
			TO_DVDM_ID VARCHAR(20),
262
			FR_KHOI_ID VARCHAR(20),
263
			TO_KHOI_ID VARCHAR(20),
264
			FR_GD_TYPE VARCHAR(20),
265
			TO_GD_TYPE VARCHAR(20),
266
			FR_AMT_APP decimal(18),
267
      TO_AMT_APP decimal(18),
268
      FR_AMT_TF DECIMAL(18),
269
      TO_AMT_TF DECIMAL(18),
270
      FR_AMT_RECEIVE_TF DECIMAL(18),
271
      TO_AMT_RECEIVE_TF DECIMAL(18),
272
      FR_AMT_EXE DECIMAL(18),
273
      TO_AMT_EXE DECIMAL(18),
274
      FR_AMT_ETM DECIMAL(18),
275
      TO_AMT_ETM DECIMAL(18),
276
      FR_AMT_ETM_TMP decimal(18),	
277
  		TO_AMT_ETM_TMP decimal(18)	
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
          FR_AMT_APP,
303
          TO_AMT_APP,
304
          FR_AMT_TF,
305
          TO_AMT_TF,
306
          FR_AMT_RECEIVE_TF,
307
          TO_AMT_RECEIVE_TF,
308
          FR_AMT_EXE,
309
          TO_AMT_EXE,
310
          FR_AMT_ETM,
311
          TO_AMT_ETM,
312
          FR_AMT_ETM_TMP,	
313
      		TO_AMT_ETM_TMP
314
		FROM OPENXML(@hdoc,'/Root/ListTransfer',2)
315
		WITH 
316
		(
317
			FR_PLAN_ID	varchar(15),
318
			FR_TRADE_ID	varchar(15),
319
			FR_GOOD_ID	varchar(15),
320
			FR_BRN_ID	varchar(15),
321
			TO_BRN_ID	varchar(15),
322
			TO_PLAN_ID	varchar(15),
323
			TO_TRADE_ID	varchar(15),	
324
			TO_GOOD_ID	varchar(15),	
325
			QTY  DECIMAL(18,0),
326
			TOTAL_AMT	decimal(18),	
327
			NOTES	nvarchar(1000),
328
			FR_DEP_ID VARCHAR(20),
329
			TO_DEP_ID VARCHAR(20),
330
			FR_DVDM_ID VARCHAR(20),
331
			TO_DVDM_ID VARCHAR(20),
332
			FR_KHOI_ID VARCHAR(20),
333
			TO_KHOI_ID VARCHAR(20),
334
			FR_GD_TYPE VARCHAR(20),
335
			TO_GD_TYPE VARCHAR(20),
336
			FR_AMT_APP decimal(18),
337
      TO_AMT_APP decimal(18),
338
      FR_AMT_TF DECIMAL(18),
339
      TO_AMT_TF DECIMAL(18),
340
      FR_AMT_RECEIVE_TF DECIMAL(18),
341
      TO_AMT_RECEIVE_TF DECIMAL(18),
342
      FR_AMT_EXE DECIMAL(18),
343
      TO_AMT_EXE DECIMAL(18),
344
      FR_AMT_ETM DECIMAL(18),
345
      TO_AMT_ETM DECIMAL(18),
346
      FR_AMT_ETM_TMP decimal(18),	
347
  		TO_AMT_ETM_TMP decimal(18)	
348
		)
349
		--WHERE FR_BRN_ID !='' AND FR_BRN_ID IS NOT NULL
350
		DECLARE ListGoods  CURSOR FOR
351
		SELECT PLAN_ID,
352
               TRADE_ID,
353
               GOODS_ID,
354
               DESCRIPTION,
355
               UNIT_ID,
356
               QUANTITY,
357
               PRICE,
358
               TOTAL_AMT,
359
               NOTES,
360
               REQDT_TYPE,
361
               NAME,
362
               DVDM_ID,
363
               HH_ID,
364
               CURRENCY,
365
               EXCHANGE_RATE,
366
               TAXES,
367
               SUP_ID,
368
               TRADE_TYPE,KHOI_ID,UNIT_NAME,SUP_NAME FROM @TABLE
369

    
370
		OPEN ListGoods
371

    
372
		Declare 
373
		@PLAN_ID	varchar(15),
374
		@TRADE_ID	varchar(15),
375
		@GOODS_ID	varchar(15),
376
		@DESCRIPTION nvarchar(2000),
377
		@UNIT_ID	varchar(15),
378
		@QUANTITY	decimal(18),
379
		@PRICE	decimal(18,2),
380
		@TOTAL_AMT	decimal(18,2),		
381
		@NOTES	nvarchar(1000),
382
		@REQDT_TYPE VARCHAR(1),
383
		@NAME NVARCHAR(500),
384
		@DVDM_ID VARCHAR(20),
385
		@HH_ID VARCHAR(20),
386
		@CURRENCY	nvarchar(50),
387
		@EXCHANGE_RATE	decimal(18, 2),
388
		@TAXES	decimal(18, 2),
389
		@SUP_ID VARCHAR(20),
390
		@TRADE_TYPE VARCHAR(20),
391
		@KHOI_ID VARCHAR(20),
392
		@UNIT_NAME nvarchar(200),
393
		@SUP_NAME NVARCHAR(250),
394
		@l_SUP_ID VARCHAR(15)
395
		FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
396
		@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
397
		WHILE @@FETCH_STATUS = 0	
398
		BEGIN
399
			-- KIEM TRA NEU HINH THUC CHI DINH THAU LA THEO QUY DINH VCCB THI KHONG CHO PHEP CHON NHA CUNG CAP
400
			--IF(@TRADE_TYPE IS NOT NULL AND @TRADE_TYPE <>'' AND @TRADE_TYPE ='VCCB' AND (@SUP_ID IS NOT NULL AND @SUP_ID <>''))
401
			--BEGIN
402
			--	SELECT 'REQ-00001' Result, '' REQ_ID, N'Lưới hàng hóa: Nếu chọn 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 
403
			--	ROLLBACK TRANSACTION
404
			--	RETURN '-1'
405
			--END
406
			IF(@SUP_NAME IS NOT NULL AND @SUP_NAME <>'')
407
			BEGIN
408
				IF(NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME))
409
				BEGIN
410
					EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
411
					IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
412
					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)
413
					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)
414
					SET @SUP_ID =@l_SUP_ID
415
				END
416
				ELSE
417
				BEGIN
418
					SET @l_SUP_ID =(SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME)
419
					IF(@l_SUP_ID <> '' AND  @SUP_ID IS NOT NULL)
420
					BEGIN
421
						SET @SUP_ID =@l_SUP_ID
422
					END
423
				--END
424
				END
425
				
426
			END
427
			DECLARE @l_REQDT_ID VARCHAR(15)
428
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_DT', @l_REQDT_ID out
429
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
430
			
431
			--SET @TOTAL_AMT=(@PRICE * @QUANTITY * @EXCHANGE_RATE) + (@TAXES * @EXCHANGE_RATE)
432

    
433
			INSERT INTO dbo.PL_REQUEST_DOC_DT
434
			(
435
			    REQDT_ID,
436
			    REQ_ID,
437
			    PLAN_ID,
438
			    TRADE_ID,
439
			    GOODS_ID,
440
			    NAME,
441
			    DESCRIPTION,
442
			    REQDT_TYPE,
443
			    UNIT_ID,
444
			    QUANTITY,
445
			    PRICE,
446
			    TOTAL_AMT,
447
			    RECORD_STATUS,
448
			    MAKER_ID,
449
			    CREATE_DT,
450
			    AUTH_STATUS,
451
			    CHECKER_ID,
452
			    APPROVE_DT,
453
				DVDM_ID,
454
				HANGHOA_ID,
455
				CURRENCY,
456
				EXCHANGE_RATE,
457
				TAXES,SUP_ID,TRADE_TYPE,KHOI_ID,UNIT_NAME
458
			)
459
			VALUES
460
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
461
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
462
			    @PLAN_ID,        -- PLAN_ID - varchar(15)
463
			    @TRADE_ID,        -- TRADE_ID - varchar(15)
464
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
465
			    @NAME,       -- NAME - nvarchar(200)
466
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
467
			    @REQDT_TYPE,        -- REQDT_TYPE - varchar(1)
468
			    @UNIT_ID,        -- UNIT_ID - varchar(15)
469
			    @QUANTITY,      -- QUANTITY - decimal(18, 0)
470
			    @PRICE,      -- PRICE - decimal(18, 0)
471
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
472
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
473
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
474
			    CONVERT(DATETIME, @p_CREATE_DT, 103),
475
				--CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
476
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
477
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
478
			    CONVERT(DATETIME, @P_APPROVE_DT, 103),
479
				--CAST(@P_APPROVE_DT AS DATE),   -- APPROVE_DT - datetime
480
			    @DVDM_ID,
481
				@HH_ID,
482
				@CURRENCY,
483
				@EXCHANGE_RATE,
484
				@TAXES,@SUP_ID,@TRADE_TYPE,@KHOI_ID,@UNIT_NAME
485
				)
486
			
487
			
488
			IF @@ERROR <> 0 GOTO ABORT1
489
		-- next Group_Id
490
			FETCH NEXT FROM ListGoods INTO @PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
491
			@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
492
			END
493
			CLOSE ListGoods
494
			DEALLOCATE ListGoods
495

    
496

    
497
			IF @@Error <> 0 GOTO ABORT
498
		--Insert into TABLE PL_REQUEST_DOC_DT
499

    
500
		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
501
		
502
		Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
503
		DECLARE ListTransfers  CURSOR FOR
504
		SELECT *
505
		FROM @TABLE_TRANSFER
506
		OPEN ListTransfers
507

    
508
		Declare 
509
		@FR_PLAN_ID	varchar(15),
510
		@FR_TRADE_ID	varchar(15),
511
		@FR_GOOD_ID	varchar(15),
512
		@FR_BRN_ID	varchar(15),
513
		@TO_BRN_ID	varchar(15),
514
		@TO_PLAN_ID	varchar(15),
515
		@TO_TRADE_ID	varchar(15),	
516
		@TO_GOOD_ID	varchar(15),	
517
		@QTY  DECIMAL(18,0),
518
		@FR_DEP_ID VARCHAR(20),
519
		@TO_DEP_ID VARCHAR(20),
520
		@FR_DVDM_ID VARCHAR(20),
521
		@TO_DVDM_ID VARCHAR(20),
522
		@FR_KHOI_ID VARCHAR(20),
523
		@TO_KHOI_ID VARCHAR(20),
524
		@FR_GD_TYPE VARCHAR(20),
525
		@TO_GD_TYPE VARCHAR(20),
526
    @FR_AMT_APP decimal(18),
527
    @TO_AMT_APP decimal(18),
528
    @FR_AMT_TF DECIMAL(18),
529
    @TO_AMT_TF DECIMAL(18),
530
    @FR_AMT_RECEIVE_TF DECIMAL(18),
531
    @TO_AMT_RECEIVE_TF DECIMAL(18),
532
    @FR_AMT_EXE DECIMAL(18),
533
    @TO_AMT_EXE DECIMAL(18),
534
    @FR_AMT_ETM DECIMAL(18),
535
    @TO_AMT_ETM DECIMAL(18),
536
    @FR_AMT_ETM_TMP decimal(18),	
537
		@TO_AMT_ETM_TMP decimal(18)	
538

    
539
		FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
540
		@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,
541
    @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
542
    
543
		WHILE @@FETCH_STATUS = 0	
544
		BEGIN
545

    
546
			DECLARE @l_REQ_TRANSFER_ID VARCHAR(15)
547
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_TRANSFER', @l_REQ_TRANSFER_ID out
548
			IF @l_REQ_TRANSFER_ID='' OR @l_REQ_TRANSFER_ID IS NULL GOTO ABORT
549
			IF (@TO_BRN_ID IS NULL OR @TO_BRN_ID = '')
550
        SET @TO_BRN_ID = @BRANCH_CREATE
551
      IF (@BRANCH_CREATE = 'DV0001' AND (@TO_DEP_ID IS NULL OR @TO_DEP_ID = ''))
552
        SET @TO_DEP_ID = @DEP_CREATE
553
      IF (@BRANCH_CREATE = 'DV0001' AND (@TO_KHOI_ID IS NULL OR @TO_KHOI_ID = ''))
554
        SET @TO_KHOI_ID = (SELECT cd.KHOI_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_ID = @DEP_CREATE)
555
			INSERT INTO dbo.PL_REQUEST_TRANSFER
556
			(
557
  	    REQ_TRANSFER_ID,
558
  	    REQ_DOC_ID,
559
  	    FR_PLAN_ID,
560
  	    FR_TRADE_ID,
561
  	    FR_GOOD_ID,
562
  	    FR_BRN_ID,
563
  	    TO_BRN_ID,
564
  	    TO_PLAN_ID,
565
  	    TO_TRADE_ID,
566
  	    TO_GOOD_ID,
567
  	    QTY,
568
  	    TOTAL_AMT,
569
  	    NOTES,
570
  	    AUTH_STATUS,
571
  	    MAKER_ID,
572
  	    CREATE_DT,
573
  	    CHECKER_ID,
574
  	    APPROVE_DT,
575
				FR_DEP_ID,
576
				TO_DEP_ID,
577
				FR_DVDM_ID,
578
				TO_DVDM_ID,
579
				FR_KHOI_ID,
580
				TO_KHOI_ID,
581
        FR_AMT_APP,
582
        TO_AMT_APP,
583
        FR_AMT_TF,
584
        TO_AMT_TF,
585
        FR_AMT_RECEIVE_TF,
586
        TO_AMT_RECEIVE_TF,
587
        FR_AMT_EXE,
588
        TO_AMT_EXE,
589
        FR_AMT_ETM,
590
        TO_AMT_ETM,
591
        FR_AMT_ETM_TMP,
592
        TO_AMT_ETM_TMP
593
			)
594
			VALUES
595
			(   @l_REQ_TRANSFER_ID,        -- REQ_TRANSFER_ID - varchar(15)
596
			    @l_REQ_ID,        -- REQ_DOC_ID - varchar(15)
597
			    @FR_PLAN_ID,        -- FR_PLAN_ID - varchar(15)
598
			    @FR_TRADE_ID,        -- FR_TRADE_ID - varchar(15)
599
			    @FR_GOOD_ID,        -- FR_GOOD_ID - varchar(15)
600
			    @FR_BRN_ID,        -- FR_BRN_ID - varchar(15)
601
			    @TO_BRN_ID,        -- TO_BRN_ID - varchar(15)
602
			    @TO_PLAN_ID,        -- TO_PLAN_ID - varchar(15)
603
			    @TO_TRADE_ID,        -- TO_TRADE_ID - varchar(15)
604
			    @TO_GOOD_ID,        -- TO_GOOD_ID - varchar(15)
605
			    @QTY,      -- QTY - decimal(18, 0)
606
			    @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
607
			    @NOTES,       -- NOTES - nvarchar(500)
608
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
609
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
610
			    CONVERT(DATETIME, @p_CREATE_DT, 103),
611
				--CAST(@p_CREATE_DT AS DATE), -- CREATE_DT - datetime
612
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
613
			    CONVERT(DATETIME, @p_APPROVE_DT, 103),
614
				--CAST(@p_APPROVE_DT AS DATE),
615
				CASE WHEN @FR_BRN_ID = 'DV0001' THEN @FR_DEP_ID ELSE NULL END,
616
				@TO_DEP_ID,
617
				@FR_DVDM_ID,
618
				@TO_DVDM_ID,
619
				@FR_KHOI_ID,
620
				@TO_KHOI_ID,  -- APPROVE_DT - datetime
621
        @FR_AMT_APP,
622
        @TO_AMT_APP,
623
        @FR_AMT_TF,
624
        @TO_AMT_TF,
625
        @FR_AMT_RECEIVE_TF,
626
        @TO_AMT_RECEIVE_TF,
627
        @FR_AMT_EXE,
628
        @TO_AMT_EXE,
629
        @FR_AMT_ETM,
630
        @TO_AMT_ETM,
631
        @FR_AMT_ETM_TMP,
632
        @TO_AMT_ETM_TMP
633
      )
634
			
635
			
636
			IF @@ERROR <> 0 GOTO ABORT1
637
		-- next Group_Id
638
	  FETCH NEXT FROM ListTransfers INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
639
		@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,
640
    @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
641
		END
642
		CLOSE ListTransfers
643
		DEALLOCATE ListTransfers
644

    
645
			IF @@Error <> 0 GOTO ABORT
646
		--Insert into TABLE PL_REQUEST_DOC_DT
647
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
648
		DECLARE ListCostCenters  CURSOR FOR
649
		SELECT *
650
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
651
		WITH 
652
		(
653
			COST_ID	varchar(15),	
654
			NOTES	nvarchar(1000)
655
		
656
		)
657
		WHERE COST_ID <>'DVDM-CHUNG'
658
		OPEN ListCostCenters
659

    
660
		Declare 
661
		@COST_ID	varchar(15)
662

    
663

    
664
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
665
		WHILE @@FETCH_STATUS = 0	
666
		BEGIN
667
			
668
			DECLARE @l_REQ_COST_ID VARCHAR(15)
669
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_COSTCENTER', @l_REQ_COST_ID out
670
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
671
			
672
			INSERT INTO dbo.PL_REQUEST_COSTCENTER
673
			(
674
			    REQ_COST_ID,
675
			    COST_ID,
676
			    REQ_ID,
677
			    NOTES,
678
			    AUTH_STATUS,
679
			    MAKER_ID,
680
			    CREATE_DT,
681
			    CHECKER_ID,
682
			    APPROVE_DT
683
			)
684
			VALUES
685
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
686
			    @COST_ID,        -- COST_ID - varchar(15)
687
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
688
			    @NOTES,       -- NOTES - nvarchar(500)
689
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
690
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
691
			    CONVERT(DATETIME, @p_CREATE_DT, 103),
692
				--CAST(@p_CREATE_DT AS DATE) , -- CREATE_DT - datetime
693
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
694
			    CONVERT(DATETIME, @p_APPROVE_DT, 103)
695
				--CAST(@p_APPROVE_DT AS DATE)  -- APPROVE_DT - datetime
696
			 )
697
			
698
			
699
			IF @@ERROR <> 0 GOTO ABORT1
700
		-- next Group_Id
701
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES
702
		END
703
		CLOSE ListCostCenters
704
		DEALLOCATE ListCostCenters
705

    
706
	
707
	
708
				-- Insert into TABLE PL_REQUEST_DOC_FILE
709
		DECLARE @tableAttachFile TABLE(
710
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
711
			IS_VIEW	bit,
712
			REQ_ID varchar(20),
713
			NOTES  nvarchar(200)
714
		)
715

    
716
		Declare @fdoc INT
717
		Exec sp_xml_preparedocument @fdoc Output,@p_ListAttachFile
718

    
719
		INSERT INTO @tableAttachFile
720
		SELECT *
721
		FROM OPENXML(@fDoc,'/Root/ListAttachFile',2)
722
		WITH 
723
		(
724
			PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
725
			IS_VIEW	bit,
726
			REQ_ID varchar(20),
727
			NOTES  nvarchar(200)
728
		)
729

    
730
		DECLARE ListAttachFile  CURSOR FOR
731
		SELECT * FROM @tableAttachFile
732
		OPEN ListAttachFile
733

    
734
		Declare 
735
			@PL_REQUEST_DOC_FILE_ID	varchar(20)  ,
736
			@IS_VIEW	bit,
737
			@REQ_ID varchar(20),
738
			@_NOTES nvarchar(200)
739
		
740
		
741
		FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
742
		WHILE @@FETCH_STATUS = 0	
743
		BEGIN
744
			DECLARE @l_File_ID VARCHAR(15)
745
			EXEC SYS_CodeMasters_Gen 'PL_REQUEST_DOC_FILE', @l_File_ID out
746
			IF @l_File_ID='' OR @l_File_ID IS NULL GOTO ABORT
747

    
748
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_File_ID, 'PL_REQUEST_DOC_FILE')
749

    
750
			INSERT INTO dbo.PL_REQUEST_DOC_FILE
751
			(
752
			     [PL_REQUEST_DOC_FILE_ID]
753
				,[IS_VIEW]
754
				,[REQ_ID]
755
				,[NOTES]
756
			)	
757
			VALUES
758
			(   
759
				@l_File_ID
760
				,isnull(@IS_VIEW,0)
761
				,@l_REQ_ID
762
				,@_NOTES
763
			)
764
			IF @@ERROR <> 0 GOTO ABORT1
765
			FETCH NEXT FROM ListAttachFile INTO @PL_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
766
		END
767
		CLOSE ListAttachFile
768
		DEALLOCATE ListAttachFile
769
		
770
		IF @@Error <> 0 GOTO ABORT
771

    
772

    
773
		
774
COMMIT TRANSACTION
775
IF (SELECT COUNT(*) FROM @TEMP) = 0
776
BEGIN
777
	SELECT '0' as Result, @l_REQ_ID  REQ_ID,'', '' , @p_REQ_CODE AS ErrorDesc
778
	RETURN '0'
779
END
780
ELSE
781
BEGIN
782
	SELECT '0' as Result, @l_REQ_ID  REQ_ID,REF_ID, [TYPE] , @p_REQ_CODE AS ErrorDesc FROM @TEMP
783
	RETURN '0'
784
END
785
ABORT:
786
BEGIN
787
		ROLLBACK TRANSACTION
788
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
789
		RETURN '-1'
790
End
791
ABORT1:
792
BEGIN
793
		CLOSE ListGoods
794
		DEALLOCATE ListGoods
795
		CLOSE ListCostCenters
796
		DEALLOCATE ListCostCenters
797
		CLOSE ListCostCenters
798
		DEALLOCATE ListCostCenters
799
		ROLLBACK TRANSACTION
800
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
801
		RETURN '-1'
802
End