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
|
AS
|
31
|
BEGIN -- PAGING
|
32
|
|
33
|
IF @P_TOP IS NULL OR @P_TOP = ''
|
34
|
BEGIN
|
35
|
|
36
|
-- PAGING BEGIN
|
37
|
SELECT A.*,B.CONTENT AS AUTH_STATUS_NAME,C.CONTENT AS RECORD_STATUS_NAME
|
38
|
,TT.TYPE_TEMPLATE_NAME AS TYPE_TEMPLATE_NAME
|
39
|
,CASE
|
40
|
WHEN BR.[BRANCH_ID] IS NOT NULL THEN BR.[BRANCH_NAME]
|
41
|
ELSE (SELECT TOP 1 D.[BRANCH_NAME] + ' - ' + C.[DEP_NAME]
|
42
|
FROM CM_DEPARTMENT C
|
43
|
LEFT JOIN CM_BRANCH D ON D.BRANCH_ID = C.BRANCH_ID
|
44
|
WHERE C.DEP_ID = A.BRANCH_ID)
|
45
|
END AS BRANCH_NAME
|
46
|
,U.TLFullName AS MAKER_FULLNAME
|
47
|
,AUTH.CONTENT AS AUTH_STATUS_APP_NAME
|
48
|
,GR.USER_APPROVES
|
49
|
-- SELECT END
|
50
|
FROM CM_REQUEST_TEMPLATE A
|
51
|
--LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
|
52
|
LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS
|
53
|
LEFT JOIN CM_TYPE_TEMPLATE TT ON TT.TYPE_TEMPLATE_ID=A.TYPE_TEMPLATE_ID
|
54
|
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=A.BRANCH_ID
|
55
|
LEFT JOIN TL_USER U ON U.TLNANME=A.MAKER_ID
|
56
|
--WORKFLOW
|
57
|
LEFT JOIN
|
58
|
(
|
59
|
SELECT
|
60
|
G.REQ_ID
|
61
|
,CASE
|
62
|
WHEN DONE=0 THEN 'U'
|
63
|
WHEN DONE=1 THEN 'A'
|
64
|
END AS AUT_STATUS
|
65
|
FROM CM_APPROVE_GROUP G WHERE (DONE=1 OR PROCESS_STATUS=1) AND (@p_USER_LOGIN=APPROVE_USERNAME OR @p_USER_LOGIN=AUTHORITY_NAME)
|
66
|
) AG ON AG.REQ_ID=A.REQUEST_TEMPLATE_ID
|
67
|
LEFT JOIN dbo.CM_ALLCODE AUTH ON AUTH.CDVAL = AG.AUT_STATUS AND AUTH.CDNAME = 'AUTH_STATUS_APP'
|
68
|
LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'AUTH_STATUS_ONL'
|
69
|
LEFT JOIN (
|
70
|
SELECT A.REQ_ID,
|
71
|
STUFF( (select ';' + U.TLFullName from CM_APPROVE_GROUP G JOIN TL_USER U ON G.APPROVE_USERNAME=U.TLNANME WHERE REQ_ID=A.REQ_ID AND PROCESS_STATUS=1 AND DONE=0 AND [TYPE]='APP' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS USER_APPROVES
|
72
|
FROM CM_APPROVE_GROUP A WHERE PROCESS_STATUS=1 AND DONE=0
|
73
|
GROUP BY REQ_ID
|
74
|
) GR ON GR.REQ_ID=A.REQUEST_TEMPLATE_ID
|
75
|
--END WORKFLOW
|
76
|
WHERE 1=1 AND
|
77
|
(@p_REQUEST_TEMPLATE_CODE IS NULL OR @p_REQUEST_TEMPLATE_CODE='' OR REQUEST_TEMPLATE_CODE LIKE '%' + @p_REQUEST_TEMPLATE_CODE + '%') AND
|
78
|
(@p_REQUEST_TEMPLATE_NAME IS NULL OR @p_REQUEST_TEMPLATE_NAME='' OR REQUEST_TEMPLATE_NAME LIKE '%' + @p_REQUEST_TEMPLATE_NAME + '%') AND
|
79
|
(@p_TYPE_TEMPLATE_ID IS NULL OR @p_TYPE_TEMPLATE_ID='' OR A.TYPE_TEMPLATE_ID LIKE '%' + @p_TYPE_TEMPLATE_ID + '%') AND
|
80
|
(@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES = @p_NOTES) AND
|
81
|
(@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND
|
82
|
(@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%') AND
|
83
|
--(@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR MAKER_ID = @p_MAKER_ID) AND
|
84
|
(@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND
|
85
|
(@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND
|
86
|
(@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID) AND
|
87
|
(@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
|
88
|
AND (A.REPORT_DT >= CONVERT(DATE,@p_FROM_DATE,103) OR @p_FROM_DATE IS NULL OR @p_FROM_DATE = '')
|
89
|
AND (A.REPORT_DT <= CONVERT(DATE,@p_TO_DATE,103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '')
|
90
|
AND(REPORT_DT=CONVERT(DATETIME,@p_REPORT_DT,103) OR @p_REPORT_DT IS NULL)
|
91
|
AND(@p_MAKER_FULLNAME IS NULL OR @p_MAKER_FULLNAME='' OR U.TLFullName LIKE '%'+@p_MAKER_FULLNAME+'%' OR U.TLNANME LIKE '%'+@p_MAKER_FULLNAME+'%')
|
92
|
AND(@p_REPORT_NO IS NULL OR @p_REPORT_NO='' OR A.REPORT_NO LIKE '%'+@p_REPORT_NO+'%')
|
93
|
AND(@p_AUTH_STATUS_APP IS NULL OR @p_AUTH_STATUS_APP='' OR AG.AUT_STATUS = @p_AUTH_STATUS_APP)
|
94
|
AND(@p_TITLE IS NULL OR @p_TITLE='' OR A.TITLE LIKE '%'+@p_TITLE+'%')
|
95
|
--WORKFLOW
|
96
|
AND (@p_USER_APPROVES IS NULL OR @p_USER_APPROVES='' OR GR.USER_APPROVES LIKE '%'+@p_USER_APPROVES+'%')
|
97
|
AND (
|
98
|
(A.MAKER_ID=@p_USER_LOGIN)
|
99
|
OR (EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE REQ_ID=A.REQUEST_TEMPLATE_ID AND (APPROVE_USERNAME=@p_USER_LOGIN OR AUTHORITY_NAME=@p_USER_LOGIN) AND( DONE=1 OR PROCESS_STATUS=1 OR [TYPE]='AUT') ) )
|
100
|
OR (@p_USER_LOGIN IN (SELECT SHARE_USERNAME FROM CM_TEMPLATE_SHARE WHERE REQ_ID=A.REQUEST_TEMPLATE_ID) )
|
101
|
OR (EXISTS(SELECT top(1) 1 FROM [dbo].[TL_USER_GET_ROLES] (@p_USER_LOGIN) USERROLE WHERE USERROLE.ROLE_ID = 'ADMIN_TO_TRINH' ))
|
102
|
--OR (dbo.FN_CHECK_ROLE_USER(@p_USER_LOGIN,'ADMIN_TO_TRINH')=1)
|
103
|
OR (EXISTS(SELECT top(1) 1 FROM [dbo].[TL_USER_GET_ROLES] (@p_USER_LOGIN) USERROLE WHERE USERROLE.ROLE_ID = 'GDDV'
|
104
|
AND (
|
105
|
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')
|
106
|
OR EXISTS(SELECT top(1) 1 FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND USERROLE.DEPT_ID = US.DEP_ID)
|
107
|
)
|
108
|
)
|
109
|
)
|
110
|
)
|
111
|
AND ((A.RECORD_STATUS = '0' AND (A.MAKER_ID = @p_USER_LOGIN)) OR A.RECORD_STATUS = '1')
|
112
|
--END WORKFLOW
|
113
|
ORDER BY A.CREATE_DT DESC
|
114
|
-- PAGING END
|
115
|
END
|
116
|
ELSE
|
117
|
BEGIN
|
118
|
-- PAGING BEGIN
|
119
|
SELECT TOP (@P_TOP) A.*,B.CONTENT AS AUTH_STATUS_NAME,C.CONTENT AS RECORD_STATUS_NAME
|
120
|
,TT.TYPE_TEMPLATE_NAME AS TYPE_TEMPLATE_NAME
|
121
|
,CASE
|
122
|
WHEN BR.[BRANCH_ID] IS NOT NULL THEN BR.[BRANCH_NAME]
|
123
|
ELSE (SELECT TOP 1 D.[BRANCH_NAME] + ' - ' + C.[DEP_NAME]
|
124
|
FROM CM_DEPARTMENT C
|
125
|
LEFT JOIN CM_BRANCH D ON D.BRANCH_ID = C.BRANCH_ID
|
126
|
WHERE C.DEP_ID = A.BRANCH_ID)
|
127
|
END AS BRANCH_NAME
|
128
|
,U.TLFullName AS MAKER_FULLNAME
|
129
|
,AUTH.CONTENT AS AUTH_STATUS_APP_NAME
|
130
|
,GR.USER_APPROVES
|
131
|
-- SELECT END
|
132
|
FROM CM_REQUEST_TEMPLATE A
|
133
|
--LEFT JOIN CM_AUTH_STATUS B ON A.AUTH_STATUS=B.AUTH_STATUS
|
134
|
LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS
|
135
|
LEFT JOIN CM_TYPE_TEMPLATE TT ON TT.TYPE_TEMPLATE_ID=A.TYPE_TEMPLATE_ID
|
136
|
LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID=A.BRANCH_ID
|
137
|
LEFT JOIN TL_USER U ON U.TLNANME=A.MAKER_ID
|
138
|
--WORKFLOW
|
139
|
LEFT JOIN
|
140
|
(
|
141
|
SELECT
|
142
|
G.REQ_ID
|
143
|
,CASE
|
144
|
WHEN DONE=0 THEN 'U'
|
145
|
WHEN DONE=1 THEN 'A'
|
146
|
END AS AUT_STATUS
|
147
|
FROM CM_APPROVE_GROUP G WHERE (DONE=1 OR PROCESS_STATUS=1) AND (@p_USER_LOGIN=APPROVE_USERNAME OR @p_USER_LOGIN=AUTHORITY_NAME)
|
148
|
) AG ON AG.REQ_ID=A.REQUEST_TEMPLATE_ID
|
149
|
LEFT JOIN dbo.CM_ALLCODE AUTH ON AUTH.CDVAL = AG.AUT_STATUS AND AUTH.CDNAME = 'AUTH_STATUS_APP'
|
150
|
LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'AUTH_STATUS_ONL'
|
151
|
LEFT JOIN (
|
152
|
SELECT A.REQ_ID,
|
153
|
STUFF( (select ';' + U.TLFullName from CM_APPROVE_GROUP G JOIN TL_USER U ON G.APPROVE_USERNAME=U.TLNANME WHERE REQ_ID=A.REQ_ID AND PROCESS_STATUS=1 AND DONE=0 AND [TYPE]='APP' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') AS USER_APPROVES
|
154
|
FROM CM_APPROVE_GROUP A WHERE PROCESS_STATUS=1 AND DONE=0
|
155
|
GROUP BY REQ_ID
|
156
|
) GR ON GR.REQ_ID=A.REQUEST_TEMPLATE_ID
|
157
|
--END WORKFLOW
|
158
|
WHERE 1=1 AND
|
159
|
(@p_REQUEST_TEMPLATE_CODE IS NULL OR @p_REQUEST_TEMPLATE_CODE='' OR REQUEST_TEMPLATE_CODE LIKE '%' + @p_REQUEST_TEMPLATE_CODE + '%') AND
|
160
|
(@p_REQUEST_TEMPLATE_NAME IS NULL OR @p_REQUEST_TEMPLATE_NAME='' OR REQUEST_TEMPLATE_NAME LIKE '%' + @p_REQUEST_TEMPLATE_NAME + '%') AND
|
161
|
(@p_TYPE_TEMPLATE_ID IS NULL OR @p_TYPE_TEMPLATE_ID='' OR A.TYPE_TEMPLATE_ID LIKE '%' + @p_TYPE_TEMPLATE_ID + '%') AND
|
162
|
(@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES = @p_NOTES) AND
|
163
|
(@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND
|
164
|
(@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%') AND
|
165
|
--(@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR MAKER_ID = @p_MAKER_ID) AND
|
166
|
(@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND
|
167
|
(@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND
|
168
|
(@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID) AND
|
169
|
(@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR,A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0)
|
170
|
AND (A.REPORT_DT >= CONVERT(DATE,@p_FROM_DATE,103) OR @p_FROM_DATE IS NULL OR @p_FROM_DATE = '')
|
171
|
AND (A.REPORT_DT <= CONVERT(DATE,@p_TO_DATE,103) OR @p_TO_DATE IS NULL OR @p_TO_DATE = '')
|
172
|
AND(REPORT_DT=CONVERT(DATETIME,@p_REPORT_DT,103) OR @p_REPORT_DT IS NULL)
|
173
|
AND(@p_MAKER_FULLNAME IS NULL OR @p_MAKER_FULLNAME='' OR U.TLFullName LIKE '%'+@p_MAKER_FULLNAME+'%' OR U.TLNANME LIKE '%'+@p_MAKER_FULLNAME+'%')
|
174
|
AND(@p_REPORT_NO IS NULL OR @p_REPORT_NO='' OR A.REPORT_NO LIKE '%'+@p_REPORT_NO+'%')
|
175
|
AND(@p_AUTH_STATUS_APP IS NULL OR @p_AUTH_STATUS_APP='' OR AG.AUT_STATUS = @p_AUTH_STATUS_APP)
|
176
|
AND(@p_TITLE IS NULL OR @p_TITLE='' OR A.TITLE LIKE '%'+@p_TITLE+'%')
|
177
|
--WORKFLOW
|
178
|
AND (@p_USER_APPROVES IS NULL OR @p_USER_APPROVES='' OR GR.USER_APPROVES LIKE '%'+@p_USER_APPROVES+'%')
|
179
|
AND (
|
180
|
(A.MAKER_ID=@p_USER_LOGIN)
|
181
|
OR (EXISTS(SELECT * FROM CM_APPROVE_GROUP WHERE REQ_ID=A.REQUEST_TEMPLATE_ID AND (APPROVE_USERNAME=@p_USER_LOGIN OR AUTHORITY_NAME=@p_USER_LOGIN) AND( DONE=1 OR PROCESS_STATUS=1 OR [TYPE]='AUT') ) )
|
182
|
OR (@p_USER_LOGIN IN (SELECT SHARE_USERNAME FROM CM_TEMPLATE_SHARE WHERE REQ_ID=A.REQUEST_TEMPLATE_ID) )
|
183
|
OR (EXISTS(SELECT top(1) 1 FROM [dbo].[TL_USER_GET_ROLES] (@p_USER_LOGIN) USERROLE WHERE USERROLE.ROLE_ID = 'ADMIN_TO_TRINH' ))
|
184
|
--OR (dbo.FN_CHECK_ROLE_USER(@p_USER_LOGIN,'ADMIN_TO_TRINH')=1)
|
185
|
OR (EXISTS(SELECT * FROM [dbo].[TL_USER_GET_ROLES] (@p_USER_LOGIN) USERROLE WHERE USERROLE.ROLE_ID = 'GDDV'
|
186
|
AND (
|
187
|
EXISTS(SELECT * 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')
|
188
|
OR EXISTS(SELECT * FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND USERROLE.DEPT_ID = US.DEP_ID)
|
189
|
)
|
190
|
)
|
191
|
)
|
192
|
)
|
193
|
AND ((A.RECORD_STATUS = '0' AND (A.MAKER_ID = @p_USER_LOGIN)) OR A.RECORD_STATUS = '1')
|
194
|
--END WORKFLOW
|
195
|
ORDER BY A.CREATE_DT DESC
|
196
|
-- PAGING END
|
197
|
END
|
198
|
END -- PAGING
|