Project

General

Profile

2107 FILE 16.txt

Luc Tran Van, 07/21/2020 02:10 PM

 
1
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_SendApp]
2
@p_REQ_ID VARCHAR(20),
3
@p_PROCESS_ID VARCHAR(20),
4
@p_TLNAME VARCHAR(20),
5
@p_MAKER_ID VARCHAR(20)
6
AS
7
BEGIN TRANSACTION
8
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_DT IS NULL OR REQ_DT='')) )
9
	BEGIN
10
			ROLLBACK TRANSACTION
11
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Ngày yêu cầu bắt buộc nhập' ErrorDesc
12
			RETURN '-1'
13
	END
14
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (REQ_REASON IS NULL OR REQ_REASON='')) )
15
	BEGIN
16
			ROLLBACK TRANSACTION
17
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Mục đích yêu cầu bắt buộc nhập' ErrorDesc
18
			RETURN '-1'
19
	END
20
	IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE  REQ_ID=@p_REQ_ID AND  (PL_REQ_ID IS NULL OR PL_REQ_ID='')) )
21
	BEGIN
22
			ROLLBACK TRANSACTION
23
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Tờ trình chủ trương bắt buộc nhập' ErrorDesc
24
			RETURN '-1'
25
	END
26
	IF(NOT EXISTS(SELECT REQ_DOC_ID FROM dbo.TR_REQUEST_DOC_DT WHERE  REQ_DOC_ID=@p_REQ_ID ) )
27
	BEGIN
28
			ROLLBACK TRANSACTION
29
			SELECT '-1' AS Result ,'' REQ_CODE, ''  REQ_ID, N'Chi tiết hàng hóa bắt buộc nhập' ErrorDesc
30
			RETURN '-1'
31
	END
32

    
33
	--- XOA DATA CU
34
	DELETE PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID
35
	-----
36
	DECLARE @NS_TO_TRINH DECIMAL(18,0), @NS_PYCMS_USE DECIMAL(18,0), @NS_LUY_KE DECIMAL(18,0),@PL_REQ_CODE VARCHAR(50)
37
	SET @PL_REQ_CODE =(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
38
	SET @NS_TO_TRINH =(SELECT TOTAL_AMT FROM PL_REQUEST_DOC WHERE REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
39
	SET @NS_PYCMS_USE =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID)
40
	SET @NS_LUY_KE =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID IN (SELECT REQ_ID FROM dbo.TR_REQUEST_DOC
41
	WHERE PL_REQ_ID=(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))),0)
42
	DECLARE @p_PL_REQ_ID VARCHAR(15),@p_REQ_DATE DATETIME
43
	SELECT @p_PL_REQ_ID=PL_REQ_ID,@p_REQ_DATE=REQ_DT  FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
44
	IF( EXISTS(
45
			SELECT Temp.GD_ID FROM (SELECT GD_ID,SUM(TOTAL_AMT) AS TOTAL_AMT_ETM FROM dbo.TR_REQUEST_DOC_DT   WHERE REQ_DOC_ID=@p_REQ_ID
46
			GROUP BY GD_ID) Temp WHERE    TOTAL_AMT_ETM > 
47
			((SELECT SUM(TEMP2.TOTAL_AMT) AS TOTAL_AMT_APP FROM
48
			(SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
49
			WHERE REQ_ID=@p_PL_REQ_ID
50
			UNION 
51
			SELECT GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT
52
			WHERE REQ_ID=(SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_PL_REQ_ID) ) TEMP2 WHERE TEMP2.GOODS_ID=Temp.GD_ID
53
			GROUP BY TEMP2.GOODS_ID) - (SELECT ISNULL(SUM(TOTAL_AMT),0) AS TOTAL_AMT_EXE FROM dbo.TR_REQUEST_DOC_DT WHERE GD_ID=Temp.GD_ID AND 
54
			REQ_DOC_ID IN (SELECT REQ_ID FROM dbo.TR_REQUEST_DOC WHERE PL_REQ_ID=@p_PL_REQ_ID)
55
			GROUP BY GD_ID))))
56
		BEGIN
57
			ROLLBACK TRANSACTION
58
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID,
59
			N'Thông tin liên quan tới phiếu yêu cầu mua sắm có sử dụng tờ trình số: '+ @PL_REQ_CODE
60
			+CHAR(10)+ N'Tổng số tiền lũy kế sử dụng ngân sách tờ trình: '+FORMAT(@NS_LUY_KE ,'#,#', 'vi-VN')
61
			+CHAR(10)+N'Tổng số tiền ngân sách còn lại của tờ trình: '+ FORMAT(@NS_TO_TRINH -@NS_LUY_KE ,'#,#', 'vi-VN')
