Project

General

Profile

CM_REQUEST_TEMPLATE_Search.txt

Luc Tran Van, 03/18/2023 12:16 PM

 
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