Project

General

Profile

FILE 1.txt

Truong Nguyen Vu, 09/29/2020 04:09 PM

 
1

    
2
ALTER PROCEDURE [dbo].[TR_REQ_PROCESS_CHILD_App]
3
@p_REQ_ID VARCHAR(20),
4
@p_PROCESS_ID VARCHAR(20),
5
@p_TLNAME VARCHAR(20),
6
@p_MAKER_ID VARCHAR(20),
7
@p_TYPE_JOB VARCHAR(20),
8
@p_PROCESS_DES NVARCHAR(500),
9
@p_REF_ID INT,
10
@p_XMLDATA XML
11
AS
12
BEGIN TRANSACTION
13
-- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC
14
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
15
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
16
	BEGIN
17
		ROLLBACK TRANSACTION
18
		SELECT -1 Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc
19
		RETURN -1
20
END
21
Declare @hdoc INT
22
	EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA
23
	DECLARE @lstFILE TABLE(
24
	ATTACH_ID  VARCHAR(20),
25
	IS_READ	BIT 
26
	)
27
	INSERT INTO @lstFILE
28
	SELECT *
29
	FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2)
30
	WITH 
31
	(
32
		ATTACH_ID  VARCHAR(20),
33
		IS_READ	BIT  
34
	)
35

    
36
IF(EXISTS(SELECT TR_REQUEST_DOC_FILE_ID FROM dbo.TR_REQUEST_DOC_FILE WHERE REQ_ID=@p_REQ_ID AND IS_VIEW=1
37
 AND EXISTS(SELECT ATTACH_ID FROM @lstFILE WHERE [@lstFILE].ATTACH_ID=TR_REQUEST_DOC_FILE.ATTACH_ID AND IS_READ=0)))
38
 BEGIN
39
		ROLLBACK TRANSACTION
40
			SELECT -1 Result, N'File đinh kèm bắt buộc đọc' ErrorDesc 
41
			RETURN 0
42
 END
43
DECLARE @LEVEL INT,	@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
44
			
45
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
46
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
47

    
48
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
49
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
50
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
51
		ORDER BY LEVEL_JOB DESC),0)
52

    
53
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
54
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
55
		
56
			SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)
57
			SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
58
			
59
		INSERT INTO dbo.PL_PROCESS
60
				(
61
					REQ_ID,
62
					PROCESS_ID,
63
					CHECKER_ID,
64
					APPROVE_DT,
65
					PROCESS_DESC,NOTES
66
				)
67
				VALUES
68
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
69
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
70
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
71
					GETDATE() , -- APPROVE_DT - datetime
72
					@p_PROCESS_DES ,
73
					@TYPE_JOB_NAME+ N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
74
				)
75
		
76

    
77
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
78
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
79
		BEGIN
80
				IF(@p_PROCESS_ID='DMMS')
81
				BEGIN
82
				DECLARE @PROCESS_PARENT VARCHAR(20)
83
				SET @PROCESS_PARENT='DMMS'
84

    
85
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE(),NOTES=N'Đầu mối mua sắm đã phê duyệt' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_PROCESS_ID
86
		
87
				DECLARE @LIMIT_VALUE_KT DECIMAL(18,0),@ROLE_KT VARCHAR(20),@DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(200),@TOTAL_AMT_REQ DECIMAL(18,0)
88

    
89
				SET @LIMIT_VALUE_KT = (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
90
				SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
91
				
92
				SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
93
				
94
				SET @TOTAL_AMT_REQ =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT 
95
				WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' OR NOTES ='CDT'))
96
				IF(@TOTAL_AMT_REQ > @LIMIT_VALUE_KT)
97
				BEGIN
98
					DECLARE @l_REQ_COST_ID VARCHAR(15)
99
					EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
100
					INSERT dbo.TR_REQUEST_COSTCENTER
101
					(
102
					    REQ_COST_ID,
103
					    COST_ID,
104
					    REQ_ID,
105
					    NOTES,
106
					    AUTH_STATUS,
107
					    MAKER_ID,
108
					    CREATE_DT,
109
					    CHECKER_ID,
110
					    APPROVE_DT
111
					)
112
					VALUES
113
					(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
114
						@DVDM_KT,        -- COST_ID - varchar(15)			    
115
						@p_REQ_ID,        -- REQ_ID - varchar(15)
116
					    N'',       -- NOTES - nvarchar(500)
117
					    'U',        -- AUTH_STATUS - varchar(1)
118
					    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
119
					    GETDATE(), -- CREATE_DT - datetime
120
					    '',        -- CHECKER_ID - varchar(15)
121
					   NULL -- APPROVE_DT - datetime
122
					    )
123
				END
124
				IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID))
125
					BEGIN
126
					DECLARE @COST_ID VARCHAR(20)
127
					DECLARE lstCostCenter CURSOR FOR
128
					SELECT COST_ID  FROM dbo.TR_REQUEST_COSTCENTER
129
					 WHERE REQ_ID=@p_REQ_ID
130
					 OPEN lstCostCenter
