Project

General

Profile

1.0.20.12.2024 BVBANK NHOM DUYET TO TRINH .txt

Luc Tran Van, 12/20/2024 11:17 AM

 
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
	,CASE 
130
		WHEN BR.[BRANCH_ID] IS NOT NULL THEN BR.[BRANCH_NAME]
131
		ELSE (SELECT TOP 1 D.[BRANCH_NAME] + ' - ' + C.[DEP_NAME]
132
				FROM CM_DEPARTMENT C 
133
				LEFT JOIN CM_BRANCH D ON D.BRANCH_ID = C.BRANCH_ID
134
				WHERE C.DEP_ID = A.BRANCH_ID)
135
	 END AS	BRANCH_NAME--NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ
136
	,U.TLFullName AS MAKER_FULLNAME,AUTH.CONTENT AS AUTH_STATUS_APP_NAME,GR.USER_APPROVES,SHARE.SHARE_USERNAME
137
	-- SELECT END
138
	FROM #CM_REQUEST_TEMPLATE A
139
	LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS 
140
	LEFT JOIN CM_TYPE_TEMPLATE TT ON TT.TYPE_TEMPLATE_ID=A.TYPE_TEMPLATE_ID
141
	LEFT JOIN #BRANCH CA ON CA.BRANCH_ID = A.BRANCH_ID --NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ TẠO
142
	LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
143
	LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID = A.BRANCH_ID
144
	LEFT JOIN TL_USER U ON U.TLNANME=A.MAKER_ID
145
	--WORKFLOW
146
	LEFT JOIN #AUTH_STATUS 	AG ON AG.REQ_ID=A.REQUEST_TEMPLATE_ID AND TYPE <> 'AUT'
147
	LEFT JOIN dbo.CM_ALLCODE AUTH ON AUTH.CDVAL = AG.AUT_STATUS AND AUTH.CDNAME = 'AUTH_STATUS_APP'
148
	LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'AUTH_STATUS_ONL'
149
	LEFT JOIN #APPROVE_GROUP GR ON GR.REQ_ID = A.REQUEST_TEMPLATE_ID
150
	--END WORKFLOW
151
    LEFT JOIN #SHARE SHARE ON SHARE.REQ_ID = A.REQUEST_TEMPLATE_ID
152
	WHERE 1=1	
153
	AND (@p_MAKER_FULLNAME IS NULL OR @p_MAKER_FULLNAME='' OR U.TLFullName LIKE '%'+@p_MAKER_FULLNAME+'%' OR	U.TLNANME LIKE '%'+@p_MAKER_FULLNAME+'%')
154
	AND (@p_AUTH_STATUS_APP IS NULL OR @p_AUTH_STATUS_APP='' OR AG.AUT_STATUS = @p_AUTH_STATUS_APP)
155
	--WORKFLOW
156
	AND (@p_USER_APPROVES IS NULL OR @p_USER_APPROVES='' OR GR.USER_APPROVES LIKE '%'+@p_USER_APPROVES+'%')
