Project

General

Profile

2.0 VALIDATE VAI TRO XU LY TO TRINH KHI DIEU PHOI.txt

Luc Tran Van, 04/06/2021 09:21 AM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_Ins]
3
@p_MAKER_ID VARCHAR(20),
4
@p_XMLData XML
5
AS
6
BEGIN TRANSACTION
7
		--- KHAI BAO CHUOI ID TRA VÊ PHUC VU VIEC GUI MAI;
8
		DECLARE @ID_RETURN_FOR_EMAIL VARCHAR(500) =''
9
		-------------------------------------------------
10
		Declare @hdoc INT
11
		Exec sp_xml_preparedocument @hdoc Output,@p_XMLData
12
		DECLARE ListREQ  CURSOR FOR
13
		SELECT *
14
		FROM OPENXML(@hDoc,'/Root/ListREQ',2)
15
		WITH 
16
		(
17
			REQ_ID	varchar(20)  ,
18
			PROCESS_ID	varchar(20),
19
			TLNAME VARCHAR(20),
20
			TYPE_JOB VARCHAR(20),
21
			REF_ID INT
22
		
23
		)
24
		OPEN ListREQ
25
DECLARE @LEVEL INT,@REQ_ID VARCHAR(20),@PROCESS_ID VARCHAR(20),@TYPE_JOB VARCHAR(20),@TLNAME VARCHAR(20),@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20)
26

    
27
DECLARE @REF_ID INT, @TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
28

    
29
SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
30
SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
31

    
32
DECLARE @lstCOST TABLE(
33
 COST_ID VARCHAR(20)
34
)
35

    
36
INSERT INTO @lstCOST
37
SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID
38

    
39

    
40
FETCH NEXT FROM ListREQ INTO @REQ_ID,@PROCESS_ID,@TLNAME,@TYPE_JOB,@REF_ID
41
WHILE @@FETCH_STATUS=0
42
BEGIN
43
	IF(@TLNAME IS NULL OR @TLNAME='')
44
	BEGIN
45
			SELECT -1 Result, N'Vui lòng chọn người được giao xử lý phiếu số' ErrorDesc 
46
			ROLLBACK TRANSACTION
47
			RETURN '-1'
48
	END
49
	IF(@TYPE_JOB IS NULL OR @TYPE_JOB='')
50
	BEGIN
51
			SELECT -1 Result, N'Vui lòng chọn vai trò của người được giao xử lý phiếu' ErrorDesc 
52
			ROLLBACK TRANSACTION
53
			RETURN '-1'
54
	END
55
	IF(@TYPE_JOB ='TP')
56
	BEGIN
57
			SELECT -1 Result, N'Vui lòng kéo thanh cuộn sang phải để chọn vai trò của người được giao xử lý phiếu. Chọn vai trò kiểm soát nếu nhân viên đóng vai trò phê duyệt kí nháy. Chọn vai trò xử lý phiếu nếu nhân viên trực tiếp xử lý tờ trình' ErrorDesc 
58
			ROLLBACK TRANSACTION
59
			RETURN '-1'
60
	END
61

    
62

    
63
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
64
			FROM dbo.PL_REQUEST_PROCESS_CHILD 
65
			WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID 
66
			ORDER BY LEVEL_JOB DESC),0)
67

    
68
		-- BAT DAU GAN GIA TRI
69
		SET @ID_RETURN_FOR_EMAIL = @ID_RETURN_FOR_EMAIL +','+@REQ_ID
70
		-----------------------------------------------------------
71
		IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB ))
72
		BEGIN
73
			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 ))
74
				BEGIN
