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
|
|