157
	AND		(
158
				(A.MAKER_ID=@p_USER_LOGIN) 
159
				OR (@p_USER_LOGIN = 'baotq')--NGUYENTD 27122023_SECRETKEY: Y/C CỦA ANH BẢO
160
				OR (EXISTS(SELECT 1 FROM #AUTH_STATUS [as] WHERE [as].REQ_ID = A.REQUEST_TEMPLATE_ID	) )
161
				OR EXISTS (SELECT 1 FROM CM_TEMPLATE_SHARE WHERE SHARE_USERNAME = @p_USER_LOGIN AND REQ_ID = A.REQUEST_TEMPLATE_ID)
162
				OR (EXISTS(SELECT top(1) 1 FROM #LIST_ROLE  USERROLE WHERE USERROLE.ROLE_ID = 'ADMIN_TO_TRINH'  ))
163
				--OR (dbo.FN_CHECK_ROLE_USER(@p_USER_LOGIN,'ADMIN_TO_TRINH')=1)
164
				OR (EXISTS	(SELECT top(1) 1 FROM #LIST_ROLE USERROLE WHERE USERROLE.ROLE_ID = 'GDDV' 
165
																										AND (
166
																												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')
167
																												OR EXISTS(SELECT top(1) 1 FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND USERROLE.DEPT_ID = US.DEP_ID)
168
																											)
169
							)
170
					)
171
			)
172
	--NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ TẠO
173
	AND (BR.BRANCH_ID LIKE '%'+ @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
174
	AND (A.BRANCH_ID LIKE '%' + @p_DEP_ID +'%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
175
	--END NGUYENTD
176
	--END WORKFLOW
177
-- PAGING END
178
	END
179
	ELSE
180
	BEGIN	
181
	-- PAGING BEGIN
182
	SELECT TOP (@P_TOP) A.*,B.CONTENT AS AUTH_STATUS_NAME,C.CONTENT AS RECORD_STATUS_NAME
183
	,TT.TYPE_TEMPLATE_NAME AS TYPE_TEMPLATE_NAME,CASE 
184
		WHEN BR.[BRANCH_ID] IS NOT NULL THEN BR.[BRANCH_NAME]
185
		ELSE (SELECT TOP 1 D.[BRANCH_NAME] + ' - ' + C.[DEP_NAME]
186
				FROM CM_DEPARTMENT C 
187
				LEFT JOIN CM_BRANCH D ON D.BRANCH_ID = C.BRANCH_ID
188
				WHERE C.DEP_ID = A.BRANCH_ID)
189
	 END AS	BRANCH_NAME
190
	,U.TLFullName AS MAKER_FULLNAME	,AUTH.CONTENT AS AUTH_STATUS_APP_NAME,GR.USER_APPROVES,SHARE.SHARE_USERNAME
191
	-- SELECT END
192
	FROM #CM_REQUEST_TEMPLATE A
193
	LEFT JOIN CM_ALLCODE C ON C.CDNAME = 'RECORD_STATUS' AND C.CDVAL = A.RECORD_STATUS 
194
	LEFT JOIN CM_TYPE_TEMPLATE TT ON TT.TYPE_TEMPLATE_ID=A.TYPE_TEMPLATE_ID
195
	LEFT JOIN #BRANCH CA ON CA.BRANCH_ID = A.BRANCH_ID --NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ
196
	LEFT JOIN CM_BRANCH BR ON BR.BRANCH_ID = A.BRANCH_ID
197
	LEFT JOIN CM_DEPARTMENT CD ON CD.DEP_ID = A.BRANCH_ID
198
	LEFT JOIN TL_USER U ON U.TLNANME=A.MAKER_ID
199
	--WORKFLOW
200
	LEFT JOIN #AUTH_STATUS 	AG ON AG.REQ_ID=A.REQUEST_TEMPLATE_ID AND TYPE <> 'AUT'
201
	LEFT JOIN dbo.CM_ALLCODE AUTH ON AUTH.CDVAL = AG.AUT_STATUS AND AUTH.CDNAME = 'AUTH_STATUS_APP'
202
	LEFT JOIN dbo.CM_ALLCODE B ON B.CDVAL = A.AUTH_STATUS AND B.CDNAME = 'AUTH_STATUS_ONL'
203
	LEFT JOIN #APPROVE_GROUP GR ON GR.REQ_ID = A.REQUEST_TEMPLATE_ID
204
	--END WORKFLOW
205
    LEFT JOIN #SHARE SHARE ON SHARE.REQ_ID = A.REQUEST_TEMPLATE_ID
206
	WHERE 1=1	
207
	AND (@p_MAKER_FULLNAME IS NULL OR @p_MAKER_FULLNAME='' OR U.TLFullName LIKE '%'+@p_MAKER_FULLNAME+'%' OR	U.TLNANME LIKE '%'+@p_MAKER_FULLNAME+'%')
208
	AND (@p_AUTH_STATUS_APP IS NULL OR @p_AUTH_STATUS_APP='' OR AG.AUT_STATUS = @p_AUTH_STATUS_APP)
209
	--WORKFLOW
210
	AND (@p_USER_APPROVES IS NULL OR @p_USER_APPROVES='' OR GR.USER_APPROVES LIKE '%'+@p_USER_APPROVES+'%')
211
	AND		(
212
				(A.MAKER_ID=@p_USER_LOGIN) 
213
				OR (@p_USER_LOGIN = 'baotq')--NGUYENTD 27122023_SECRETKEY: Y/C CỦA ANH BẢO
214
				OR (EXISTS(SELECT 1 FROM #AUTH_STATUS [as] WHERE [as].REQ_ID = A.REQUEST_TEMPLATE_ID	) )
215
				OR EXISTS (SELECT 1 FROM CM_TEMPLATE_SHARE WHERE SHARE_USERNAME = @p_USER_LOGIN AND REQ_ID = A.REQUEST_TEMPLATE_ID)
216
				OR (EXISTS(SELECT top(1) 1 FROM #LIST_ROLE  USERROLE WHERE USERROLE.ROLE_ID = 'ADMIN_TO_TRINH'  ))
217
				--OR (dbo.FN_CHECK_ROLE_USER(@p_USER_LOGIN,'ADMIN_TO_TRINH')=1)
218
				OR (EXISTS	(SELECT top(1) 1 FROM #LIST_ROLE USERROLE WHERE USERROLE.ROLE_ID = 'GDDV' 
219
																										AND (
220
																												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')
221
																												OR EXISTS(SELECT top(1) 1 FROM TL_USER US WHERE US.TLNANME = A.MAKER_ID AND USERROLE.DEPT_ID = US.DEP_ID)
222
																											)
223
							)
224
					)
225
			)
226
	--NGUYENTD 17032024_SECRETKEY: FIX TÌM KIẾM THEO ĐƠN VỊ TẠO
227
	AND (BR.BRANCH_ID LIKE '%'+ @p_BRANCH_ID + '%' OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
228
	AND (A.BRANCH_ID LIKE '%' + @p_DEP_ID +'%' OR @p_DEP_ID IS NULL OR @p_DEP_ID = '')
229
	--END NGUYENTD
230
	--END WORKFLOW
231
	-- PAGING END
232
	END
233
END -- PAGING
234
DROP TABLE #LIST_ROLE
235
DROP TABLE #AUTH_STATUS 
236
DROP TABLE #CM_REQUEST_TEMPLATE
237
DROP TABLE #SHARE
238
DROP TABLE #APPROVE_GROUP
239
DROP TABLE #BRANCH
240
--20122024_SECRETKEY