62
			+CHAR(10)+ N'Số tiền sử dụng ngân sách cho phiếu yêu cầu mua sắm hiện tại vượt '+FORMAT(@NS_LUY_KE+@NS_PYCMS_USE -@NS_TO_TRINH ,'#,#', 'vi-VN')+N' so với tổng số tiền ngân sách còn lại của tờ trình.'
63
			+CHAR(10) +N'Vui lòng tra cứu tổng số tiền các phiếu yêu cầu mua sắm để biết thêm thông tin chi tiêt!' ErrorDesc 
64
			RETURN '0'
65
		END
66
	IF(EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND REQ_DT <= @p_REQ_DATE))
67
		BEGIN
68
			ROLLBACK TRANSACTION
69
			SELECT 'REQ-00001' Result,'' REQ_CODE, '' REQ_ID, N'Lưới thông tin hàng hóa theo tờ trình: Ngày cần không được phép để trống và phải lớn hơn ngày yêu cầu mua sắm' ErrorDesc 
70
			RETURN '0'
71
		END
72
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
73
	@BRANCH_CREATE_TYPE VARCHAR(10)
74

    
75
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
76

    
77
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
78
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
79
	-- KIEM TRA XEM CO CAP PHE DUYET HAY KHONG
80
	IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <>''))
81
	BEGIN
82
		UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='SIGN' WHERE REQ_ID=@p_REQ_ID
83
		INSERT INTO dbo.PL_REQUEST_PROCESS
84
		(
85
		    REQ_ID,
86
		    PROCESS_ID,
87
		    STATUS,
88
		    ROLE_USER,
89
		    BRANCH_ID,
90
			DEP_ID,
91
		    CHECKER_ID,
92
		    APPROVE_DT,
93
		    PARENT_PROCESS_ID,
94
		    IS_LEAF,
95
		    COST_ID,
96
		    DVDM_ID,
97
		    NOTES,
98
		    IS_HAS_CHILD
99
		)
100
		VALUES
101
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
102
		    'SIGN',        -- PROCESS_ID - varchar(10)
103
		    'C',        -- STATUS - varchar(5)
104
		    (SELECT RoleName FROM TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)),  -- ROLE_USER - varchar(50)
105
		    @BRANCH_CREATE,  
106
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
107
		    '',        -- CHECKER_ID - varchar(15)
108
		    NULL,      -- APPROVE_DT - datetime
109
		    '',        -- PARENT_PROCESS_ID - varchar(10)
110
		    'N',        -- IS_LEAF - varchar(1)
111
		    '',        -- COST_ID - varchar(15)
112
		    '',        -- DVDM_ID - varchar(15)
113
		    N'Chờ cấp phê duyệt trung gian xác nhận phiếu',       -- NOTES - nvarchar(500)
114
		    NULL       -- IS_HAS_CHILD - bit
115
		 )
116
	END
117
	ELSE
118
	BEGIN
119
	UPDATE dbo.TR_REQUEST_DOC SET AUTH_STATUS='U',PROCESS_ID='APPNEW' WHERE REQ_ID=@p_REQ_ID
120
	INSERT INTO dbo.PL_REQUEST_PROCESS
121
		(
122
		    REQ_ID,
123
		    PROCESS_ID,
124
		    STATUS,
125
		    ROLE_USER,
126
		    BRANCH_ID,
127
			DEP_ID,
128
		    CHECKER_ID,
129
		    APPROVE_DT,
130
		    PARENT_PROCESS_ID,
131
		    IS_LEAF,
132
		    COST_ID,
133
		    DVDM_ID,
134
		    NOTES,
135
		    IS_HAS_CHILD
136
		)
137
		VALUES
138
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
139
		    'APPNEW',        -- PROCESS_ID - varchar(10)
140
		    'C',        -- STATUS - varchar(5)
141
		    'GDDV',        -- ROLE_USER - varchar(50)
142
		    @BRANCH_CREATE,  
143
			@DEP_CREATE,      -- BRANCH_ID - varchar(15)
144
		    '',        -- CHECKER_ID - varchar(15)
145
		    NULL,      -- APPROVE_DT - datetime
146
		    '',        -- PARENT_PROCESS_ID - varchar(10)
147
		    'N',        -- IS_LEAF - varchar(1)
148
		    '',        -- COST_ID - varchar(15)
149
		    '',        -- DVDM_ID - varchar(15)
150
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
151
		    NULL       -- IS_HAS_CHILD - bit
152
		 )
153
	END	
154
	INSERT INTO dbo.PL_PROCESS
