1
|
|
2
|
ALTER PROCEDURE dbo.CM_REQUEST_TEMPLATE_Search
|
3
|
@p_REQUEST_TEMPLATE_CODE VARCHAR(15)=NULL,
|
4
|
@p_REQUEST_TEMPLATE_NAME NVARCHAR(200)=NULL,
|
5
|
@p_NOTES NVARCHAR(1000)=NULL,
|
6
|
@p_RECORD_STATUS VARCHAR(1)=NULL,
|
7
|
@p_MAKER_ID VARCHAR(12)=NULL,
|
8
|
@p_CREATE_DT VARCHAR(20)=NULL,
|
9
|
@p_AUTH_STATUS VARCHAR(50)=NULL,
|
10
|
@p_CHECKER_ID VARCHAR(12)=NULL,
|
11
|
@p_APPROVE_DT VARCHAR(20)=NULL,
|
12
|
@p_MaxResultCount INT = NULL,
|
13
|
@p_SkipCount INT = NULL,
|
14
|
@p_Sorting VARCHAR(100) = NULL,
|
15
|
@p_TotalCount INT = NULL,
|
16
|
@p_REPORT_NO NVARCHAR(50)=NULL,
|
17
|
@p_REPORT_DT NVARCHAR(50)=NULL,
|
18
|
@p_TYPE_TEMPLATE NVARCHAR(50)=NULL,
|
19
|
@p_FROM_DT NVARCHAR(20)=NULL,
|
20
|
@p_TO_DT NVARCHAR(20)=NULL,
|
21
|
@p_TYPE_TEMPLATE_ID VARCHAR(20)=NULL,
|
22
|
@p_MAKER_FULLNAME NVARCHAR(50)=NULL,
|
23
|
@p_USER_LOGIN VARCHAR(20)=NULL,
|
24
|
@p_AUTH_STATUS_APP VARCHAR(20)=NULL,
|
25
|
@p_TITLE NVARCHAR(500)=NULL,
|
26
|
@p_USER_APPROVES NVARCHAR(500)=NULL,
|
27
|
@p_FROM_DATE VARCHAR(20)=NULL,
|
28
|
@p_TO_DATE VARCHAR(20)=NULL,
|
29
|
@p_TOP INT = NULL,
|
30
|
@p_BRANCH_ID VARCHAR(15) = NULL,
|
31
|
@p_DEP_ID VARCHAR(15) = NULL
|
32
|
AS
|
33
|
BEGIN -- PAGING
|
34
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
|
35
|
SET NOCOUNT ON;
|
36
|
--NGUYENTD 19082024_SECRETKEY
|
37
|
SELECT * INTO #LIST_ROLE FROM TL_USER_GET_ROLES(@p_USER_LOGIN)
|
38
|
CREATE TABLE #CM_REQUEST_TEMPLATE (
|
39
|
REQUEST_TEMPLATE_ID VARCHAR(100) NOT NULL
|
40
|
,REQUEST_TEMPLATE_NAME NVARCHAR(200) NULL
|
41
|
,RECORD_STATUS VARCHAR(1) NULL
|
42
|
,MAKER_ID VARCHAR(12) NULL
|
43
|
,CREATE_DT DATETIME NULL
|
44
|
,AUTH_STATUS VARCHAR(50) NULL
|
45
|
,CHECKER_ID VARCHAR(12) NULL
|
46
|
,APPROVE_DT DATETIME NULL
|
47
|
,CREATE_LOCATION NVARCHAR(500) NULL
|
48
|
,HEADER NVARCHAR(200) NULL
|
49
|
,BRANCH_ID NVARCHAR(50) NULL
|
50
|
,REPORT_NO NVARCHAR(50) NULL
|
51
|
,TITLE NVARCHAR(500) NULL
|
52
|
,REPORT_DT DATETIME NULL
|
53
|
,SCHEME VARCHAR(50) NULL
|
54
|
,TYPE_TEMPLATE_ID NVARCHAR(50) NULL
|
55
|
,CURRENT_STEP INT NULL
|
56
|
,IS_SENT_APPROVE BIT NULL
|
57
|
,IS_BACK_DATE BIT NULL
|
58
|
)
|
59
|
--CREATE NONCLUSTERED INDEX idx_BR ON #CM_REQUEST_TEMPLATE (BRANCH_ID)WITH (FILLFACTOR = 80)
|
60
|
--CREATE NONCLUSTERED INDEX idx_REQ_ID ON #CM_REQUEST_TEMPLATE (REQUEST_TEMPLATE_ID)WITH (FILLFACTOR = 80)
|
61
|
--CREATE NONCLUSTERED INDEX idx_RECORD_STATUS ON #CM_REQUEST_TEMPLATE (RECORD_STATUS)WITH (FILLFACTOR = 80)
|
62
|
----CREATE NONCLUSTERED INDEX idx_MAKER_ID ON #CM_REQUEST_TEMPLATE (MAKER_ID)WITH (FILLFACTOR = 80)
|
63
|
--CREATE NONCLUSTERED INDEX idx_TYPE_TEMPLATE_ID ON #CM_REQUEST_TEMPLATE (TYPE_TEMPLATE_ID)WITH (FILLFACTOR = 80)
|
64
|
CREATE TABLE #AUTH_STATUS (REQ_ID VARCHAR(15), AUT_STATUS VARCHAR(1),TYPE VARCHAR(15))
|
65
|
|
66
|
CREATE NONCLUSTERED INDEX temp_ReqId ON #AUTH_STATUS(AUT_STATUS) WITH (FILLFACTOR = 80)
|
67
|
CREATE NONCLUSTERED INDEX temp_AutStatus ON #AUTH_STATUS(REQ_ID) WITH (FILLFACTOR = 80)
|
68
|
--DBCC SHOW_STATISTICS ('CM_DEPARTMENT', 'idx_BR_ID')
|
69
|
|
70
|
|
71
|
INSERT INTO #CM_REQUEST_TEMPLATE
|
72
|
SELECT A.REQUEST_TEMPLATE_ID, A.REQUEST_TEMPLATE_NAME, A.RECORD_STATUS, A.MAKER_ID, A.CREATE_DT, A.AUTH_STATUS, A.CHECKER_ID, A.APPROVE_DT, A.CREATE_LOCATION,
|
73
|
A.HEADER, A.BRANCH_ID, A.REPORT_NO, A.TITLE, A.REPORT_DT, A.SCHEME, A.TYPE_TEMPLATE_ID, A.CURRENT_STEP, A.IS_SENT_APPROVE, A.IS_BACK_DATE
|
74
|
FROM CM_REQUEST_TEMPLATE A
|
75
|
WHERE 1 =1
|
76
|
AND (@p_REQUEST_TEMPLATE_NAME IS NULL OR @p_REQUEST_TEMPLATE_NAME='' OR REQUEST_TEMPLATE_NAME LIKE '%' + @p_REQUEST_TEMPLATE_NAME + '%')
|
77
|
AND (@p_TYPE_TEMPLATE_ID IS NULL OR @p_TYPE_TEMPLATE_ID='' OR A.TYPE_TEMPLATE_ID LIKE '%' + @p_TYPE_TEMPLATE_ID + '%')
|
78
|
-- AND (@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES = @p_NOTES)
|
79
|
AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS)
|
80
|
AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%')
|
81
|
AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0)
|
82
|
--(@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR MAKER_ID = @p_MAKER_ID) AND
|
83
|
AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS)
|
84
|
AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID)
|
85
|
AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
|
86
|
AND (A.REPORT_DT >= CONVERT(DATE,@p_FROM_DATE,103) OR @p_FROM_DATE IS NULL OR @p_FROM_DATE = '')
|
87
|
AND (A.REPORT_DT <= CONVERT(DATE,@p_TO_DATE,103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '')
|
88
|
AND (REPORT_DT=CONVERT(DATETIME,@p_REPORT_DT,103) OR @p_REPORT_DT IS NULL)
|
89
|
AND (@p_TITLE IS NULL OR @p_TITLE='' OR A.TITLE LIKE '%'+@p_TITLE+'%')
|
90
|
AND (@p_REPORT_NO IS NULL OR @p_REPORT_NO='' OR A.REPORT_NO LIKE '%'+@p_REPORT_NO+'%')
|
91
|
AND ((A.RECORD_STATUS = '0' AND (A.MAKER_ID = @p_USER_LOGIN)) OR A.RECORD_STATUS = '1')
|
92
|
ORDER BY A.CREATE_DT DESC
|
93
|
INSERT #AUTH_STATUS
|
94
|
SELECT G.REQ_ID,
|
95
|
CASE
|
96
|
WHEN DONE=0 THEN 'U'
|
97
|
WHEN DONE=1 THEN 'A'
|
98
|
END AS AUT_STATUS
|
99
|
,G.TYPE
|
100
|
FROM CM_APPROVE_GROUP G
|
101
|
INNER JOIN #CM_REQUEST_TEMPLATE ON REQUEST_TEMPLATE_ID = G.REQ_ID
|
102
|
WHERE (DONE=1 OR PROCESS_STATUS=1 OR [TYPE]='AUT') AND (@p_USER_LOGIN=APPROVE_USERNAME OR @p_USER_LOGIN=AUTHORITY_NAME)
|
103
|
CREATE TABLE #APPROVE_GROUP (REQ_ID VARCHAR(15), USER_APPROVES NVARCHAR(MAX))
|
104
|
INSERT #APPROVE_GROUP(REQ_ID, USER_APPROVES)
|
105
|
select G.REQ_ID,STRING_AGG(G.APPROVE_USERNAME + ' - ' + u.TLFullName, ';') USER_APPROVES
|
106
|
FROM CM_APPROVE_GROUP G
|
107
|
JOIN TL_USER U ON G.APPROVE_USERNAME=U.TLNANME
|
108
|
INNER JOIN #CM_REQUEST_TEMPLATE ON G.REQ_ID = REQUEST_TEMPLATE_ID
|
109
|
WHERE PROCESS_STATUS=1 AND DONE=0 AND [TYPE]='APP'
|
110
|
GROUP BY G.REQ_ID
|
111
|
CREATE TABLE #SHARE (REQ_ID VARCHAR(15), SHARE_USERNAME VARCHAR(MAX))
|
112
|
INSERT #SHARE
|
113
|
(
|
114
|
REQ_ID,
|
115
|
SHARE_USERNAME
|
116
|
)
|
117
|
select REQUEST_TEMPLATE_ID,STRING_AGG(SHARE_USERNAME,';') SHARE_USERNAME
|
118
|
FROM CM_TEMPLATE_SHARE
|
119
|
INNER JOIN #CM_REQUEST_TEMPLATE ON REQ_ID = REQUEST_TEMPLATE_ID
|
120
|
GROUP BY REQUEST_TEMPLATE_ID
|
121
|
CREATE TABLE #BRANCH (BRANCH_ID VARCHAR(15))
|
122
|
INSERT #BRANCH
|
123
|
SELECT DE.BRANCH_ID FROM CM_DEPARTMENT DE INNER JOIN #CM_REQUEST_TEMPLATE A ON DE.DEP_ID = A.BRANCH_ID GROUP BY DE.BRANCH_ID
|
124
|
IF @P_TOP IS NULL OR @P_TOP = ''
|
125
|
BEGIN
|
126
|
|
127
|
-- PAGING BEGIN
|
128
|
SELECT A.*,B.CONTENT AS AUTH_STATUS_NAME,C.CONTENT AS RECORD_STATUS_NAME ,TT.TYPE_TEMPLATE_NAME AS TYPE_TEMPLATE_NAME
|
129
|
,(BR.[BRANCH_NAME] + ' - ' + CD.[DEP_NAME]) AS BRANCH_NAME--NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ
|
130
|
,U.TLFullName AS MAKER_FULLNAME,AUTH.CONTENT AS AUTH_STATUS_APP_NAME,GR.USER_APPROVES,SHARE.SHARE_USERNAME
|
131
|
-- SELECT END
|
132
|
FROM #CM_REQUEST_TEMPLATE A
|
133
|
LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS
|
134
|
LEFT JOIN CM_TYPE_TEMPLATE TT ON TT.TYPE_TEMPLATE_ID=A.TYPE_TEMPLATE_ID
|
135
|
LEFT JOIN #BRANCH CA ON CA.BRANCH_ID = A.BRANCH_ID --NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ TẠO
|
136
|
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
|
137
|
LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID = A.BRANCH_ID
|
138
|
LEFT JOIN TL_USER U ON U.TLNANME=A.MAKER_ID
|
139
|
--WORKFLOW
|
140
|
LEFT JOIN #AUTH_STATUS AG ON AG.REQ_ID=A.REQUEST_TEMPLATE_ID AND TYPE <> 'AUT'
|
141
|
LEFT JOIN dbo.CM_ALLCODE AUTH ON AUTH.CDVAL = AG.AUT_STATUS AND AUTH.CDNAME = 'AUTH_STATUS_APP'
|
142
|
LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'AUTH_STATUS_ONL'
|
143
|
LEFT JOIN #APPROVE_GROUP GR ON GR.REQ_ID = A.REQUEST_TEMPLATE_ID
|
144
|
--END WORKFLOW
|
145
|
LEFT JOIN #SHARE SHARE ON SHARE.REQ_ID = A.REQUEST_TEMPLATE_ID
|
146
|
WHERE 1=1
|
147
|
AND (@p_MAKER_FULLNAME IS NULL OR @p_MAKER_FULLNAME='' OR U.TLFullName LIKE '%'+@p_MAKER_FULLNAME+'%' OR U.TLNANME LIKE '%'+@p_MAKER_FULLNAME+'%')
|
148
|
AND (@p_AUTH_STATUS_APP IS NULL OR @p_AUTH_STATUS_APP='' OR AG.AUT_STATUS = @p_AUTH_STATUS_APP)
|
149
|
--WORKFLOW
|
150
|
AND (@p_USER_APPROVES IS NULL OR @p_USER_APPROVES='' OR GR.USER_APPROVES LIKE '%'+@p_USER_APPROVES+'%')
|
151
|
AND (
|
152
|
(A.MAKER_ID=@p_USER_LOGIN)
|
153
|
OR (@p_USER_LOGIN = 'baotq')--NGUYENTD 27122023_SECRETKEY: Y/C CỦA ANH BẢO
|
154
|
OR (EXISTS(SELECT 1 FROM #AUTH_STATUS [as] WHERE [as].REQ_ID = A.REQUEST_TEMPLATE_ID ) )
|
155
|
OR EXISTS (SELECT 1 FROM CM_TEMPLATE_SHARE WHERE SHARE_USERNAME = @p_USER_LOGIN AND REQ_ID = A.REQUEST_TEMPLATE_ID)
|
156
|
OR (EXISTS(SELECT top(1) 1 FROM #LIST_ROLE USERROLE WHERE USERROLE.ROLE_ID = 'ADMIN_TO_TRINH' ))
|
157
|
--OR (dbo.FN_CHECK_ROLE_USER(@p_USER_LOGIN,'ADMIN_TO_TRINH')=1)
|
158
|
OR (EXISTS (SELECT top(1) 1 FROM #LIST_ROLE USERROLE WHERE USERROLE.ROLE_ID = 'GDDV'
|
159
|
AND (
|
160
|
EXISTS(SELECT top(1) 1 FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND (USERROLE.BRANCH_ID = US.TLSUBBRID OR USERROLE.DEPT_ID = US.DEP_ID) AND US.TLSUBBRID <> 'DV0001')
|
161
|
OR EXISTS(SELECT top(1) 1 FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND USERROLE.DEPT_ID = US.DEP_ID)
|
162
|
)
|
163
|
)
|
164
|
)
|
165
|
)
|
166
|
--NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ TẠO
|
167
|
AND (BR.BRANCH_ID LIKE '%'+ @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
|
168
|
AND (A.BRANCH_ID LIKE '%' + @p_DEP_ID +'%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
|
169
|
--END NGUYENTD
|
170
|
--END WORKFLOW
|
171
|
-- PAGING END
|
172
|
END
|
173
|
ELSE
|
174
|
BEGIN
|
175
|
-- PAGING BEGIN
|
176
|
SELECT TOP (@P_TOP) A.*,B.CONTENT AS AUTH_STATUS_NAME,C.CONTENT AS RECORD_STATUS_NAME
|
177
|
,TT.TYPE_TEMPLATE_NAME AS TYPE_TEMPLATE_NAME,(BR.[BRANCH_NAME] + ' - ' + CD.[DEP_NAME]) AS BRANCH_NAME
|
178
|
,U.TLFullName AS MAKER_FULLNAME ,AUTH.CONTENT AS AUTH_STATUS_APP_NAME,GR.USER_APPROVES,SHARE.SHARE_USERNAME
|
179
|
-- SELECT END
|
180
|
FROM #CM_REQUEST_TEMPLATE A
|
181
|
LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS
|
182
|
LEFT JOIN CM_TYPE_TEMPLATE TT ON TT.TYPE_TEMPLATE_ID=A.TYPE_TEMPLATE_ID
|
183
|
LEFT JOIN #BRANCH CA ON CA.BRANCH_ID = A.BRANCH_ID --NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ
|
184
|
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
|
185
|
LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID = A.BRANCH_ID
|
186
|
LEFT JOIN TL_USER U ON U.TLNANME=A.MAKER_ID
|
187
|
--WORKFLOW
|
188
|
LEFT JOIN #AUTH_STATUS AG ON AG.REQ_ID=A.REQUEST_TEMPLATE_ID AND TYPE <> 'AUT'
|
189
|
LEFT JOIN dbo.CM_ALLCODE AUTH ON AUTH.CDVAL = AG.AUT_STATUS AND AUTH.CDNAME = 'AUTH_STATUS_APP'
|
190
|
LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'AUTH_STATUS_ONL'
|
191
|
LEFT JOIN #APPROVE_GROUP GR ON GR.REQ_ID = A.REQUEST_TEMPLATE_ID
|
192
|
--END WORKFLOW
|
193
|
LEFT JOIN #SHARE SHARE ON SHARE.REQ_ID = A.REQUEST_TEMPLATE_ID
|
194
|
WHERE 1=1
|
195
|
AND (@p_MAKER_FULLNAME IS NULL OR @p_MAKER_FULLNAME='' OR U.TLFullName LIKE '%'+@p_MAKER_FULLNAME+'%' OR U.TLNANME LIKE '%'+@p_MAKER_FULLNAME+'%')
|
196
|
AND (@p_AUTH_STATUS_APP IS NULL OR @p_AUTH_STATUS_APP='' OR AG.AUT_STATUS = @p_AUTH_STATUS_APP)
|
197
|
--WORKFLOW
|
198
|
AND (@p_USER_APPROVES IS NULL OR @p_USER_APPROVES='' OR GR.USER_APPROVES LIKE '%'+@p_USER_APPROVES+'%')
|
199
|
AND (
|
200
|
(A.MAKER_ID=@p_USER_LOGIN)
|
201
|
OR (@p_USER_LOGIN = 'baotq')--NGUYENTD 27122023_SECRETKEY: Y/C CỦA ANH BẢO
|
202
|
OR (EXISTS(SELECT 1 FROM #AUTH_STATUS [as] WHERE [as].REQ_ID = A.REQUEST_TEMPLATE_ID ) )
|
203
|
OR EXISTS (SELECT 1 FROM CM_TEMPLATE_SHARE WHERE SHARE_USERNAME = @p_USER_LOGIN AND REQ_ID = A.REQUEST_TEMPLATE_ID)
|
204
|
OR (EXISTS(SELECT top(1) 1 FROM #LIST_ROLE USERROLE WHERE USERROLE.ROLE_ID = 'ADMIN_TO_TRINH' ))
|
205
|
--OR (dbo.FN_CHECK_ROLE_USER(@p_USER_LOGIN,'ADMIN_TO_TRINH')=1)
|
206
|
OR (EXISTS (SELECT top(1) 1 FROM #LIST_ROLE USERROLE WHERE USERROLE.ROLE_ID = 'GDDV'
|
207
|
AND (
|
208
|
EXISTS(SELECT top(1) 1 FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND (USERROLE.BRANCH_ID = US.TLSUBBRID OR USERROLE.DEPT_ID = US.DEP_ID) AND US.TLSUBBRID <> 'DV0001')
|
209
|
OR EXISTS(SELECT top(1) 1 FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND USERROLE.DEPT_ID = US.DEP_ID)
|
210
|
)
|
211
|
)
|
212
|
)
|
213
|
)
|
214
|
--NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ TẠO
|
215
|
AND (BR.BRANCH_ID LIKE '%'+ @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
|
216
|
AND (A.BRANCH_ID LIKE '%' + @p_DEP_ID +'%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
|
217
|
--END NGUYENTD
|
218
|
--END WORKFLOW
|
219
|
-- PAGING END
|
220
|
END
|
221
|
END -- PAGING
|
222
|
DROP TABLE #LIST_ROLE
|
223
|
DROP TABLE #AUTH_STATUS
|
224
|
DROP TABLE #CM_REQUEST_TEMPLATE
|
225
|
DROP TABLE #SHARE
|
226
|
DROP TABLE #APPROVE_GROUP
|
227
|
DROP TABLE #BRANCH
|
228
|
--20122024_SECRETKEY
|