Project

General

Profile

update_proc_CM_APPROVE_GROUP.txt

Luc Tran Van, 03/20/2023 09:23 AM

 
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