155
					(
156
					    REQ_ID,
157
					    PROCESS_ID,
158
					    CHECKER_ID,
159
					    APPROVE_DT,
160
					    PROCESS_DESC,
161
					    NOTES
162
					)
163
					VALUES
164
					(   @p_REQ_ID,        -- REQ_ID - varchar(15)
165
					    --@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
166
						'SEND',
167
					    @p_TLNAME,        -- CHECKER_ID - varchar(15)
168
					    GETDATE(), -- APPROVE_DT - datetime
169
					    N'Nhân viên tạo phiếu và gửi phê duyệt thành công' ,       -- PROCESS_DESC - nvarchar(1000)
170
					    N'Nhân viên gửi phê duyệt '        -- NOTES - nvarchar(1000)
171
					 )
172
	
173
		IF @@Error <> 0 GOTO ABORT
174
COMMIT TRANSACTION
175
SELECT '0' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
176
RETURN '0'
177
ABORT:
178
BEGIN
179
		ROLLBACK TRANSACTION
180
		SELECT '-1' as Result,'' REQ_CODE,''REQ_ID, '' ErrorDesc
181
		RETURN '-1'
182
End
183

    
184
¿
185
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_Ins]
186
@p_REQ_CODE	nvarchar(100)  = NULL,
187
@p_REQ_NAME	nvarchar(200)  = NULL,
188
@p_REQ_DT	DATETIME = NULL,
189
@p_REQ_TYPE	int = NULL,
190
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
191
@p_REQ_REASON NVARCHAR(500)=NULL,
192
@p_PL_REQ_ID VARCHAR(15),
193
@p_TOTAL_AMT	decimal = NULL,
194
@p_NOTES	nvarchar(1000)  = NULL,
195
@p_RECORD_STATUS	varchar(1)  = NULL,
196
@p_MAKER_ID	varchar(12)  = NULL,
197
@p_CREATE_DT	DATETIME = NULL,
198
@p_AUTH_STATUS	varchar(50)  = NULL,
199
@p_CHECKER_ID	varchar(12)  = NULL,
200
@p_APPROVE_DT	DATETIME = NULL,
201
@p_BRANCH_DO VARCHAR(15)=NULL,
202
@p_BRANCH_CREATE VARCHAR(15)=NULL,
203
@p_DEP_CREATE VARCHAR(20)=NULL,
204
@p_REQ_PARENT_ID VARCHAR(20)=NULL,
205
@p_USER_REQUEST VARCHAR(15)=NULL,
206
@p_SIGN_USER VARCHAR(15)=NULL,
207
@p_ListGood XML
208
AS
209
	
210

    
211
	IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE)
212
	BEGIN
213
		SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
214
		RETURN '0'
215
	END
216
	DECLARE @sErrorCode VARCHAR(20)
217
		
218

    
219
	
220
  BEGIN TRANSACTION
221
  
222
	exec [TR_CODE_GenKey] 'TR_REQUEST_DOC', '','PUR', @p_REQ_CODE out
223

    
224
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
225
	BEGIN
226
		SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắt buộc nhập' ErrorDesc 
227
		RETURN '0'
228
	END
229
		--insert master				
230
		DECLARE @l_REQ_ID VARCHAR(15)
231
		EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC', @l_REQ_ID out
232
		IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
233

    
234

    
235
		INSERT INTO dbo.TR_REQUEST_DOC
236
		(
237
		    REQ_ID,
238
		    REQ_CODE,
239
		    REQ_NAME,
240
		    REQ_DT,
241
		    REQ_TYPE,
242
		    REQ_REASON,
243
		    REQ_CONTENT,
244
		    PL_REQ_ID,
245
		    TOTAL_AMT,
246
		    NOTES,
247
		    RECORD_STATUS,
248
		    MAKER_ID,
249
		    CREATE_DT,
250
		    AUTH_STATUS,
251
		    CHECKER_ID,
252
		    APPROVE_DT,
253
			BRANCH_DO,
254
			PROCESS_ID,
255
			BRANCH_CREATE,
256
			USER_REQUEST,
257
			BRANCH_DVMS,
258
			DEP_CREATE,
259
			REQ_PARENT_ID,SIGN_USER
260
		)
261
		VALUES
262
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
263
		    @p_REQ_CODE,        -- REQ_CODE - varchar(100)
264
		    @p_REQ_NAME,       -- REQ_NAME - nvarchar(200)
265
			@p_REQ_DT, -- REQ_DT - datetime
266
		    @p_REQ_TYPE, 
267
			@p_REQ_REASON,        -- REQ_TYPE - int
