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
|