75
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET TLNAME=@TLNAME WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND TYPE_JOB=@TYPE_JOB
76
					SET @TYPE_JOB_NAME =(SELECT TOP 1 CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ')
77
					SET @FULLNAME =(SELECT TOP 1 TLFullName FROM dbo.TL_USER WHERE TLNANME=@TLNAME)
78
					
79
					INSERT INTO dbo.PL_PROCESS
80
					(
81
					    REQ_ID,
82
					    PROCESS_ID,
83
					    CHECKER_ID,
84
					    APPROVE_DT,
85
					    PROCESS_DESC,
86
					    NOTES
87
					)
88
					VALUES
89
					(   @REQ_ID,        -- REQ_ID - varchar(15)
90
					    @PROCESS_ID,        -- PROCESS_ID - varchar(10)
91
					    @p_MAKER_ID,        -- CHECKER_ID - varchar(15)
92
					    GETDATE(), -- APPROVE_DT - datetime
93
					    N'Nhân viên tiếp nhận ' + @FULLNAME,       -- PROCESS_DESC - nvarchar(1000)
94
					    N'Điều phối '+@TYPE_JOB_NAME        -- NOTES - nvarchar(1000)
95
					    )
96

    
97

    
98
				END
99
		END
100
		ELSE
101
		BEGIN
102
		IF(@LEVEL=0)
103
		BEGIN
104
			SET @LEVEL=@LEVEL +1
105
				INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
106
			(
107
				REQ_ID,
108
				PROCESS_ID,
109
				TLNAME,
110
				TYPE_JOB,
111
				LEVEL_JOB,
112
				STATUS_JOB,
113
				RECORD_STATUS
114
			)
115
			VALUES
116
			(   @REQ_ID, -- REQ_ID - varchar(20)
117
				@REF_ID, -- PROCESS_ID - varchar(20)
118
				@p_MAKER_ID, -- TLNAME - varchar(50)
119
				'TP', -- TYPE_JOB - varchar(50)
120
				@LEVEL,  -- LEVEL_JOB - int
121
				'U', -- STATUS_JOB - varchar(10)
122
				'1'  -- RECORD_STATUS - varchar(15)
123
			)
124
		END
125

    
126
		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'))
127
		BEGIN
128
			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'
129
			SET @LEVEL=@LEVEL-1
130
			UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='U' WHERE REQ_ID=@REQ_ID AND PROCESS_ID=@REF_ID AND LEVEL_JOB=@LEVEL
131
			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'))
132
			BEGIN
133
			INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
134
			(
135
				REQ_ID,
136
				PROCESS_ID,
137
				TLNAME,
138
				TYPE_JOB,
139
				LEVEL_JOB,
140
				STATUS_JOB,
141
				RECORD_STATUS
142
			)
143
			VALUES
144
			(   @REQ_ID, -- REQ_ID - varchar(20)
145
				@REF_ID, -- PROCESS_ID - varchar(20)
146
				@TLNAME, -- TLNAME - varchar(50)
147
				@TYPE_JOB, -- TYPE_JOB - varchar(50)
148
				@LEVEL + 1,  -- LEVEL_JOB - int
149
				'U', -- STATUS_JOB - varchar(10)
150
				'1'  -- RECORD_STATUS - varchar(15)
151
				)
152
			END
153
			ELSE
154
			BEGIN
155
				INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
156
				(
157
					REQ_ID,
158
					PROCESS_ID,
159
					TLNAME,
160
					TYPE_JOB,
161
					LEVEL_JOB,
162
					STATUS_JOB,
163
					RECORD_STATUS
164
				)
165
				VALUES
166
				(   @REQ_ID, -- REQ_ID - varchar(20)
167
					@REF_ID, -- PROCESS_ID - varchar(20)
168
					@TLNAME, -- TLNAME - varchar(50)
169
					@TYPE_JOB, -- TYPE_JOB - varchar(50)
170
					@LEVEL + 1,  -- LEVEL_JOB - int
171
					'U', -- STATUS_JOB - varchar(10)
172
					'1'  -- RECORD_STATUS - varchar(15)
173
					)
174
			END
175

    
176
		END
177
		ELSE
178
		BEGIN
179

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

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

    
227
DEALLOCATE ListREQ
228
		IF @@Error <> 0 GOTO ABORT
229
COMMIT TRANSACTION
230
SELECT 0 as Result, @ID_RETURN_FOR_EMAIL AS ErrorDesc
231
RETURN 0
232
ABORT:
233
BEGIN
234
		ROLLBACK TRANSACTION
235
		SELECT -1 as Result, '' ErrorDesc
236
		RETURN -1
237
End
238

    
239

    
240

    
241

    
242

    
243