268
		    @p_REQ_CONTENT,       -- REQ_CONTENT - nvarchar(1000)
269
		         -- REQ_REASON - nvarchar(500)
270
		    @p_PL_REQ_ID,     
271
		    @p_TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
272
		    @p_NOTES,       -- NOTES - nvarchar(1000)
273
		    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
274
		    @p_MAKER_ID,        -- MAKER_ID - varchar(12)
275
		    @p_CREATE_DT, -- CREATE_DT - datetime
276
		    'E',        -- AUTH_STATUS - varchar(50)
277
		    @p_CHECKER_ID,        -- CHECKER_ID - varchar(12)
278
		    @p_APPROVE_DT,  -- APPROVE_DT - datetime
279
		    @p_BRANCH_DO,
280
			'',   -- BRANCH_ID - varchar(15)
281
			@p_BRANCH_CREATE,
282
			@p_USER_REQUEST,
283
			@p_BRANCH_CREATE,
284
			@p_DEP_CREATE,
285
			@p_REQ_PARENT_ID,@p_SIGN_USER
286
			)
287
		IF @@Error <> 0 GOTO ABORT
288
		--Insert into TABLE PL_REQUEST_DOC_DT
289

    
290
		DECLARE @lstTRDT TABLE(
291
			PL_REQDT_ID	varchar(15)  ,
292
			GOODS_ID	varchar(15)  ,
293
			[DESCRIPTION] nvarchar(500),
294
			QUANTITY	decimal(18,0)  ,
295
			PRICE	decimal(18,2)  ,
296
			TOTAL_AMT	decimal(18,2),	
297
			NOTES	nvarchar(1000),
298
			REQ_DT DATETIME,
299
			AMORT_MONTH DECIMAL(18,2),
300
			TRADE_TYPE_ID varchar(15),
301
			SUP_ID varchar(15),
302
			HH_ID VARCHAR(20),
303
			CURRENCY	nvarchar(50),
304
			EXCHANGE_RATE	decimal(18, 2),
305
			TAXES	decimal(18, 2),
306
			DVDM_ID  VARCHAR(20)
307
		)
308

    
309

    
310
		Declare @hdoc INT
311
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
312

    
313
		INSERT INTO @lstTRDT
314
		SELECT *
315
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
316
		WITH 
317
		(
318
			PL_REQDT_ID	varchar(15)  ,
319
			GOODS_ID	varchar(15)  ,
320
			[DESCRIPTION] nvarchar(500),
321
			QUANTITY	decimal(18,0)  ,
322
			PRICE	decimal(18,2)  ,
323
			TOTAL_AMT	decimal(18,2),	
324
			NOTES	nvarchar(1000),
325
			REQ_DT DATETIME,
326
			AMORT_MONTH DECIMAL(18,2),
327
			TRADE_TYPE_ID varchar(15),
328
			SUP_ID varchar(15),
329
			HH_ID VARCHAR(20),
330
			CURRENCY	nvarchar(50),
331
			EXCHANGE_RATE	decimal(18, 2),
332
			TAXES	decimal(18, 2),
333
			DVDM_ID  VARCHAR(20)
334
		)
335

    
336

    
337

    
338
		DECLARE ListGoods  CURSOR FOR
339
		SELECT * FROM @lstTRDT
340
		OPEN ListGoods
341

    
342
		Declare 
343
		@PL_REQDT_ID	varchar(15),
344
		@SUP_ID	varchar(15),
345
		@GOODS_ID	varchar(15),
346
		@DESCRIPTION nvarchar(500),
347
		@QUANTITY	decimal(18),
348
		@PRICE	decimal(18),
349
		@TOTAL_AMT	decimal(18),		
350
		@NOTES	nvarchar(1000),
351
		@TRADE_TYPE_ID varchar(15),
352
		@AMORT_MONTH DECIMAL(18,2),
353
		@RED_DT DATETIME,
354
		@HH_ID VARCHAR(20),
355
		@CURRENCY	nvarchar(50),
356
		@EXCHANGE_RATE	decimal(18, 2),
357
		@DVDM_ID VARCHAR(20),
358
		@TAXES	decimal(18, 2)
359

    
360
		FETCH NEXT FROM ListGoods INTO @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
361
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID
362
		WHILE @@FETCH_STATUS = 0	
363
		BEGIN
364
			DECLARE @l_REQDT_ID VARCHAR(15)
365
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_DT', @l_REQDT_ID out
366
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
367
			INSERT INTO dbo.TR_REQUEST_DOC_DT
