Project

General

Profile

TR_REQ_PROCESS_CHILD_Ins.txt

Luc Tran Van, 12/26/2022 05:05 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_REQ_PROCESS_CHILD_Ins]
3
@p_MAKER_ID VARCHAR(20),
4
@p_XMLData XML
5
AS
6
BEGIN TRANSACTION
7
		--- KHAI BAO CHUOI ID
8
		DECLARE @ID_RETURN_FOR_EMAIL VARCHAR(500) =''
9
		-----------------------------------------------------
10

    
11
		DECLARE @p_ROW_NUM INT = 0
12
		DECLARE @p_REQ_CODE VARCHAR(50)
13

    
14
		Declare @hdoc INT
15
		Exec sp_xml_preparedocument @hdoc Output,@p_XMLData
16
		DECLARE ListREQ  CURSOR FOR
17
		SELECT *
18
		FROM OPENXML(@hDoc,'/Root/ListREQ',2)
19
		WITH 
20
		(
21
			REQ_ID	varchar(20)  ,
22
			PROCESS_ID	varchar(20),
23
			TLNAME VARCHAR(20),
24
			TYPE_JOB VARCHAR(20),
25
			REF_ID INT
26
		
27
		)
28
		OPEN ListREQ
29
		DECLARE @LEVEL INT,@REQ_ID VARCHAR(20),@PROCESS_ID VARCHAR(20),@TYPE_JOB VARCHAR(20),@TLNAME VARCHAR(20),@REF_ID INT, @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
30

    
31
		FETCH NEXT FROM ListREQ INTO @REQ_ID,@PROCESS_ID,@TLNAME,@TYPE_JOB,@REF_ID
32
		WHILE @@FETCH_STATUS=0
33
		BEGIN
34

    
35
			SET @p_ROW_NUM = @p_ROW_NUM + 1
36
			SET @p_REQ_CODE = (SELECT TOP 1 REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID = @REQ_ID)
37

    
38
			IF(@TLNAME IS NULL OR @TLNAME = '')
39
			BEGIN
40
				CLOSE ListREQ
41
				DEALLOCATE ListREQ
42
				ROLLBACK TRANSACTION
43
				SELECT '-1' as Result, 
44
					N'Điều phối phiếu yêu cầu số ' +@p_REQ_CODE+
45
					N'. Vui lòng chọn tên người được giao xử lý' ErrorDesc
46
				RETURN '-1'
47
			END
48

    
49
		-- BAT DAU GAN GIA TRI
50
		SET @ID_RETURN_FOR_EMAIL = @ID_RETURN_FOR_EMAIL +','+@REQ_ID
51
		--NEU LA DVKD THI MAC DINH LA CAP XU LY PHIEU - LUCTV 
52
		-- XOA QUYEN CU CUA USER
53
		DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_ID AND TLNAME =@TLNAME AND (STATUS_JOB ='C' OR PROCESS_ID =@REF_ID)
54
		IF(EXISTS(SELECT * FROM CM_DMMS WHERE BRANCH_ID <> 'DV0001' AND DMMS_ID =(SELECT TOP 1 DMMS_ID FROM TR_REQUEST_DOC WHERE REQ_ID =@REQ_ID)))
55
		BEGIN
56
			IF(@TYPE_JOB ='KS')
57
			BEGIN
58
				SET @TYPE_JOB ='XL'
59
			END
60
		END
61
		-----------------------------------------------------------
62
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
63
			FROM dbo.PL_REQUEST_PROCESS_CHILD 
64
			WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID 
65
			ORDER BY LEVEL_JOB DESC),0)
66
		IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB  ))
67
		BEGIN
68
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB AND TLNAME <> @TLNAME ))
69
				BEGIN
70
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET TLNAME=@TLNAME,MAKER_ID=@p_MAKER_ID,TRANFER_DT=GETDATE() WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB
71
					SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL = @TYPE_JOB)
72
					SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@TLNAME)
73
					
74

    
75
							INSERT INTO dbo.PL_PROCESS
76
							(
77
								REQ_ID,
78
								PROCESS_ID,
79
								CHECKER_ID,
80
								APPROVE_DT,
81
								PROCESS_DESC,
82
								NOTES
83
							)
84
							VALUES
85
							(   @REQ_ID,        -- REQ_ID - varchar(15)
86
								@PROCESS_ID,        -- PROCESS_ID - varchar(10)
87
								@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
88
								GETDATE(), -- APPROVE_DT - datetime
89
								N'Nhân viên tiếp nhận ' + @FULLNAME + ' - ' + @TLNAME,       -- PROCESS_DESC - nvarchar(1000)
90
								N'Điều phối '+@TYPE_JOB_NAME        -- NOTES - nvarchar(1000)
91
								)
92
				END
93
		END
94
		ELSE
95
		BEGIN
96
		IF(@LEVEL=0)
97
		BEGIN
98
			SET @LEVEL=@LEVEL +1
99
				INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
100
			(
101
				REQ_ID,
102
				PROCESS_ID,
103
				TLNAME,
104
				TYPE_JOB,
105
				LEVEL_JOB,
106
				STATUS_JOB,
107
				RECORD_STATUS
108
			)
109
			VALUES