131
		 			FETCH NEXT FROM lstCostCenter INTO @COST_ID
132
					WHILE @@FETCH_STATUS = 0 
133
					BEGIN 
134

    
135
					IF(@COST_ID=@DVDM_KT)
136
					BEGIN
137
						INSERT INTO dbo.PL_REQUEST_PROCESS
138
						(
139
							REQ_ID,
140
							PROCESS_ID,
141
							STATUS,
142
							ROLE_USER,
143
							BRANCH_ID,
144
							CHECKER_ID,
145
							APPROVE_DT,
146
							PARENT_PROCESS_ID,
147
							IS_LEAF,
148
							COST_ID,
149
							DVDM_ID,
150
							NOTES,
151
							IS_HAS_CHILD
152
						)
153
						VALUES
154
						(   @p_REQ_ID,        -- REQ_ID - varchar(15)
155
							'DVCM',        -- PROCESS_ID - varchar(10)
156
							'U',        -- STATUS - varchar(5)
157
							'KSV',        -- ROLE_USER - varchar(50)
158
							'',        -- BRANCH_ID - varchar(15)
159
							'',        -- CHECKER_ID - varchar(15)
160
							NULL, -- APPROVE_DT - datetime
161
						   @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
162
							'N',        -- IS_LEAF - varchar(1)
163
							'',        -- COST_ID - varchar(15)
164
							@COST_ID ,
165
							N'Chờ đơn vị chuyên môn xác nhận' ,
166
							1       -- DVDM_ID - varchar(15)
167
						 )
168
					END
169
					ELSE
170
					BEGIN
171
				    INSERT INTO dbo.PL_REQUEST_PROCESS
172
				    (
173
				        REQ_ID,
174
				        PROCESS_ID,
175
				        STATUS,
176
				        ROLE_USER,
177
				        BRANCH_ID,
178
				        CHECKER_ID,
179
				        APPROVE_DT,
180
				        PARENT_PROCESS_ID,
181
				        IS_LEAF,
182
				        COST_ID,
183
				        DVDM_ID,
184
						NOTES,
185
						IS_HAS_CHILD
186
				    )
187
				    VALUES
188
				    (   @p_REQ_ID,        -- REQ_ID - varchar(15)
189
				        'DVCM',        -- PROCESS_ID - varchar(10)
190
				        'U',        -- STATUS - varchar(5)
191
				        'GDDV',        -- ROLE_USER - varchar(50)
192
				        '',        -- BRANCH_ID - varchar(15)
193
				        '',        -- CHECKER_ID - varchar(15)
194
						NULL, -- APPROVE_DT - datetime
195
				       @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
196
				        'N',        -- IS_LEAF - varchar(1)
197
				        '',        -- COST_ID - varchar(15)
198
				        @COST_ID ,
199
						N'Chờ đơn vị chuyên môn xác nhận' ,
200
						1       -- DVDM_ID - varchar(15)
201
				     )
202
					 END
203
					FETCH NEXT FROM lstCostCenter INTO @COST_ID
204
					END
205
					CLOSE lstCostCenter
206
					DEALLOCATE lstCostCenter
207
					
208
				END
209
				DECLARE @TOTAL_AMT DECIMAL(18,2),@ROLE_PDTH VARCHAR(20)	,@LIMIT_VALUE DECIMAL(18,2)	,@IS_NEXT BIT,@PROCESS_ID  VARCHAR(5),@ROLE_ID VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTES NVARCHAR(50),@DVDM_NAME NVARCHAR(200)
210

    
211
				
212

    
213

    
214
				IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
215
					SET @PROCESS_PARENT='DVCM'
216
				
217
				--SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV'))
218
				SET @IS_NEXT=1
219
				IF(@IS_NEXT =1)
220
				BEGIN
221
				SET @DVDM_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
222
				SET @ROLE_ID=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
223
				SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@ROLE_ID)
224
				SET @DVDM_NAME= (SELECT DVDM_NAME FROM dbo.CM_DVDM WHERE DVDM_ID=@DVDM_ID)
225
				SET @NOTES = @NOTES + ' ' + @DVDM_NAME
226

    
227
				INSERT INTO dbo.PL_REQUEST_PROCESS
228
					(
229
					    REQ_ID,
230
					    PROCESS_ID,
231
					    STATUS,
232
					    ROLE_USER,
233
					    BRANCH_ID,
234
					    CHECKER_ID,
235
					    APPROVE_DT,
236
					    PARENT_PROCESS_ID,
237
					    IS_LEAF,
238
					    COST_ID,
239
					    DVDM_ID,
240
					    NOTES,
241
					    IS_HAS_CHILD
242
					)
243
					VALUES