368
			(
369
			    REQDT_ID,
370
			    REQ_DOC_ID,
371
			    PL_REQDT_ID,
372
			    GD_ID,
373
				TRAN_TYPE_ID,
374
				SUP_ID,
375
			    DESCRIPTION,
376
			    QUANTITY,
377
			    PRICE,
378
				PRICE_ETM,
379
			    TOTAL_AMT,
380
				TOTAL_AMT_ETM,
381
			    REQ_DT,
382
			    AMORT_MONTH,
383
			    NOTES,
384
			    RECORD_STATUS,
385
			    MAKER_ID,
386
			    CREATE_DT,
387
			    AUTH_STATUS,
388
			    CHECKER_ID,
389
			    APPROVE_DT,
390
				HANGHOA_ID,
391
				CURRENCY,
392
				EXCHANGE_RATE,
393
				TAXES,
394
				DVDM_ID
395
			)	
396
			VALUES
397
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
398
			    @l_REQ_ID,        -- REQ_ID - varchar(15)
399
			    @PL_REQDT_ID,        -- PLAN_ID - varchar(15)
400
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
401
			    @TRADE_TYPE_ID,
402
				@SUP_ID,       -- NAME - nvarchar(200)
403
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
404
				@QUANTITY,      -- QUANTITY - decimal(18, 0)
405
			    @PRICE,
406
				@PRICE,     -- PRICE - decimal(18, 0)
407
			    @TOTAL_AMT,
408
				@TOTAL_AMT,
409
				@RED_DT,
410
				@AMORT_MONTH,
411
				@NOTES,  -- TOTAL_AMT - decimal(18, 0)
412
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
413
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
414
			    @p_CREATE_DT, -- CREATE_DT - datetime
415
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
416
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
417
			    @p_APPROVE_DT,
418
				@HH_ID,
419
				@CURRENCY,
420
				@EXCHANGE_RATE,
421
				@TAXES,
422
				@DVDM_ID-- APPROVE_DT - datetime
423
			)
424
			IF @@ERROR <> 0 GOTO ABORT1
425
		-- next Group_Id
426
			FETCH NEXT FROM ListGoods INTO @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
427
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID
428
		END
429
		CLOSE ListGoods
430
		DEALLOCATE ListGoods
431

    
432

    
433
		IF @@Error <> 0 GOTO ABORT
434
		---
435
		UPDATE TR_REQUEST_DOC_DT SET TOTAL_AMT = PRICE*QUANTITY*EXCHANGE_RATE + TAXES*EXCHANGE_RATE, TOTAL_AMT_ETM = PRICE*QUANTITY*EXCHANGE_RATE + TAXES*EXCHANGE_RATE WHERE REQ_DOC_ID =@l_REQ_ID
436
		UPDATE TR_REQUEST_DOC SET TOTAL_AMT =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@l_REQ_ID) WHERE REQ_ID =@l_REQ_ID
437
		---
438
		DECLARE @COST_ID VARCHAR(20)
439

    
440
		DECLARE lstCostCenter CURSOR FOR
441
		SELECT COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_PL_REQ_ID
442
		GROUP BY COST_ID
443
		OPEN lstCostCenter
444
		FETCH NEXT FROM lstCostCenter INTO @COST_ID
445
		WHILE @@FETCH_STATUS=0
446
		BEGIN
447

    
448

    
449
			DECLARE @l_REQ_COST_ID VARCHAR(15)
450
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
451
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
452
				INSERT INTO dbo.TR_REQUEST_COSTCENTER
453
				(
454
					REQ_COST_ID,
455
					COST_ID,
456
					REQ_ID,
457
					NOTES,
458
					AUTH_STATUS,
459
					MAKER_ID,
460
					CREATE_DT,
461
					CHECKER_ID,
462
					APPROVE_DT
463
				)
464
				VALUES
465
				(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
466
					@COST_ID,        -- COST_ID - varchar(15)
467
					@l_REQ_ID,        -- REQ_ID - varchar(15)
468
					N'',       -- NOTES - nvarchar(500)
469
					'',        -- AUTH_STATUS - varchar(1)
470
					@p_MAKER_ID,        -- MAKER_ID - varchar(15)
471
					NULL, -- CREATE_DT - datetime
472
					'',        -- CHECKER_ID - varchar(15)
473
					NULL  -- APPROVE_DT - datetime
474
					)
475
				FETCH NEXT FROM lstCostCenter INTO @COST_ID
476
		END 
477
		CLOSE lstCostCenter
478
		DEALLOCATE lstCostCenter
479
		IF @@Error <> 0 GOTO ABORT
480

    
481
		
482
		INSERT INTO dbo.PL_REQUEST_PROCESS