110
			(   @REQ_ID, -- REQ_ID - varchar(20)
111
				@REF_ID, -- PROCESS_ID - varchar(20)
112
				@p_MAKER_ID, -- TLNAME - varchar(50)
113
				'TP', -- TYPE_JOB - varchar(50)
114
				@LEVEL,  -- LEVEL_JOB - int
115
				'U', -- STATUS_JOB - varchar(10)
116
				'1'  -- RECORD_STATUS - varchar(15)
117
				)
118

    
119
		END
120
		
121
		IF(@TYPE_JOB='KS' AND EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB='XL'))
122
		BEGIN
123
			UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET LEVEL_JOB=@LEVEL + 1  WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID  AND TYPE_JOB='XL'
124
			SET @LEVEL=@LEVEL-1
125
			UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='U' WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND LEVEL_JOB=@LEVEL
126
			IF (EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB='XL' AND STATUS_JOB='C'))
127
			BEGIN
128
				INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
129
			(
130
		    REQ_ID,
131
		    PROCESS_ID,
132
		    TLNAME,
133
		    TYPE_JOB,
134
		    LEVEL_JOB,
135
		    STATUS_JOB,
136
		    RECORD_STATUS,
137
			MAKER_ID,
138
			TRANFER_DT
139
			)
140
			VALUES
141
			(   @REQ_ID, -- REQ_ID - varchar(20)
142
		    @REF_ID, -- PROCESS_ID - varchar(20)
143
		    @TLNAME, -- TLNAME - varchar(50)
144
		    @TYPE_JOB, -- TYPE_JOB - varchar(50)
145
		    @LEVEL + 1,  -- LEVEL_JOB - int
146
		    'U', -- STATUS_JOB - varchar(10)
147
		    '1' , -- RECORD_STATUS - varchar(15)
148
			@p_MAKER_ID,
149
			GETDATE()
150
		    )
151
			END
152
			ELSE
153
			BEGIN
154
					INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
155
			(
156
		    REQ_ID,
157
		    PROCESS_ID,
158
		    TLNAME,
159
		    TYPE_JOB,
160
		    LEVEL_JOB,
161
		    STATUS_JOB,
162
		    RECORD_STATUS,
163
			MAKER_ID,
164
			TRANFER_DT
165
			)
166
			VALUES
167
			(   @REQ_ID, -- REQ_ID - varchar(20)
168
		    @REF_ID, -- PROCESS_ID - varchar(20)
169
		    @TLNAME, -- TLNAME - varchar(50)
170
		    @TYPE_JOB, -- TYPE_JOB - varchar(50)
171
		    @LEVEL + 1,  -- LEVEL_JOB - int
172
		    'C', -- STATUS_JOB - varchar(10)
173
		    '1' , -- RECORD_STATUS - varchar(15)
174
			@p_MAKER_ID,
175
			GETDATE()
176
		    )
177
			END
178

    
179
		END
180
		ELSE
181
		BEGIN
182

    
183
			UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='U' WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND LEVEL_JOB=@LEVEL
184
				INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
185
				(
186
				REQ_ID,
187
				PROCESS_ID,
188
				TLNAME,
189
				TYPE_JOB,
190
				LEVEL_JOB,
191
				STATUS_JOB,
192
				RECORD_STATUS,
193
				MAKER_ID,
194
				TRANFER_DT
195
				)
196
				VALUES
197
				(   @REQ_ID, -- REQ_ID - varchar(20)
198
				@REF_ID, -- PROCESS_ID - varchar(20)
199
				@TLNAME, -- TLNAME - varchar(50)
200
				@TYPE_JOB, -- TYPE_JOB - varchar(50)
201
				@LEVEL + 1,  -- LEVEL_JOB - int
202
				'C', -- STATUS_JOB - varchar(10)
203
				'1' , -- RECORD_STATUS - varchar(15)
204
				@p_MAKER_ID,
205
				GETDATE()
206
				)
207
		END
208
			SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@TYPE_JOB)
209
			SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@TLNAME)
210
			
211

    
212
			INSERT INTO dbo.PL_PROCESS
213
			(
214
				REQ_ID,
215
				PROCESS_ID,
216
				CHECKER_ID,
217
				APPROVE_DT,
218
				PROCESS_DESC,
219
				NOTES
220
			)
221
			VALUES
222
			(   @REQ_ID,        -- REQ_ID - varchar(15)
223
				@PROCESS_ID,        -- PROCESS_ID - varchar(10)
224
				@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
225
				GETDATE(), -- APPROVE_DT - datetime
226
				N'Nhân viên tiếp nhận ' + @FULLNAME + ' - ' + @TLNAME,       -- PROCESS_DESC - nvarchar(1000)
227
				N'Điều phối '+@TYPE_JOB_NAME        -- NOTES - nvarchar(1000)
228
				)
229
		END
230
		FETCH NEXT FROM ListREQ INTO @REQ_ID,@PROCESS_ID,@TLNAME,@TYPE_JOB,@REF_ID
231
END
232
CLOSE ListREQ
233

    
234
DEALLOCATE ListREQ
235

    
236
	
237
		IF @@Error <> 0 GOTO ABORT
238
COMMIT TRANSACTION
239
SELECT 0 as Result, @ID_RETURN_FOR_EMAIL ErrorDesc
240
RETURN 0
241
ABORT:
242
BEGIN
243
		ROLLBACK TRANSACTION
244
		SELECT -1 as Result, '' ErrorDesc
245
		RETURN -1
246
End