1
|
|
2
|
ALTER PROCEDURE dbo.CM_APPROVE_GROUP_Upd
|
3
|
@p_REQ_ID [varchar](50) NULL,
|
4
|
@p_GROUP_APPROVES NVARCHAR(MAX)=NULL,
|
5
|
@p_CURRENT_STEP INT,
|
6
|
@p_DONE BIT OUT,
|
7
|
@p_ERROR_MESS NVARCHAR(MAX) OUT
|
8
|
AS
|
9
|
--Validation is here
|
10
|
|
11
|
DECLARE @ERRORSYS NVARCHAR(15) = ''
|
12
|
|
13
|
IF( @ERRORSYS <> '' )
|
14
|
BEGIN
|
15
|
SELECT @p_DONE = 0, @p_ERROR_MESS = @ERRORSYS
|
16
|
RETURN '-1'
|
17
|
END
|
18
|
|
19
|
--BEGIN TRANSACTION
|
20
|
declare @approveTlb table(STEP_LEVEL INT,USERNAME nvarchar(50),PROCESS BIT)
|
21
|
declare @listApproveTlb table(STEP_LEVEL INT,GROUP_APPROVE nvarchar(max))
|
22
|
|
23
|
--SLIP LIST
|
24
|
insert into @listApproveTlb (STEP_LEVEL, GROUP_APPROVE)
|
25
|
select row_number() over(order by (select 1)), [value]
|
26
|
FROM WSISPLIT(@p_GROUP_APPROVES,',')
|
27
|
WHERE [value] <>''
|
28
|
--DELETE @listApproveTlb WHERE GROUP_APPROVE=''OR GROUP_APPROVE IS NULL
|
29
|
|
30
|
|
31
|
-- LIST TO TABLE
|
32
|
insert into @approveTlb (STEP_LEVEL,USERNAME,PROCESS)
|
33
|
select A.STEP_LEVEL,B.value ,0
|
34
|
from @listApproveTlb A
|
35
|
CROSS APPLY (select [value] FROM WSISPLIT(A.GROUP_APPROVE,';') ) B
|
36
|
--CHECK NHÓM DUYỆT
|
37
|
IF(EXISTS(SELECT * FROM @approveTlb GROUP BY USERNAME HAVING COUNT(USERNAME)>1))
|
38
|
BEGIN
|
39
|
--ROLLBACK TRANSACTION
|
40
|
SELECT '-1' as Result, '' ID, N'DANH SÁCH NHÓM DUYỆT KHÔNG HỢP LỆ. DANH SÁCH NGƯỜI DUYỆT BỊ TRÙNG. VUI LÒNG KIỂM TRA LẠI.' ErrorDesc
|
41
|
RETURN '-1'
|
42
|
END
|
43
|
--END CHECK NHÓM DUYỆT
|
44
|
DECLARE @TOT_APPORVE INT = (SELECT COUNT(*) from @approveTlb)
|
45
|
DECLARE @index_approve INT,@l_APPROVE_GROUP_ID nvarchar(50)
|
46
|
--RESET CM_APPROVE_GROUP
|
47
|
DELETE CM_APPROVE_GROUP WHERE REQ_ID=@p_REQ_ID
|
48
|
EXEC SYS_CodeMasters_Gen_Mult 'CM_APPROVE_GROUP',@TOT_APPORVE, @l_APPROVE_GROUP_ID out, @index_approve out
|
49
|
INSERT INTO [dbo].[CM_APPROVE_GROUP]
|
50
|
([APPROVE_GROUP_ID]
|
51
|
,[APPROVE_USERNAME]
|
52
|
,[STEP_LEVEL]
|
53
|
,PROCESS_STATUS
|
54
|
,DONE
|
55
|
,CREATE_DT
|
56
|
,[AUTH_STATUS]
|
57
|
,[REQ_ID]
|
58
|
,[TYPE])
|
59
|
SELECT ('CAG' + right('0000000000000'+convert(varchar(15),(@index_approve -1 + row_number() over(order by (select 1)))),10)),
|
60
|
USERNAME
|
61
|
,STEP_LEVEL
|
62
|
,0
|
63
|
,0
|
64
|
,GETDATE()
|
65
|
,'U'
|
66
|
,@p_REQ_ID
|
67
|
,'APP'
|
68
|
FROM @approveTlb
|
69
|
--RESET CM_APPROVE_GROUP
|
70
|
|
71
|
IF @@Error <> 0 GOTO ABORT
|
72
|
--
|
73
|
--COMMIT TRANSACTION
|
74
|
SELECT @p_DONE = 1, @p_ERROR_MESS = @ERRORSYS
|
75
|
RETURN '0'
|
76
|
ABORT:
|
77
|
BEGIN
|
78
|
--ROLLBACK TRANSACTION
|
79
|
SELECT @p_DONE = 0, @p_ERROR_MESS = N'CẬP NHẬT NHÓM DUYỆT THẤT BẠI'
|
80
|
RETURN '-1'
|
81
|
End
|
82
|
|
83
|
|
84
|
|
85
|
GO
|
86
|
|
87
|
ALTER PROCEDURE dbo.CM_APPROVE_GROUP_Ins
|
88
|
@p_REQ_ID [varchar](50) NULL,
|
89
|
@p_GROUP_APPROVES NVARCHAR(max)=NULL,
|
90
|
@p_DONE BIT OUT,
|
91
|
@p_ERROR_MESS NVARCHAR(MAX) OUT
|
92
|
AS
|
93
|
--Validation is here
|
94
|
|
95
|
DECLARE @ERRORSYS NVARCHAR(15) = ''
|
96
|
|
97
|
IF( @ERRORSYS <> '' )
|
98
|
BEGIN
|
99
|
SELECT @p_DONE = 0, @p_ERROR_MESS = @ERRORSYS
|
100
|
RETURN '-1'
|
101
|
END
|
102
|
|
103
|
--BEGIN TRANSACTION
|
104
|
declare @listApproveTlb table(STEP_LEVEL INT,GROUP_APPROVE nvarchar(max))
|
105
|
|
106
|
declare @approveTlb table(STEP_LEVEL INT,USERNAME nvarchar(50))
|
107
|
--SLIP LIST
|
108
|
insert into @listApproveTlb (STEP_LEVEL, GROUP_APPROVE)
|
109
|
select row_number() over(order by (select 1)), [value]
|
110
|
FROM WSISPLIT(@p_GROUP_APPROVES,',')
|
111
|
WHERE [value] <>''
|
112
|
--DELETE @listApproveTlb WHERE GROUP_APPROVE=''OR GROUP_APPROVE IS NULL
|
113
|
|
114
|
-- LIST TO TABLE
|
115
|
insert into @approveTlb (STEP_LEVEL,USERNAME)
|
116
|
select A.STEP_LEVEL,B.value
|
117
|
from @listApproveTlb A
|
118
|
CROSS APPLY (select [value] FROM WSISPLIT(A.GROUP_APPROVE,';') ) B
|
119
|
|
120
|
--CHECK NHÓM DUYỆT
|
121
|
IF(EXISTS(SELECT * FROM @approveTlb GROUP BY USERNAME HAVING COUNT(USERNAME)>1))
|
122
|
BEGIN
|
123
|
--ROLLBACK TRANSACTION
|
124
|
SELECT @p_DONE = 0, @p_ERROR_MESS=N'DANH SÁCH NHÓM DUYỆT KHÔNG HỢP LỆ. DANH SÁCH NGƯỜI DUYỆT BỊ TRÙNG. VUI LÒNG KIỂM TRA LẠI.'
|
125
|
print 7
|
126
|
RETURN 0
|
127
|
END
|
128
|
--END CHECK NHÓM DUYỆT
|
129
|
--START CHECK THƯ KÍ
|
130
|
/*insert into @approveTlb
|
131
|
SELECT STEP_LEVEL From @approveTlb
|
132
|
WHERE dbo.FN_CHECK_ROLE_USER(USERNAME,'TGD')=1*/
|
133
|
--END CHECK THƯ KÍ
|
134
|
--INSERT CM_APPROVE_GROUP
|
135
|
DECLARE @TOT_APPORVE INT = (SELECT COUNT(*) from @approveTlb)
|
136
|
DECLARE @index_approve INT,@l_APPROVE_GROUP_ID nvarchar(50)
|
137
|
EXEC SYS_CodeMasters_Gen_Mult 'CM_APPROVE_GROUP',@TOT_APPORVE, @l_APPROVE_GROUP_ID out, @index_approve out
|
138
|
|
139
|
INSERT INTO [dbo].[CM_APPROVE_GROUP]
|
140
|
([APPROVE_GROUP_ID]
|
141
|
,[APPROVE_USERNAME]
|
142
|
,[STEP_LEVEL]
|
143
|
,PROCESS_STATUS
|
144
|
,DONE
|
145
|
,[AUTH_STATUS]
|
146
|
,CREATE_DT
|
147
|
,[REQ_ID]
|
148
|
,[TYPE])
|
149
|
SELECT ('CAG' + right('000000000000000'+convert(varchar(15),(@index_approve -1 + row_number() over(order by (select 1)))),10)),
|
150
|
USERNAME
|
151
|
,STEP_LEVEL
|
152
|
,0
|
153
|
,0
|
154
|
,'U'
|
155
|
,GETDATE()
|
156
|
,@p_REQ_ID
|
157
|
,'APP'
|
158
|
FROM @approveTlb
|
159
|
IF @@Error <> 0 GOTO ABORT
|
160
|
--
|
161
|
|
162
|
--COMMIT TRANSACTION
|
163
|
SELECT @p_DONE = 1, @p_ERROR_MESS = N''
|
164
|
RETURN '0'
|
165
|
ABORT:
|
166
|
BEGIN
|
167
|
ROLLBACK TRANSACTION
|
168
|
SELECT @p_DONE = 0, @p_ERROR_MESS = N'THÊM NHÓM DUYỆT THẤT BẠI'
|
169
|
RETURN '-1'
|
170
|
End
|
171
|
|
172
|
|