483
		(
484
		    REQ_ID,
485
		    PROCESS_ID,
486
		    STATUS,
487
		    ROLE_USER,
488
		    BRANCH_ID,
489
		    CHECKER_ID,
490
		    APPROVE_DT,
491
		    PARENT_PROCESS_ID,
492
		    IS_LEAF,
493
		    COST_ID,
494
		    DVDM_ID,
495
		    NOTES,
496
		    IS_HAS_CHILD
497
		)
498
		VALUES
499
		(   @l_REQ_ID,        -- REQ_ID - varchar(15)
500
		    'NEW',        -- PROCESS_ID - varchar(10)
501
		    'C',        -- STATUS - varchar(5)
502
		    '',        -- ROLE_USER - varchar(50)
503
		    '',        -- BRANCH_ID - varchar(15)
504
		    '',        -- CHECKER_ID - varchar(15)
505
		    NULL,      -- APPROVE_DT - datetime
506
		    '',        -- PARENT_PROCESS_ID - varchar(10)
507
		    'N',        -- IS_LEAF - varchar(1)
508
		    '',        -- COST_ID - varchar(15)
509
		    '',        -- DVDM_ID - varchar(15)
510
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
511
		    NULL       -- IS_HAS_CHILD - bit
512
		    )
513
		
514
COMMIT TRANSACTION
515
SELECT '0' as Result, @l_REQ_ID  REQ_ID, @p_REQ_CODE AS ErrorDesc
516
RETURN '0'
517
ABORT:
518
BEGIN
519
		ROLLBACK TRANSACTION
520
		SELECT '-1' AS RESULT
521
		RETURN '-1'
522
End
523
ABORT1:
524
BEGIN
525
		CLOSE ListGoods
526
		DEALLOCATE ListGoods
527
		ROLLBACK TRANSACTION
528
		SELECT '-1' AS RESULT
529
		RETURN '-1'
530
End
531

    
532
¿
533
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_Upd]
534
@p_REQ_ID varchar(15),
535
@p_REQ_CODE	nvarchar(100)  = NULL,
536
@p_REQ_NAME	nvarchar(200)  = NULL,
537
@p_REQ_DT	DATETIME = NULL,
538
@p_REQ_TYPE	int = NULL,
539
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
540
@p_REQ_REASON NVARCHAR(500)=NULL,
541
@p_PL_REQ_ID VARCHAR(15),
542
@p_TOTAL_AMT	decimal = NULL,
543
@p_NOTES	nvarchar(1000)  = NULL,
544
@p_RECORD_STATUS	varchar(1)  = NULL,
545
@p_MAKER_ID	varchar(12)  = NULL,
546
@p_CREATE_DT	DATETIME = NULL,
547
@p_AUTH_STATUS	varchar(50)  = NULL,
548
@p_CHECKER_ID	varchar(12)  = NULL,
549
@p_APPROVE_DT	DATETIME = NULL,
550
@p_BRANCH_DO VARCHAR(15)=NULL,
551
@p_BRANCH_CREATE VARCHAR(15)=NULL,
552
@p_DEP_CREATE VARCHAR(20)=NULL,
553
@p_REQ_PARENT_ID VARCHAR(20)=NULL,
554
@p_USER_REQUEST VARCHAR(15)=NULL,
555
@p_SIGN_USER VARCHAR(15)=NULL,
556
@p_ListGood XML
557
AS
558

    
559
	IF(@p_REQ_CODE IS NULL OR @p_REQ_CODE ='')
560
	BEGIN
561
		SELECT 'REQ-00001' Result, '' REQ_ID, N'Mã phiếu yêu cầu bắc buộc nhập' ErrorDesc 
562
		RETURN '0'
563
	END
564

    
565
	IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
566
	BEGIN
567
		SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
568
		RETURN '0'
569
	END
570
	DECLARE @sErrorCode VARCHAR(20)
571
		
572

    
573
	
574
  BEGIN TRANSACTION
575

    
576
		UPDATE dbo.TR_REQUEST_DOC
577
		SET REQ_CODE=@p_REQ_CODE,REQ_NAME=@p_REQ_NAME,REQ_DT=@p_REQ_DT,REQ_CONTENT=@p_REQ_CONTENT,REQ_REASON=@p_REQ_REASON,
578
		RECORD_STATUS=@p_RECORD_STATUS,PL_REQ_ID=@p_PL_REQ_ID,MAKER_ID=@p_MAKER_ID,TOTAL_AMT=@p_TOTAL_AMT,NOTES=@p_NOTES,CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT,USER_REQUEST=@p_USER_REQUEST,DEP_CREATE=@p_DEP_CREATE,REQ_PARENT_ID=@p_REQ_PARENT_ID,
