Project

General

Profile

UPDATE_DMMS_CHILD_APP.txt

Truong Nguyen Vu, 08/24/2020 09:08 AM

 
1
USE [gAMSPro_VietcapitalBank_v2_TEST]
2
GO
3
/****** Object:  StoredProcedure [dbo].[TR_REQ_PROCESS_CHILD_App]    Script Date: 24-Aug-20 09:05:46 ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
ALTER PROCEDURE [dbo].[TR_REQ_PROCESS_CHILD_App]
9
@p_REQ_ID VARCHAR(20),
10
@p_PROCESS_ID VARCHAR(20),
11
@p_TLNAME VARCHAR(20),
12
@p_MAKER_ID VARCHAR(20),
13
@p_TYPE_JOB VARCHAR(20),
14
@p_PROCESS_DES NVARCHAR(500),
15
@p_REF_ID INT,
16
@p_XMLDATA XML
17
AS
18
BEGIN TRANSACTION
19
-- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC
20
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'))
21
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
22
	BEGIN
23
		ROLLBACK TRANSACTION
24
		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
25
		RETURN -1
26
END
27
Declare @hdoc INT
28
	EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA
29
	DECLARE @lstFILE TABLE(
30
	ATTACH_ID  VARCHAR(20),
31
	IS_READ	BIT 
32
	)
33
	INSERT INTO @lstFILE
34
	SELECT *
35
	FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2)
36
	WITH 
37
	(
38
		ATTACH_ID  VARCHAR(20),
39
		IS_READ	BIT  
40
	)
41

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

    
54
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
55
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
56
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
57
		ORDER BY LEVEL_JOB DESC),0)
58

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

    
83
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
84
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
85
		BEGIN
86
				IF(@p_PROCESS_ID='DMMS')
87
				BEGIN
88
				DECLARE @PROCESS_PARENT VARCHAR(20)
89
				SET @PROCESS_PARENT='DMMS'
90

    
91
				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
92
		
93
				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)
94

    
95
				SET @LIMIT_VALUE_KT = (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
96
				SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
97
				
98
				SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
99
				SET @TOTAL_AMT_REQ =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT 
100
				WHERE REQ_DOC_ID=@p_REQ_ID)
101

    
102
				IF(@TOTAL_AMT_REQ >5000000)
103
				
104
				BEGIN
105
				    
106
				
107
				SET @TOTAL_AMT_REQ =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT 
108
				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'))
109
				IF(@TOTAL_AMT_REQ > @LIMIT_VALUE_KT)
110
				BEGIN
111
					DECLARE @l_REQ_COST_ID VARCHAR(15)
112
					EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
113
					INSERT dbo.TR_REQUEST_COSTCENTER
114
					(
115
					    REQ_COST_ID,
116
					    COST_ID,
117
					    REQ_ID,
118
					    NOTES,
119
					    AUTH_STATUS,
120
					    MAKER_ID,
121
					    CREATE_DT,
122
					    CHECKER_ID,
123
					    APPROVE_DT
124
					)
125
					VALUES
126
					(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
127
						@DVDM_KT,        -- COST_ID - varchar(15)			    
128
						@p_REQ_ID,        -- REQ_ID - varchar(15)
129
					    N'',       -- NOTES - nvarchar(500)
130
					    'U',        -- AUTH_STATUS - varchar(1)
131
					    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
132
					    GETDATE(), -- CREATE_DT - datetime
133
					    '',        -- CHECKER_ID - varchar(15)
134
					   NULL -- APPROVE_DT - datetime
135
					    )
136
				END
137

    
138
				IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID))
139
					BEGIN
140
					DECLARE @COST_ID VARCHAR(20)
141
					DECLARE lstCostCenter CURSOR FOR
142
					SELECT COST_ID  FROM dbo.TR_REQUEST_COSTCENTER
143
					 WHERE REQ_ID=@p_REQ_ID
144
					 OPEN lstCostCenter
145
		 			FETCH NEXT FROM lstCostCenter INTO @COST_ID
146
					WHILE @@FETCH_STATUS = 0 
147
					BEGIN 
148
				    INSERT INTO dbo.PL_REQUEST_PROCESS
149
				    (
150
				        REQ_ID,
151
				        PROCESS_ID,
152
				        STATUS,
153
				        ROLE_USER,
154
				        BRANCH_ID,
155
				        CHECKER_ID,
156
				        APPROVE_DT,
157
				        PARENT_PROCESS_ID,
158
				        IS_LEAF,
159
				        COST_ID,
160
				        DVDM_ID,
161
						NOTES,
162
						IS_HAS_CHILD
163
				    )
164
				    VALUES
165
				    (   @p_REQ_ID,        -- REQ_ID - varchar(15)
166
				        'DVCM',        -- PROCESS_ID - varchar(10)
167
				        'U',        -- STATUS - varchar(5)
168
				        'GDDV',        -- ROLE_USER - varchar(50)
169
				        '',        -- BRANCH_ID - varchar(15)
170
				        '',        -- CHECKER_ID - varchar(15)
171
						NULL, -- APPROVE_DT - datetime
172
				       @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
173
				        'N',        -- IS_LEAF - varchar(1)
174
				        '',        -- COST_ID - varchar(15)
175
				        @COST_ID ,
176
						N'Chờ đơn vị chuyên môn xác nhận' ,
177
						1       -- DVDM_ID - varchar(15)
178
				     )
179

    
180
					FETCH NEXT FROM lstCostCenter INTO @COST_ID
181
					END
182
					CLOSE lstCostCenter
183
					DEALLOCATE lstCostCenter
184
					
185
				END
186
				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)
187

    
188
				
189

    
190

    
191
				IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
192
					SET @PROCESS_PARENT='DVCM'
193
				
194
				--SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV'))
195
				SET @IS_NEXT=1
196
				IF(@IS_NEXT =1)
197
				BEGIN
198
				SET @DVDM_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
199
				SET @ROLE_ID=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
200
				SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@ROLE_ID)
201
				SET @DVDM_NAME= (SELECT DVDM_NAME FROM dbo.CM_DVDM WHERE DVDM_ID=@DVDM_ID)
202
				SET @NOTES = @NOTES + ' ' + @DVDM_NAME
203

    
204
				INSERT INTO dbo.PL_REQUEST_PROCESS
205
					(
206
					    REQ_ID,
207
					    PROCESS_ID,
208
					    STATUS,
209
					    ROLE_USER,
210
					    BRANCH_ID,
211
					    CHECKER_ID,
212
					    APPROVE_DT,
213
					    PARENT_PROCESS_ID,
214
					    IS_LEAF,
215
					    COST_ID,
216
					    DVDM_ID,
217
					    NOTES,
218
					    IS_HAS_CHILD
219
					)
220
					VALUES
221
					(  @p_REQ_ID,        -- REQ_ID - varchar(15)
222
					   'GDK_PYC',        -- PROCESS_ID - varchar(10)
223
					    'U',        -- STATUS - varchar(5)
224
					    @ROLE_ID,        -- ROLE_USER - varchar(50)
225
					    '',        -- BRANCH_ID - varchar(15)
226
					    '',        -- CHECKER_ID - varchar(15)
227
					    NULL, -- APPROVE_DT - datetime
228
					    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
229
					    '',        -- IS_LEAF - varchar(1)
230
					    '',        -- COST_ID - varchar(15)
231
					    @DVDM_ID,        -- DVDM_ID - varchar(15)
232
					    N'Chờ ' +@NOTES+N' phê duyệt',       -- NOTES - nvarchar(500)
233
					    0       -- IS_HAS_CHILD - bit
234
					    )
235
					SET @PROCESS_PARENT= 'GDK_PYC'				
236
                END
237

    
238
				END
239

    
240

    
241

    
242
				INSERT INTO dbo.PL_REQUEST_PROCESS
243
				(
244
				    REQ_ID,
245
				    PROCESS_ID,
246
				    STATUS,
247
				    ROLE_USER,
248
				    BRANCH_ID,
249
				    CHECKER_ID,
250
				    APPROVE_DT,
251
				    PARENT_PROCESS_ID,
252
				    IS_LEAF,
253
				    COST_ID,
254
				    DVDM_ID,
255
				    NOTES,
256
				    IS_HAS_CHILD
257
				)
258
				VALUES
259
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
260
				    'APPROVE',        -- PROCESS_ID - varchar(10)
261
				    'U',        -- STATUS - varchar(5)
262
				    '',        -- ROLE_USER - varchar(50)
263
				    '',        -- BRANCH_ID - varchar(15)
264
				    '',        -- CHECKER_ID - varchar(15)
265
				    NULL, -- APPROVE_DT - datetime
266
				    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
267
				    'N',        -- IS_LEAF - varchar(1)
268
				    '',        -- COST_ID - varchar(15)
269
				    '',        -- DVDM_ID - varchar(15)
270
				    N'Hoàn tất',       -- NOTES - nvarchar(500)
271
				    NULL       -- IS_HAS_CHILD - bit
272
				    )
273
				DECLARE @PROCESS_NEXT_ID VARCHAR(10)
274
				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)
275

    
276
				
277
				
278
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID
279
				UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT_ID WHERE REQ_ID=@p_REQ_ID
280
				
281
	END
282
				ELSE IF(@p_PROCESS_ID='DVCM')
283
				BEGIN
284

    
285
						DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@PROCESS_NEXT VARCHAR(10)
286

    
287
							SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
288
							SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
289
							SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
290
							-- LUCTV 07082020 KIEM TRA NEU ROLE KHAC ROLE GDDV THI PHAI CHUYEN ROLE THANH GDDV
291
							--IF(@ROLE_ID ='KTT')
292
							--BEGIN
293
							--	SET @ROLE_ID ='GDDV'
294
							--END
295
							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)
296
						
297

    
298
						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
299
																																	dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)
300
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,
301
						APPROVE_DT=GETDATE() ,NOTES=N'Đơn vị chuyên môn xác nhận' 
302
						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
303
																																	dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
304
																																	WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID)
305
						
306
						IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@p_PROCESS_ID AND REQ_ID=@p_REQ_ID AND STATUS='C'))
307
						BEGIN
308
						
309
										UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
310
										UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
311
						
312
						END
313
				END
314

    
315
			--IF(@PROCESS_NEXT='APPROVE')
316
			IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE PROCESS_ID ='APPROVE' AND REQ_ID =@p_REQ_ID))
317
			BEGIN
318
				DECLARE @TempTB TABLE
319
				(
320
					TOTAL_AMT DECIMAL(18,2),
321
					TRADE_ID VARCHAR(20),
322
					PLAN_ID VARCHAR(20)
323
				)
324
				INSERT INTO @TempTB			
325
				SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT 
326
				LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID
327
				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
328
				GROUP BY	PLDT.TRADE_ID,PLDT.PLAN_ID
329
				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)
330
				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')))
331
					EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15)
332
				
333
			END
334
		END
335
				
336
		IF @@Error <> 0 GOTO ABORT
337
COMMIT TRANSACTION
338
SELECT 0 as Result, '' ErrorDesc
339
RETURN 0
340
ABORT:
341
BEGIN
342
		ROLLBACK TRANSACTION
343
		SELECT -1 as Result, '' ErrorDesc
344
		RETURN -1
345
End
346

    
347

    
348

    
349

    
350

    
351