244
					(  @p_REQ_ID,        -- REQ_ID - varchar(15)
245
					   'GDK_PYC',        -- PROCESS_ID - varchar(10)
246
					    'U',        -- STATUS - varchar(5)
247
					    @ROLE_ID,        -- ROLE_USER - varchar(50)
248
					    '',        -- BRANCH_ID - varchar(15)
249
					    '',        -- CHECKER_ID - varchar(15)
250
					    NULL, -- APPROVE_DT - datetime
251
					    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
252
					    '',        -- IS_LEAF - varchar(1)
253
					    '',        -- COST_ID - varchar(15)
254
					    @DVDM_ID,        -- DVDM_ID - varchar(15)
255
					    N'Chờ ' +@NOTES+N' phê duyệt',       -- NOTES - nvarchar(500)
256
					    0       -- IS_HAS_CHILD - bit
257
					    )
258
					SET @PROCESS_PARENT= 'GDK_PYC'
259

    
260
				
261
                END
262

    
263

    
264

    
265

    
266

    
267
				INSERT INTO dbo.PL_REQUEST_PROCESS
268
				(
269
				    REQ_ID,
270
				    PROCESS_ID,
271
				    STATUS,
272
				    ROLE_USER,
273
				    BRANCH_ID,
274
				    CHECKER_ID,
275
				    APPROVE_DT,
276
				    PARENT_PROCESS_ID,
277
				    IS_LEAF,
278
				    COST_ID,
279
				    DVDM_ID,
280
				    NOTES,
281
				    IS_HAS_CHILD
282
				)
283
				VALUES
284
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
285
				    'APPROVE',        -- PROCESS_ID - varchar(10)
286
				    'U',        -- STATUS - varchar(5)
287
				    '',        -- ROLE_USER - varchar(50)
288
				    '',        -- BRANCH_ID - varchar(15)
289
				    '',        -- CHECKER_ID - varchar(15)
290
				    NULL, -- APPROVE_DT - datetime
291
				    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
292
				    'N',        -- IS_LEAF - varchar(1)
293
				    '',        -- COST_ID - varchar(15)
294
				    '',        -- DVDM_ID - varchar(15)
295
				    N'Hoàn tất',       -- NOTES - nvarchar(500)
296
				    NULL       -- IS_HAS_CHILD - bit
297
				    )
298
				DECLARE @PROCESS_NEXT_ID VARCHAR(10)
299
				SET @PROCESS_NEXT_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID)
300

    
301
				
302
				
303
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID
304
				UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT_ID WHERE REQ_ID=@p_REQ_ID
305
				
306
	END
307
				ELSE IF(@p_PROCESS_ID='DVCM')
308
				BEGIN
309

    
310
						DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@PROCESS_NEXT VARCHAR(10)
311

    
312
							SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
313
							SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
314
							SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
315
							-- LUCTV 07082020 KIEM TRA NEU ROLE KHAC ROLE GDDV THI PHAI CHUYEN ROLE THANH GDDV
316
							--IF(@ROLE_ID ='KTT')
317
							--BEGIN
318
							--	SET @ROLE_ID ='GDDV'
319
							--END
320
							SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID)
321
						
322

    
323
						UPDATE dbo.TR_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN
324
																																	dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)
325
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,
326
						APPROVE_DT=GETDATE() ,NOTES=N'Đơn vị chuyên môn xác nhận' 
327
						WHERE REQ_ID=@p_REQ_ID AND( ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))AND DVDM_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN
328
																																	dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
329
																																	WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)
330
						
331
						IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@p_PROCESS_ID AND REQ_ID=@p_REQ_ID AND STATUS='C'))
332
						BEGIN
333
						
334
										UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
335
										UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
336
						
337
						END
338
				END
339

    
340
			--IF(@PROCESS_NEXT='APPROVE')
341
			IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE PROCESS_ID ='APPROVE' AND REQ_ID =@p_REQ_ID))
342
			BEGIN
343
				DECLARE @TempTB TABLE
344
				(
345
					TOTAL_AMT DECIMAL(18,2),
346
					TRADE_ID VARCHAR(20),
347
					PLAN_ID VARCHAR(20)
348
				)
349
				INSERT INTO @TempTB			
350
				SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT 
351
				LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID
352
				WHERE TRAN_TYPE_ID  IN (SELECT TRAN_TYPE_ID FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK') AND DT.REQ_DOC_ID=@p_REQ_ID
353
				GROUP BY	PLDT.TRADE_ID,PLDT.PLAN_ID
354
				UPDATE dbo.PL_TRADEDETAIL SET AMT_EXE =AMT_EXE + (SELECT TOTAL_AMT FROM @TempTB WHERE [@TempTB].TRADE_ID=PL_TRADEDETAIL.TRADE_ID AND PL_TRADEDETAIL.PLAN_ID=[@TempTB].PLAN_ID)
355
				IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND  TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK')))
356
					EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15)
357
				
358
			END
359
		END
360
				
361
		IF @@Error <> 0 GOTO ABORT
362
COMMIT TRANSACTION
363
SELECT 0 as Result, '' ErrorDesc
364
RETURN 0
365
ABORT:
366
BEGIN
367
		ROLLBACK TRANSACTION
368
		SELECT -1 as Result, '' ErrorDesc
369
		RETURN -1
370
End
371

    
372

    
373

    
374

    
375

    
376