579
		SIGN_USER =@p_SIGN_USER
580
		WHERE REQ_ID=@p_REQ_ID
581
		IF @@Error <> 0 GOTO ABORT
582

    
583

    
584
		DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID
585
		DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
586
		--Insert into TABLE PL_REQUEST_DOC_DT
587

    
588
		DECLARE @lstTRDT TABLE(
589
			REQDT_ID 	varchar(15)  ,
590
			PL_REQDT_ID	varchar(15)  ,
591
			GOODS_ID	varchar(15)  ,
592
			[DESCRIPTION] nvarchar(500),
593
			QUANTITY	decimal(18,0)  ,
594
			PRICE	decimal(18,2)  ,
595
			TOTAL_AMT	decimal(18,2),	
596
			NOTES	nvarchar(1000),
597
			REQ_DT DATETIME,
598
			AMORT_MONTH DECIMAL(18,2),
599
			TRADE_TYPE_ID varchar(15),
600
			SUP_ID varchar(15),
601
			HH_ID VARCHAR(20),
602
			CURRENCY	nvarchar(50),
603
			EXCHANGE_RATE	decimal(18, 2),
604
			TAXES	decimal(18, 2),
605
			DVDM_ID  VARCHAR(20)
606
		)
607

    
608

    
609
		Declare @hdoc INT
610
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
611

    
612
		INSERT INTO @lstTRDT
613
		SELECT *
614
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
615
		WITH 
616
		(
617
			REQDT_ID 	varchar(15)  ,
618
			PL_REQDT_ID	varchar(15)  ,
619
			GOODS_ID	varchar(15)  ,
620
			[DESCRIPTION] nvarchar(500),
621
			QUANTITY	decimal(18,0)  ,
622
			PRICE	decimal(18,2)  ,
623
			TOTAL_AMT	decimal(18,2),	
624
			NOTES	nvarchar(1000),
625
			REQ_DT DATETIME,
626
			AMORT_MONTH DECIMAL(18,2),
627
			TRADE_TYPE_ID varchar(15),
628
			SUP_ID varchar(15),
629
			HH_ID VARCHAR(20),
630
			CURRENCY	nvarchar(50),
631
			EXCHANGE_RATE	decimal(18, 2),
632
			TAXES	decimal(18, 2),
633
			DVDM_ID  VARCHAR(20)
634
			)
635
		DECLARE ListGoods  CURSOR FOR
636
		SELECT * FROM @lstTRDT
637
		OPEN ListGoods
638

    
639
		Declare 
640
		@REQDT_ID 	varchar(15)  ,
641
		@PL_REQDT_ID	varchar(15),
642
		@SUP_ID	varchar(15),
643
		@GOODS_ID	varchar(15),
644
		@DESCRIPTION nvarchar(500),
645
		@QUANTITY	decimal(18),
646
		@PRICE	decimal(18),
647
		@TOTAL_AMT	decimal(18),		
648
		@NOTES	nvarchar(1000),
649
		@TRADE_TYPE_ID varchar(15),
650
		@AMORT_MONTH DECIMAL(18,2),
651
		@RED_DT DATETIME,
652
		@HH_ID VARCHAR(20),
653
		@CURRENCY	nvarchar(50),
654
		@EXCHANGE_RATE	decimal(18, 2),
655
		@TAXES	decimal(18, 2),
656
		@DVDM_ID VARCHAR(20)
657

    
658
		FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
659
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID
660
		WHILE @@FETCH_STATUS = 0	
661
		BEGIN
662
			
663
			DECLARE @l_REQDT_ID VARCHAR(15)
664
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_DT', @l_REQDT_ID out
665
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
666
	
667
		
668
			INSERT INTO dbo.TR_REQUEST_DOC_DT
669
			(
670
			    REQDT_ID,
671
			    REQ_DOC_ID,
672
			    PL_REQDT_ID,
673
			    GD_ID,
674
				TRAN_TYPE_ID,
675
				SUP_ID,
676
			    DESCRIPTION,
677
			    QUANTITY,
678
			    PRICE,
679
				PRICE_ETM,
680
			    TOTAL_AMT,
681
				TOTAL_AMT_ETM,
682
			    REQ_DT,
683
			    AMORT_MONTH,
684
			    NOTES,
685
			    RECORD_STATUS,
686
			    MAKER_ID,
687
			    CREATE_DT,
688
			    AUTH_STATUS,
689
			    CHECKER_ID,
690
			    APPROVE_DT,
691
				HANGHOA_ID,
692
				CURRENCY,
693
				EXCHANGE_RATE,
694
				TAXES,
695
				DVDM_ID
696
			)	
697
			VALUES
698
			(   @l_REQDT_ID,        -- REQDT_ID - varchar(15)
699
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
700
			    @PL_REQDT_ID,        -- PLAN_ID - varchar(15)
701
			    @GOODS_ID,        -- GOODS_ID - varchar(15)
702
			    @TRADE_TYPE_ID,
703
				@SUP_ID,       -- NAME - nvarchar(200)
704
			    @DESCRIPTION,       -- DESCRIPTION - nvarchar(500)
705
				@QUANTITY,      -- QUANTITY - decimal(18, 0)
706
			    @PRICE,
707
				@PRICE,-- PRICE - decimal(18, 0)
708
			    @TOTAL_AMT,   
709
				@TOTAL_AMT, 
710
				@RED_DT,
711
				@AMORT_MONTH,
712
				@NOTES,  -- TOTAL_AMT - decimal(18, 0)
713
			    @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
714
			    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
715
			    @p_CREATE_DT, -- CREATE_DT - datetime
716
			    @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(50)
717
			    @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
718
			    @p_APPROVE_DT,
719
				@HH_ID,
720
				@CURRENCY,
721
				@EXCHANGE_RATE,
722
				@TAXES,
723
				@DVDM_ID  -- APPROVE_DT - datetime
724
			)
725
			IF @@ERROR <> 0 GOTO ABORT1
726
		-- next Group_Id
727
		FETCH NEXT FROM ListGoods INTO @REQDT_ID,@PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
728
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@HH_ID,@CURRENCY,@EXCHANGE_RATE,@TAXES,@DVDM_ID
729
		END
730
		CLOSE ListGoods
731
		DEALLOCATE ListGoods
732
		IF @@Error <> 0 GOTO ABORT
733
		---
734
		UPDATE TR_REQUEST_DOC_DT SET TOTAL_AMT = PRICE*QUANTITY*EXCHANGE_RATE + TAXES*EXCHANGE_RATE, TOTAL_AMT_ETM = PRICE*QUANTITY*EXCHANGE_RATE + TAXES*EXCHANGE_RATE WHERE REQ_DOC_ID =@p_REQ_ID
735
		UPDATE TR_REQUEST_DOC SET TOTAL_AMT =(SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID) WHERE REQ_ID =@p_REQ_ID
736
		---
737
		DECLARE @COST_ID VARCHAR(20)
738

    
739
		DECLARE lstCostCenter CURSOR FOR
740
		SELECT COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_PL_REQ_ID
741
		GROUP BY COST_ID
742
		OPEN lstCostCenter
743
		FETCH NEXT FROM lstCostCenter INTO @COST_ID
744
		WHILE @@FETCH_STATUS=0
745
		BEGIN
746

    
747

    
748
			DECLARE @l_REQ_COST_ID VARCHAR(15)
749
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
750
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
751
				INSERT INTO dbo.TR_REQUEST_COSTCENTER
752
				(
753
					REQ_COST_ID,
754
					COST_ID,
755
					REQ_ID,
756
					NOTES,
757
					AUTH_STATUS,
758
					MAKER_ID,
759
					CREATE_DT,
760
					CHECKER_ID,
761
					APPROVE_DT
762
				)
763
				VALUES
764
				(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
765
					@COST_ID,        -- COST_ID - varchar(15)
766
					@p_REQ_ID,        -- REQ_ID - varchar(15)
767
					N'',       -- NOTES - nvarchar(500)
768
					'',        -- AUTH_STATUS - varchar(1)
769
					@p_MAKER_ID,        -- MAKER_ID - varchar(15)
770
					NULL, -- CREATE_DT - datetime
771
					'',        -- CHECKER_ID - varchar(15)
772
					NULL  -- APPROVE_DT - datetime
773
					)
774
				FETCH NEXT FROM lstCostCenter INTO @COST_ID
775
		END 
776
		CLOSE lstCostCenter
777
		DEALLOCATE lstCostCenter
778
		IF @@Error <> 0 GOTO ABORT	
779
COMMIT TRANSACTION
780
SELECT '0' as Result, @p_REQ_ID  REQ_ID, '' ErrorDesc
781
RETURN '0'
782
ABORT:
783
BEGIN
784
		ROLLBACK TRANSACTION
785
		SELECT '-1' AS RESULT
786
		RETURN '-1'
787
End
788
ABORT1:
789
BEGIN
790
		CLOSE ListGoods
791
		DEALLOCATE ListGoods
792
		ROLLBACK TRANSACTION
793
		SELECT '-1' AS RESULT
794
		RETURN '-1'
795
End
796

    
797

    
798