Project

General

Profile

TR_RATE_SUPPLIER_MASTER_Search.txt

Luc Tran Van, 12/12/2022 02:29 PM

 
1

    
2
ALTER PROCEDURE [dbo].[TR_RATE_SUPPLIER_MASTER_Search]
3
	@p_RATE_ID VARCHAR(15) = NULL,
4
	@p_RATE_REQ_NO VARCHAR(15) = NULL,
5
	@p_SUP_ID VARCHAR(15) = NULL,
6
	@p_RATE_FROM_DT VARCHAR(20) = NULL,
7
	@p_RATE_TO_DT VARCHAR(20) = NULL,
8
	@p_HH_ID VARCHAR(15) = NULL,
9
	@p_RECORD_STATUS VARCHAR(1) = NULL,
10
	@p_CREATE_DT VARCHAR(20) = NULL,
11
	@p_AUTH_STATUS VARCHAR(1) = NULL,
12
	@p_MAKER_ID VARCHAR(15) = NULL,
13
	@p_CHECKER_ID VARCHAR(15) = NULL,
14
	@p_APPROVE_DT VARCHAR(20) = NULL,
15
	@p_PROCESS_STATUS VARCHAR(15) = NULL,
16
	@p_BRANCH_ID VARCHAR(15) = NULL,
17
	@p_DEP_ID VARCHAR(15) = NULL,
18
	@p_FROM_DT VARCHAR(20) = NULL,
19
	@p_TO_DT VARCHAR(20) = NULL,
20
	@p_TYPE VARCHAR(15) = NULL,
21
	@p_NGUOIXULY VARCHAR(20) = NULL,
22
	@p_IS_TRANSFER VARCHAR(1) = NULL,
23
	@p_USER_LOGIN VARCHAR(15),
24
	@p_TOP INT = 10
25

    
26
AS
27
BEGIN -- PAGING
28
	
29
	DECLARE @p_USER_LOGIN_ROLE VARCHAR(15) = (
30
		SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN
31
	)
32
	DECLARE @p_BRANCH_TYPE VARCHAR(15) = (
33
		SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID
34
	)
35
	------------------Bảng DVDM-------------
36
	DECLARE @AUTHOR_DVDM TABLE
37
	(
38
		ROLE_ID VARCHAR(100),
39
		BRANCH_ID VARCHAR(20),
40
		DEP_ID VARCHAR(20),
41
		DVDM_ID VARCHAR(20)
42
	)
43

    
44
	INSERT INTO @AUTHOR_DVDM
45
	(
46
	    ROLE_ID,
47
	    BRANCH_ID,
48
	    DEP_ID,
49
	    DVDM_ID
50
	)
51
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
52
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
53
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
54
	WHERE TU.TLNANME=@p_USER_LOGIN
55
	UNION ALL
56
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
57
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
58
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
59
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
60
	WHERE TU.TLNANME=@p_USER_LOGIN
61
	UNION ALL
62
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
63
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
64
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
65
	WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
66
	UNION ALL
67
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
68
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
69
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
70
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
71
	WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
72

    
73
	---------------------Bảng DMMS------------------
74
	DECLARE @AUTHOR_DMMS TABLE
75
	(
76
		ROLE_ID VARCHAR(100),
77
		BRANCH_ID VARCHAR(20),
78
		DEP_ID VARCHAR(20),
79
		DMMS_ID VARCHAR(20)
80
	)
81
	INSERT INTO @AUTHOR_DMMS
82
	(
83
	    ROLE_ID,
84
	    BRANCH_ID,
85
	    DEP_ID,
86
		DMMS_ID
87
	)
88
	--SELECT RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
89
	--LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
90
	--LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
91
	--WHERE TLNANME=@p_USER_LOGIN
92
	SELECT TUR.ROLE_ID AS RoleName, TUR.BRANCH_ID AS TLSUBBRID, TUR.DEPT_ID AS SECUR_CODE, MS.DMMS_ID
93
	FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) TUR
94
	LEFT JOIN CM_BRANCH CB ON CB.BRANCH_ID = TUR.BRANCH_ID
95
	LEFT JOIN CM_DMMS MS ON MS.BRANCH_ID = TUR.BRANCH_ID AND (TUR.DEPT_ID = MS.DEP_ID OR CB.BRANCH_TYPE <> 'HS')
96
	UNION ALL
97
	SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
98
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
99
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
100
	LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TU.SECUR_CODE=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
101
	WHERE TLNANME=@p_USER_LOGIN
102
	UNION ALL
103
	SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
104
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
105
	LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
106
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
107
	UNION ALL
108
	SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
109
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
110
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
111
	LEFT JOIN dbo.CM_DMMS MS ON MS.BRANCH_ID = CB.BRANCH_ID AND (TM1.DEP_ID=MS.DEP_ID OR CB.BRANCH_TYPE <>'HS')
112
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
113

    
114

    
115
	----------BẢNG NGƯỜI XỬ LÝ TIẾP THEO-----------
116
	DECLARE @t_NEXT_PROCESS_USER TABLE(
117
		REQ_ID VARCHAR(15),
118
		PROCESS_ID VARCHAR(50),
119
		DVDM_NAME NVARCHAR(200),
120
		TLNAME VARCHAR(50),
121
		TL_FULLNAME NVARCHAR(200),
122
		NOTES NVARCHAR(500)
123
	)
124
	INSERT INTO @t_NEXT_PROCESS_USER (REQ_ID, PROCESS_ID, DVDM_NAME, TLNAME, TL_FULLNAME, NOTES)
125
	SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLNANME ELSE TU.TLNANME END AS TLNAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLFullName ELSE TU.TLFullName END AS TLFullName,CASE WHEN TempC.ID IS NULL THEN PL.NOTES ELSE TempC.CONTENT END AS NOTES 	
126
	FROM
127
	(SELECT * FROM dbo.PL_REQUEST_PROCESS PRC
128
	WHERE EXISTS(SELECT TRD.RATE_ID FROM dbo.TR_RATE_SUPPLIER_MASTER TRD WHERE TRD.RATE_ID=PRC.REQ_ID) 
129
	AND PRC.PROCESS_ID ='DMMS' AND PRC.STATUS='C'
130
	) PL
131
	LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID
132
	LEFT JOIN dbo.TR_RATE_SUPPLIER_MASTER TR ON TR.RATE_ID=PL.REQ_ID
133
	LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID
134
	LEFT JOIN 
135
	(
136
	------------BAODNQ 11/10/2022 : Ở bước điều phối lần đầu tiên cả GDDV và KSV cùng thấy phiếu--------------
137
	--SELECT PRC.ID, PRC.PROCESS_ID,PRC.REQ_ID,PRC.TLNAME,AC.CONTENT FROM dbo.PL_REQUEST_PROCESS_CHILD PRC 
138
	--LEFT JOIN dbo.CM_ALLCODE AC ON AC.CDVAL=PRC.TYPE_JOB AND AC.CDNAME='JOB_TYPE' AND CDTYPE='REQ'
139
	--WHERE (PRC.STATUS_JOB='C' OR PRC.STATUS_JOB='R' )
140
	SELECT PRC.ID, PRC.PROCESS_ID,PRC.REQ_ID,PRC.TLNAME,AC.CONTENT FROM dbo.PL_REQUEST_PROCESS_CHILD PRC 
141
	LEFT JOIN dbo.CM_ALLCODE AC ON AC.CDVAL=PRC.TYPE_JOB AND AC.CDNAME='JOB_TYPE' AND CDTYPE='REQ'
142
	WHERE (PRC.STATUS_JOB='C' OR PRC.STATUS_JOB='R' 
143
		OR (PRC.STATUS_JOB = 'U' AND EXISTS(
144
				SELECT PC.ID FROM PL_REQUEST_PROCESS_CHILD PC 
145
				WHERE PC.REQ_ID = PRC.REQ_ID AND PC.TYPE_JOB = 'KS' 
146
				AND PC.MAKER_ID IS NULL AND PC.TRANFER_DT IS NULL
147
				)
148
				AND NOT EXISTS(SELECT PC_2.ID FROM PL_REQUEST_PROCESS_CHILD PC_2 WHERE PC_2.REQ_ID = PRC.REQ_ID AND PC_2.TYPE_JOB = 'XL')
149
		)
150
	)
151
	------------END BAODNQ 11/10/2022----------------
152
	)TempC ON TempC.PROCESS_ID =PL.ID AND PL.IS_HAS_CHILD=1
153
	LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=TempC.TLNAME
154
	LEFT JOIN 
155
	(
156
		SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DMMS_ID 
157
		FROM
158
		(
159
		SELECT TS.TLNANME,TS.TLFullName,
160
		--TS.RoleName,
161
		AR.DisplayName AS RoleName,
162
		TS.TLSUBBRID,TS.SECUR_CODE FROM
163
		dbo.TL_USER TS
164
		JOIN AbpUserRoles AU ON TS.ID = AU.UserId
165
		JOIN AbpRoles AR ON AU.RoleId = AR.Id 
166
		UNION ALL
167
		SELECT  TM.TLNAME TLNANME,TS.TLFullName,TM.ROLE_NEW RoleName,TM.BRANCH_ID TLSUBBRID,TM.DEP_ID SECUR_CODE FROM
168
		dbo.TL_SYS_ROLE_MAPPING TM
169
		LEFT JOIN dbo.TL_USER TS ON TS.TLNANME=TM.TLNAME
170
		WHERE  CAST(TM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
171
		) TU
172
		LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
173
		LEFT JOIN(
174
		SELECT PC.DMMS_ID,PC.DEP_ID,PC.BRANCH_ID FROM dbo.CM_DMMS PC
175
		UNION ALL
176
		SELECT DVDM.DVDM_ID AS DMMS_ID,DVDM.DEP_ID,DVDM.BRANCH_ID  FROM 
177
		(
178
			SELECT CD.DVDM_ID,PCDT.BRANCH_ID,PCDT.DEP_ID FROM dbo.CM_DVDM CD
179
			LEFT JOIN dbo.PL_COSTCENTER PC ON PC.DVDM_ID=CD.DVDM_ID
180
			LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID = PC.COST_ID
181
			WHERE CD.IS_KHOI <>1
182
			GROUP BY CD.DVDM_ID,PCDT.BRANCH_ID,PCDT.DEP_ID
183
		) DVDM
184
		) Temp ON (Temp.DEP_ID=TU.SECUR_CODE OR CB.BRANCH_TYPE<>'HS') AND Temp.BRANCH_ID=TU.TLSUBBRID
185
	) TempU ON (
186
		--(TempU.RoleName=PL.ROLE_USER OR TempU.RoleName = 'KSV')
187
		(TempU.RoleName=PL.ROLE_USER 
188
			--OR (TempU.RoleName = 'KSV' AND NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = PL.REQ_ID AND TempU.TLNANME = TLNAME AND TYPE_JOB = 'KS' AND STATUS_JOB = 'P')))
189
			--OR (TempU.RoleName = 'KSV' AND NOT EXISTS(SELECT TOP 1 PP.CHECKER_ID FROM PL_PROCESS PP WHERE PP.REQ_ID = PL.REQ_ID AND PP.PROCESS_ID = 'DMMS' AND PP.CHECKER_ID = TempU.TLNANME ORDER BY PP.APPROVE_DT DESC))
190
		)
191
		--OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE TM.ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.DMMS_ID=TR.DMMS_ID) AND TempC.ID IS NULL	
192
		OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE TM.ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME='') AND TM.AUTH_STATUS = 'A')
193
		) 
194
		AND (TempU.DMMS_ID=TR.DMMS_ID) AND TempC.ID IS NULL
195
	WHERE PL.STATUS='C'	
196
	UNION ALL
197
	SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,TempU.TLNANME AS TLNAME,TempU.TLFullName,PL.NOTES 
198
	FROM
199
	(SELECT * FROM dbo.PL_REQUEST_PROCESS PRC
200
	WHERE EXISTS(SELECT TRD.RATE_ID FROM dbo.TR_RATE_SUPPLIER_MASTER TRD WHERE TRD.RATE_ID=PRC.REQ_ID) 
201
	AND PRC.PROCESS_ID <>'DMMS' AND PRC.PROCESS_ID <> 'NEW' AND PRC.PROCESS_ID <>'APPROVE' 
202
	AND PRC.STATUS='C' AND (PRC.IS_HAS_CHILD=0 OR PRC.IS_HAS_CHILD IS NULL)
203
	) PL
204
	LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID
205
	LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID
206
	LEFT JOIN 
207
	(
208
	SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID 
209
	FROM (
210
		SELECT TS.TLNANME,TS.TLFullName,
211
		--TS.RoleName,
212
		AR.DisplayName AS RoleName,
213
		TS.TLSUBBRID,TS.SECUR_CODE FROM
214
		dbo.TL_USER TS
215
		JOIN AbpUserRoles AU ON TS.ID = AU.UserId
216
		JOIN AbpRoles AR ON AU.RoleId = AR.Id 
217
		UNION ALL
218
		SELECT  TM.TLNAME TLNANME,TS.TLFullName,TM.ROLE_NEW RoleName,TM.BRANCH_ID TLSUBBRID,TM.DEP_ID SECUR_CODE FROM
219
		dbo.TL_SYS_ROLE_MAPPING TM
220
		LEFT JOIN dbo.TL_USER TS ON TS.TLNANME=TM.TLNAME
221
		WHERE  CAST(TM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
222
		) TU
223
	LEFT JOIN
224
		(
225
		SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC 
226
		LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID
227
		) Temp ON Temp.DEP_ID=TU.SECUR_CODE AND Temp.BRANCH_ID=TU.TLSUBBRID
228
	) TempU ON (TempU.RoleName=PL.ROLE_USER  OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='') 
229
	AND (TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') 
230
	AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='')
231
	WHERE  STATUS='C'
232
	UNION ALL
233
		SELECT distinct PL.REQ_ID,PL.PROCESS_ID,CASE WHEN CD.DVDM_NAME IS NOT NULL AND CD.DVDM_NAME <> '' THEN CD.DVDM_NAME ELSE BR.BRANCH_NAME END AS DVDM_NAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLNANME ELSE TU.TLNANME END AS TLNAME,CASE WHEN TempC.ID IS NULL THEN TempU.TLFullName ELSE TU.TLFullName END AS TLFullName,CASE WHEN TempC.ID IS NULL THEN PL.NOTES ELSE TempC.CONTENT END AS NOTES 
234
		FROM 
235
	(SELECT * FROM dbo.PL_REQUEST_PROCESS PRC
236
	WHERE EXISTS(SELECT TRD.RATE_ID FROM dbo.TR_RATE_SUPPLIER_MASTER TRD WHERE TRD.RATE_ID=PRC.REQ_ID) 
237
	AND PRC.PROCESS_ID <>'DMMS' AND PRC.PROCESS_ID <> 'NEW' AND PRC.PROCESS_ID <>'APPROVE' 
238
	AND PRC.STATUS='C' AND PRC.IS_HAS_CHILD=1 
239
	) PL
240
	LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PL.DVDM_ID
241
	LEFT JOIN CM_BRANCH BR ON PL.BRANCH_ID = BR.BRANCH_ID
242
	LEFT JOIN 
243
	(
244
	SELECT PRC.ID, PRC.PROCESS_ID,PRC.REQ_ID,PRC.TLNAME,AC.CONTENT FROM dbo.PL_REQUEST_PROCESS_CHILD PRC 
245
	LEFT JOIN dbo.CM_ALLCODE AC ON AC.CDVAL=PRC.TYPE_JOB AND AC.CDNAME='JOB_TYPE' AND CDTYPE='REQ'
246
	WHERE (PRC.STATUS_JOB='C' OR PRC.STATUS_JOB='R' )
247
	)TempC ON TempC.PROCESS_ID =PL.ID AND PL.IS_HAS_CHILD=1
248
	LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=TempC.TLNAME
249
	LEFT JOIN 
250
	(
251
	SELECT TU.TLNANME,TU.TLFullName,TU.RoleName,Temp.DVDM_ID,TU.SECUR_CODE,TU.TLSUBBRID 
252
	FROM       (
253
		SELECT TS.TLNANME,TS.TLFullName,TS.RoleName,TS.TLSUBBRID,TS.SECUR_CODE FROM
254
		dbo.TL_USER TS 
255
		UNION ALL
256
		SELECT  TM.TLNAME TLNANME,TS.TLFullName,TM.ROLE_NEW RoleName,TM.BRANCH_ID TLSUBBRID,TM.DEP_ID SECUR_CODE FROM
257
		dbo.TL_SYS_ROLE_MAPPING TM
258
		LEFT JOIN dbo.TL_USER TS ON TS.TLNANME=TM.TLNAME
259
		WHERE  CAST(TM.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
260
		)  TU 
261
	LEFT JOIN(
262
	SELECT PC.DVDM_ID,PD.DEP_ID,PD.BRANCH_ID FROM dbo.PL_COSTCENTER PC 
263
	LEFT JOIN dbo.PL_COSTCENTER_DT PD ON PC.COST_ID=PD.COST_ID) Temp ON Temp.DEP_ID=TU.SECUR_CODE AND Temp.BRANCH_ID=TU.TLSUBBRID
264
	) TempU ON  (TempU.RoleName=PL.ROLE_USER  OR PL.ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING TM WHERE ROLE_OLD=TempU.RoleName AND (TM.TLNAME IS NULL OR TM.TLNAME=''))) AND (TempU.TLSUBBRID=PL.BRANCH_ID OR PL.BRANCH_ID IS NULL OR PL.BRANCH_ID='') 
265
	AND (TempU.SECUR_CODE=PL.DEP_ID OR PL.DEP_ID IS NULL OR PL.DEP_ID='') 
266
	AND (TempU.DVDM_ID=PL.DVDM_ID OR PL.DVDM_ID IS NULL OR PL.DVDM_ID ='')
267
	WHERE  PL.STATUS='C'
268

    
269
	BEGIN
270
	--------DVKD XỬ LÝ-----------
271
	IF(@p_TYPE = 'DVKD')
272
	BEGIN
273
		-- PAGING BEGIN
274
		SELECT A.*, 
275
		B.SUP_NAME, 
276
		C.HH_NAME, 
277
		D.BRANCH_NAME, 
278
		E.CONTENT AS DECISION_NAME,
279
		MK.TLFullName AS MAKER_NAME,
280
		RP.NOTES AS PROCESS_STATUS_NAME, --tình trạng xử lý
281
		RPN.NOTES AS PROCESS_STATUS_NEXT, -- bước xử lý tiếp theo
282
		CASE 
283
			WHEN A.PROCESS_STATUS ='SIGN' 
284
				THEN TL.TLFullName 
285
			ELSE NXL.NGUOI_XU_LY_NAME 
286
		END AS NGUOIXULY, -- người xử lý tiếp theo
287
		--PAD.APPROVE_DT AS PROCESS_APP_DT, --ngày duyệt hoàn tất
288
		CASE
289
			WHEN RPN.PROCESS_ID = 'APPROVE' THEN RP.APPROVE_DT
290
			ELSE NULL
291
		END
292
		AS PROCESS_APP_DT, --ngày duyệt hoàn tất
293
		RP.ID AS REF_ID
294

    
295
		-- SELECT END
296
		FROM TR_RATE_SUPPLIER_MASTER A
297
		LEFT JOIN CM_SUPPLIER B ON A.SUP_ID = B.SUP_ID
298
		LEFT JOIN CM_HANGHOA C ON A.HH_ID = C.HH_ID
299
		LEFT JOIN CM_BRANCH D ON A.BRANCH_ID = D.BRANCH_ID
300
		LEFT JOIN CM_ALLCODE E ON A.DECISION = E.CDVAL AND E.CDTYPE = 'RATE_SUP' AND E.CDNAME = 'DECISION_SUP'
301
		--LEFT JOIN CM_ALLCODE PS ON A.PROCESS_STATUS = PS.CDVAL AND PS.CDTYPE = 'RATE_SUP' AND PS.CDNAME = 'PROCESS_STATUS'
302
		LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
303
		LEFT JOIN TL_USER MK ON A.MAKER_ID = MK.TLNANME
304
		LEFT JOIN 
305
		(
306
			SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM
307
			dbo.PL_REQUEST_PROCESS
308
			GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES
309
		) RPN ON RPN.REQ_ID=A.RATE_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R')
310
		LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.RATE_ID 
311
		AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
312
		LEFT JOIN(
313
			SELECT RESULT.REQ_ID,
314
			STUFF(
315
				(SELECT ', ' + NPU.TLNAME
316
				FROM @t_NEXT_PROCESS_USER NPU
317
				WHERE NPU.REQ_ID = RESULT.REQ_ID
318
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')NGUOI_XU_LY,
319
			STUFF(
320
				(SELECT ', ' + NPU.TL_FULLNAME
321
				FROM @t_NEXT_PROCESS_USER NPU
322
				WHERE NPU.REQ_ID = RESULT.REQ_ID
323
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOI_XU_LY_NAME
324
			FROM @t_NEXT_PROCESS_USER RESULT
325
			GROUP BY REQ_ID
326
		) NXL ON NXL.REQ_ID = A.RATE_ID
327

    
328
		WHERE 1=1
329
		AND (A.RATE_ID LIKE '%' + @p_RATE_ID + '%' OR @p_RATE_ID IS NULL OR @p_RATE_ID = '')
330
		AND (A.RATE_REQ_NO LIKE '%' + @p_RATE_REQ_NO + '%' OR @p_RATE_REQ_NO IS NULL OR @p_RATE_REQ_NO = '')
331
		AND (A.SUP_ID LIKE '%' + @p_SUP_ID + '%' OR @p_SUP_ID IS NULL OR @p_SUP_ID = '')
332
		AND (DATEDIFF(DAY, A.RATE_FROM_DT, CONVERT(DATETIME, @p_RATE_FROM_DT,103)) = 0 OR @p_RATE_FROM_DT IS NULL OR @p_RATE_FROM_DT = '')
333
		AND (DATEDIFF(DAY, A.RATE_TO_DT, CONVERT(DATETIME, @p_RATE_TO_DT,103)) = 0 OR @p_RATE_TO_DT IS NULL OR @p_RATE_TO_DT = '')
334
		AND (A.CREATE_DT >= CONVERT(DATETIME, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
335
		AND (A.CREATE_DT <= CONVERT(DATETIME, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
336
		AND (A.HH_ID LIKE '%' + @p_HH_ID + '%' OR @p_HH_ID IS NULL OR @p_HH_ID = '')
337
		AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
338
		AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
339
		AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
340
		AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
341
		AND (DATEDIFF(DAY, A.APPROVE_DT, CONVERT(DATETIME, @p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
342
		AND (
343
			A.PROCESS_STATUS = @p_PROCESS_STATUS
344
			OR(@p_PROCESS_STATUS LIKE 'DMMS%' 
345
				AND RPN.STATUS = 'C' AND RPN.PROCESS_ID = 'DMMS'
346
			)
347
			OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS = ''
348
		)
349
		AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
350
		AND ((@p_BRANCH_TYPE = 'HS' AND A.DEP_ID = @p_DEP_ID)
351
				OR @p_BRANCH_TYPE <> 'HS'
352
				OR @p_DEP_ID IS NULL OR @p_DEP_ID = ''
353
		)
354
		AND (
355
			A.MAKER_ID = @p_USER_LOGIN
356
			OR (A.SIGN_USER = @p_USER_LOGIN AND A.AUTH_STATUS <> 'E' AND A.PROCESS_STATUS <> 'NEW')
357
			OR (@p_USER_LOGIN IN (SELECT TLNAME FROM @t_NEXT_PROCESS_USER WHERE REQ_ID = A.RATE_ID))
358
			OR (@p_USER_LOGIN IN (SELECT CHECKER_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.RATE_ID AND STATUS = 'P'))
359
		)
360
		AND( NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%' OR @p_NGUOIXULY  IS NULL OR @p_NGUOIXULY  = ''
361
			OR NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%')
362

    
363
		ORDER BY A.CREATE_DT DESC
364
		-- PAGING END
365
	END
366
	---------GDK/PTGDK XỬ LÝ-----------
367
	ELSE IF(@p_TYPE LIKE 'GDK%')
368
	BEGIN
369

    
370
		-- PAGING BEGIN
371
		SELECT A.*, 
372
		B.SUP_NAME, 
373
		C.HH_NAME, 
374
		D.BRANCH_NAME, 
375
		E.CONTENT AS DECISION_NAME, 
376
		MK.TLFullName AS MAKER_NAME,
377
		RP.NOTES AS PROCESS_STATUS_NAME, --tình trạng xử lý
378
		RPN.NOTES AS PROCESS_STATUS_NEXT, -- bước xử lý tiếp theo
379
		CASE 
380
			WHEN A.PROCESS_STATUS ='SIGN' 
381
				THEN TL.TLFullName 
382
			ELSE NXL.NGUOI_XU_LY_NAME 
383
		END AS NGUOIXULY, -- người xử lý tiếp theo
384
		--RP.APPROVE_DT AS PROCESS_APP_DT, --ngày duyệt hoàn tất
385
		CASE
386
			WHEN RPN.PROCESS_ID = 'APPROVE' THEN RP.APPROVE_DT
387
			ELSE NULL
388
		END
389
		AS PROCESS_APP_DT, --ngày duyệt hoàn tất
390
		RP.ID AS REF_ID
391
		-- SELECT END
392
		FROM TR_RATE_SUPPLIER_MASTER A
393
		LEFT JOIN CM_SUPPLIER B ON A.SUP_ID = B.SUP_ID
394
		LEFT JOIN CM_HANGHOA C ON A.HH_ID = C.HH_ID
395
		LEFT JOIN CM_BRANCH D ON A.BRANCH_ID = D.BRANCH_ID
396
		LEFT JOIN CM_ALLCODE E ON A.DECISION = E.CDVAL AND E.CDTYPE = 'RATE_SUP' AND E.CDNAME = 'DECISION_SUP'
397
		--LEFT JOIN CM_ALLCODE PS ON A.PROCESS_STATUS = PS.CDVAL AND PS.CDTYPE = 'RATE_SUP' AND PS.CDNAME = 'PROCESS_STATUS'
398
		LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
399
		LEFT JOIN TL_USER MK ON A.MAKER_ID = MK.TLNANME
400
		LEFT JOIN 
401
		(
402
			SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM
403
			dbo.PL_REQUEST_PROCESS
404
			GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES
405
		) RPN ON RPN.REQ_ID=A.RATE_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R')
406
		LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.RATE_ID 
407
		AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
408
		LEFT JOIN(
409
			SELECT RESULT.REQ_ID,
410
			STUFF(
411
				(SELECT ', ' + NPU.TLNAME
412
				FROM @t_NEXT_PROCESS_USER NPU
413
				WHERE NPU.REQ_ID = RESULT.REQ_ID
414
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')NGUOI_XU_LY,
415
			STUFF(
416
				(SELECT ', ' + NPU.TL_FULLNAME
417
				FROM @t_NEXT_PROCESS_USER NPU
418
				WHERE NPU.REQ_ID = RESULT.REQ_ID
419
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOI_XU_LY_NAME
420
			FROM @t_NEXT_PROCESS_USER RESULT
421
			GROUP BY REQ_ID
422
		) NXL ON NXL.REQ_ID = A.RATE_ID
423
		--INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.RATE_ID AND PLRP.STATUS <> 'U'
424
		INNER JOIN (
425
			SELECT REQ_ID, ROLE_USER, DVDM_ID, STATUS FROM PL_REQUEST_PROCESS
426
			WHERE STATUS <> 'U'
427
			GROUP BY REQ_ID, ROLE_USER, DVDM_ID, STATUS
428
		) PLRP ON PLRP.REQ_ID = A.RATE_ID
429

    
430
		WHERE 1=1
431
		AND (A.RATE_ID LIKE '%' + @p_RATE_ID + '%' OR @p_RATE_ID IS NULL OR @p_RATE_ID = '')
432
		AND (A.RATE_REQ_NO LIKE '%' + @p_RATE_REQ_NO + '%' OR @p_RATE_REQ_NO IS NULL OR @p_RATE_REQ_NO = '')
433
		AND (A.SUP_ID LIKE '%' + @p_SUP_ID + '%' OR @p_SUP_ID IS NULL OR @p_SUP_ID = '')
434
		AND (DATEDIFF(DAY, A.RATE_FROM_DT, CONVERT(DATETIME, @p_RATE_FROM_DT,103)) = 0 OR @p_RATE_FROM_DT IS NULL OR @p_RATE_FROM_DT = '')
435
		AND (DATEDIFF(DAY, A.RATE_TO_DT, CONVERT(DATETIME, @p_RATE_TO_DT,103)) = 0 OR @p_RATE_TO_DT IS NULL OR @p_RATE_TO_DT = '')
436
		AND (A.CREATE_DT >= CONVERT(DATETIME, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
437
		AND (A.CREATE_DT <= CONVERT(DATETIME, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
438
		AND (A.HH_ID LIKE '%' + @p_HH_ID + '%' OR @p_HH_ID IS NULL OR @p_HH_ID = '')
439
		AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
440
		AND (
441
			A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%'
442
			OR (@p_AUTH_STATUS = 'U' AND A.PROCESS_STATUS <> 'APPROVE' AND PLRP.STATUS = 'C')
443
			OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = ''
444
		)
445
		--AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
446
		AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
447
		AND (DATEDIFF(DAY, A.APPROVE_DT, CONVERT(DATETIME, @p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
448
		AND (
449
			A.PROCESS_STATUS = @p_PROCESS_STATUS
450
			OR(@p_PROCESS_STATUS LIKE 'DMMS%' 
451
				AND RPN.STATUS = 'C' AND RPN.PROCESS_ID = 'DMMS'
452
			)
453
			OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS = ''
454
		)
455
		AND (EXISTS(
456
			SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH 
457
			WHERE AUTH.ROLE_ID=PLRP.ROLE_USER 
458
			--AND (PLRP.DVDM_ID=AUTH.DVDM_ID OR PLRP.DVDM_ID ='' OR PLRP.DVDM_ID  IS NULL)
459
			AND (PLRP.DVDM_ID=AUTH.DVDM_ID)
460
			--AND  PLRP.PROCESS_ID <>'DMMS' AND PLRP.PROCESS_ID<>'APPNEW' AND PLRP.PROCESS_ID <> 'DVCM'
461
		))
462
		AND( NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%' OR @p_NGUOIXULY  IS NULL OR @p_NGUOIXULY  = ''
463
			OR NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%')
464

    
465
		ORDER BY A.CREATE_DT DESC
466
		-- PAGING END
467
	END
468
	------------------ĐIỀU PHỐI------------
469
	ELSE IF(@p_TYPE = 'TFJOB')
470
	BEGIN
471
		-- PAGING BEGIN
472
		SELECT A.*, 
473
		B.SUP_NAME, 
474
		C.HH_NAME, 
475
		D.BRANCH_NAME, 
476
		E.CONTENT AS DECISION_NAME,
477
		MK.TLFullName AS MAKER_NAME,
478
		RP.NOTES AS PROCESS_STATUS_NAME, --tình trạng xử lý
479
		RPN.NOTES AS PROCESS_STATUS_NEXT, -- bước xử lý tiếp theo
480
		CASE 
481
			WHEN A.PROCESS_STATUS ='SIGN' 
482
				THEN TL.TLFullName 
483
			ELSE NXL.NGUOI_XU_LY_NAME 
484
		END AS NGUOIXULY, -- người xử lý tiếp theo
485
		--RP.APPROVE_DT AS PROCESS_APP_DT, --ngày duyệt hoàn tất
486
		CASE
487
			WHEN RPN.PROCESS_ID = 'APPROVE' THEN RP.APPROVE_DT
488
			ELSE NULL
489
		END
490
		AS PROCESS_APP_DT, --ngày duyệt hoàn tất
491
		ISNULL(RPC.TYPE_JOB, 'KS') AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME,
492
		TFU.TLFullName AS TRANSFER_MAKER_NAME, RPC.TLNAME AS TRANSFER_MAKER, RPC.TRANFER_DT,
493
		PLRP.ID AS REF_ID
494
		-- SELECT END
495

    
496
		FROM TR_RATE_SUPPLIER_MASTER A
497
		LEFT JOIN CM_SUPPLIER B ON A.SUP_ID = B.SUP_ID
498
		LEFT JOIN CM_HANGHOA C ON A.HH_ID = C.HH_ID
499
		LEFT JOIN CM_BRANCH D ON A.BRANCH_ID = D.BRANCH_ID
500
		LEFT JOIN CM_ALLCODE E ON A.DECISION = E.CDVAL AND E.CDTYPE = 'RATE_SUP' AND E.CDNAME = 'DECISION_SUP'
501
		LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
502
		LEFT JOIN TL_USER MK ON A.MAKER_ID = MK.TLNANME
503
		INNER JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.RATE_ID AND PLRP.STATUS = 'C' AND PLRP.IS_HAS_CHILD = 1
504
		LEFT JOIN 
505
		(
506
			SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM
507
			dbo.PL_REQUEST_PROCESS
508
			GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES
509
		) RPN ON RPN.REQ_ID=A.RATE_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R')
510
		LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.RATE_ID 
511
		AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
512
		LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.RATE_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R')
513
		LEFT JOIN TL_USER TFU ON TFU.TLNANME = RPC.MAKER_ID
514
		LEFT JOIN TL_USER TU ON TU.TLNANME = RPC.TLNAME
515
		LEFT JOIN(
516
			SELECT RESULT.REQ_ID,
517
			STUFF(
518
				(SELECT ', ' + NPU.TLNAME
519
				FROM @t_NEXT_PROCESS_USER NPU
520
				WHERE NPU.REQ_ID = RESULT.REQ_ID
521
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')NGUOI_XU_LY,
522
			STUFF(
523
				(SELECT ', ' + NPU.TL_FULLNAME
524
				FROM @t_NEXT_PROCESS_USER NPU
525
				WHERE NPU.REQ_ID = RESULT.REQ_ID
526
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOI_XU_LY_NAME
527
			FROM @t_NEXT_PROCESS_USER RESULT
528
			GROUP BY REQ_ID
529
		) NXL ON NXL.REQ_ID = A.RATE_ID
530

    
531

    
532
		WHERE 1=1
533
		AND (A.RATE_ID LIKE '%' + @p_RATE_ID + '%' OR @p_RATE_ID IS NULL OR @p_RATE_ID = '')
534
		AND (A.RATE_REQ_NO LIKE '%' + @p_RATE_REQ_NO + '%' OR @p_RATE_REQ_NO IS NULL OR @p_RATE_REQ_NO = '')
535
		AND (A.SUP_ID LIKE '%' + @p_SUP_ID + '%' OR @p_SUP_ID IS NULL OR @p_SUP_ID = '')
536
		AND (DATEDIFF(DAY, A.RATE_FROM_DT, CONVERT(DATETIME, @p_RATE_FROM_DT,103)) = 0 OR @p_RATE_FROM_DT IS NULL OR @p_RATE_FROM_DT = '')
537
		AND (DATEDIFF(DAY, A.RATE_TO_DT, CONVERT(DATETIME, @p_RATE_TO_DT,103)) = 0 OR @p_RATE_TO_DT IS NULL OR @p_RATE_TO_DT = '')
538
		AND (A.CREATE_DT >= CONVERT(DATETIME, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
539
		AND (A.CREATE_DT <= CONVERT(DATETIME, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
540
		AND (A.HH_ID LIKE '%' + @p_HH_ID + '%' OR @p_HH_ID IS NULL OR @p_HH_ID = '')
541
		AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
542
		AND (
543
			A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%'
544
			OR(@p_AUTH_STATUS = 'A' AND A.PROCESS_STATUS = 'APPROVE')
545
			OR(@p_AUTH_STATUS = 'U' AND A.PROCESS_STATUS <> 'APPROVE')
546
			OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = ''
547
		)
548
		AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
549
		AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
550
		AND (DATEDIFF(DAY, A.APPROVE_DT, CONVERT(DATETIME, @p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
551
		AND (
552
			A.PROCESS_STATUS = @p_PROCESS_STATUS
553
			OR(@p_PROCESS_STATUS = 'DMMS_XL' 
554
				AND (
555
					(RPC.TYPE_JOB = 'XL' OR RPC.TYPE_JOB = 'KS')
556
					AND RPC.STATUS_JOB = 'C'
557
					--OR(RPN.STATUS = 'C' AND RPN.PROCESS_ID = 'DMMS')
558
				)
559
			)
560
			OR(@p_PROCESS_STATUS = 'DMMS_APP'
561
				AND (
562
					RPC.TYPE_JOB = 'TP'
563
					AND RPC.STATUS_JOB = 'C'
564
					OR(RPN.STATUS = 'C' AND RPN.PROCESS_ID = 'DMMS' AND NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.RATE_ID AND TYPE_JOB = 'TP' AND STATUS_JOB = 'C'))
565
				)
566
			)
567
			OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS = ''
568
		)
569
		AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
570
		AND ((@p_BRANCH_TYPE = 'HS' AND A.DEP_ID = @p_DEP_ID)
571
				OR @p_BRANCH_TYPE <> 'HS'
572
				OR @p_DEP_ID IS NULL OR @p_DEP_ID = ''
573
		)
574
		AND (
575
			((RPC.REQ_ID IS NOT NULL AND RPC.REQ_ID <> '' AND (RPC.MAKER_ID = @p_USER_LOGIN AND RPC.MAKER_ID IS NOT NULL)) AND @p_IS_TRANSFER = '1')
576
			OR ((RPC.REQ_ID IS NULL OR RPC.REQ_ID = '' OR (RPC.REQ_ID IS NOT NULL AND RPC.REQ_ID <> '' AND (RPC.MAKER_ID  <> @p_USER_LOGIN OR RPC.MAKER_ID IS NULL))) AND @p_IS_TRANSFER = '0')
577
			OR @p_IS_TRANSFER = '' OR @p_IS_TRANSFER IS NULL
578
		)
579
		AND (	
580
			   EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND PLRP.DVDM_ID=AUTH.DVDM_ID)
581
			OR EXISTS(
582
				SELECT  AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH 
583
				WHERE A.DMMS_ID=AUTH.DMMS_ID AND A.PROCESS_STATUS='DMMS'
584
				AND (AUTH.ROLE_ID=PLRP.ROLE_USER OR AUTH.ROLE_ID = 'KSV')
585
			)
586
			OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_STATUS='DMMS')
587
			OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND  TLNAME=@p_USER_LOGIN AND TYPE_JOB='KS')
588
		)
589
		AND( NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%' OR @p_NGUOIXULY  IS NULL OR @p_NGUOIXULY  = ''
590
			OR NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%')
591
		----------BAODNQ 2/12/2022 : Nếu PĐG NCC đã được NVXL gửi phê duyệt / đã dc DMMS duyệt hoàn tất
592
		----------------không tìm thấy phiếu ở màn hình điều phối-----------------
593
		AND(
594
			NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.RATE_ID
595
				AND PROCESS_ID IN (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.RATE_ID AND PROCESS_ID = 'DMMS')
596
				AND TYPE_JOB = 'XL' AND STATUS_JOB = 'P'
597
			)
598
		)
599

    
600
		ORDER BY A.CREATE_DT DESC
601
		-- PAGING END
602
	END
603

    
604
	-----------------------------DMMS------------------
605
	ELSE IF(@p_TYPE = 'DMMS')
606
	BEGIN
607
		-- PAGING BEGIN
608
		SELECT A.*, 
609
		B.SUP_NAME, 
610
		C.HH_NAME, 
611
		D.BRANCH_NAME, 
612
		E.CONTENT AS DECISION_NAME,
613
		MK.TLFullName AS MAKER_NAME,
614
		RP.NOTES AS PROCESS_STATUS_NAME, --tình trạng xử lý
615
		RPN.NOTES AS PROCESS_STATUS_NEXT, -- bước xử lý tiếp theo
616
		CASE 
617
			WHEN A.PROCESS_STATUS ='SIGN' 
618
				THEN TL.TLFullName 
619
			ELSE NXL.NGUOI_XU_LY_NAME 
620
		END AS NGUOIXULY, -- người xử lý tiếp theo
621
		--RP.APPROVE_DT AS PROCESS_APP_DT, --ngày duyệt hoàn tất
622
		CASE
623
			WHEN RPN.PROCESS_ID = 'APPROVE' THEN RP.APPROVE_DT
624
			ELSE NULL
625
		END
626
		AS PROCESS_APP_DT, --ngày duyệt hoàn tất
627
		ISNULL(RPC.TYPE_JOB, 'KS') AS TYPE_JOB, RPC.TLNAME AS USER_JOB, TU.TLFullName AS USER_JOB_NAME,
628
		TFU.TLFullName AS TRANSFER_MAKER_NAME, RPC.TLNAME AS TRANSFER_MAKER, RPC.TRANFER_DT,
629
		PLRP.ID AS REF_ID
630
		-- SELECT END
631

    
632
		FROM TR_RATE_SUPPLIER_MASTER A
633
		LEFT JOIN CM_SUPPLIER B ON A.SUP_ID = B.SUP_ID
634
		LEFT JOIN CM_HANGHOA C ON A.HH_ID = C.HH_ID
635
		LEFT JOIN CM_BRANCH D ON A.BRANCH_ID = D.BRANCH_ID
636
		LEFT JOIN CM_ALLCODE E ON A.DECISION = E.CDVAL AND E.CDTYPE = 'RATE_SUP' AND E.CDNAME = 'DECISION_SUP'
637
		--LEFT JOIN CM_ALLCODE PS ON A.PROCESS_STATUS = PS.CDVAL AND PS.CDTYPE = 'RATE_SUP' AND PS.CDNAME = 'PROCESS_STATUS'
638
		LEFT JOIN TL_USER TL ON A.SIGN_USER = TL.TLNANME
639
		LEFT JOIN TL_USER MK ON A.MAKER_ID = MK.TLNANME
640
		LEFT JOIN dbo.PL_REQUEST_PROCESS PLRP ON PLRP.REQ_ID=A.RATE_ID AND PLRP.STATUS <> 'U' AND PLRP.PROCESS_ID = 'DMMS'
641
		LEFT JOIN 
642
		(
643
			SELECT REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES FROM
644
			dbo.PL_REQUEST_PROCESS
645
			GROUP BY REQ_ID,PROCESS_ID,PARENT_PROCESS_ID,STATUS,NOTES
646
		) RPN ON RPN.REQ_ID=A.RATE_ID AND ([RPN].[STATUS]='C' OR [RPN].[STATUS]='R')
647
		LEFT JOIN dbo.PL_REQUEST_PROCESS RP ON RP.ID=(SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE PL_REQUEST_PROCESS.REQ_ID=A.RATE_ID 
648
		AND PL_REQUEST_PROCESS.PROCESS_ID=RPN.PARENT_PROCESS_ID ORDER BY APPROVE_DT DESC)
649
		LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD RPC ON RPC.REQ_ID=A.RATE_ID AND RPC.PROCESS_ID=PLRP.ID AND (RPC.STATUS_JOB='C' OR RPC.STATUS_JOB='R')
650
		LEFT JOIN TL_USER TFU ON TFU.TLNANME = RPC.MAKER_ID
651
		LEFT JOIN TL_USER TU ON TU.TLNANME = RPC.TLNAME
652
		LEFT JOIN(
653
			SELECT RESULT.REQ_ID,
654
			STUFF(
655
				(SELECT ', ' + NPU.TLNAME
656
				FROM @t_NEXT_PROCESS_USER NPU
657
				WHERE NPU.REQ_ID = RESULT.REQ_ID
658
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')NGUOI_XU_LY,
659
			STUFF(
660
				(SELECT ', ' + NPU.TL_FULLNAME
661
				FROM @t_NEXT_PROCESS_USER NPU
662
				WHERE NPU.REQ_ID = RESULT.REQ_ID
663
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') NGUOI_XU_LY_NAME
664
			FROM @t_NEXT_PROCESS_USER RESULT
665
			GROUP BY REQ_ID
666
		) NXL ON NXL.REQ_ID = A.RATE_ID
667

    
668

    
669
		WHERE 1=1
670
		AND (A.RATE_ID LIKE '%' + @p_RATE_ID + '%' OR @p_RATE_ID IS NULL OR @p_RATE_ID = '')
671
		AND (A.RATE_REQ_NO LIKE '%' + @p_RATE_REQ_NO + '%' OR @p_RATE_REQ_NO IS NULL OR @p_RATE_REQ_NO = '')
672
		AND (A.SUP_ID LIKE '%' + @p_SUP_ID + '%' OR @p_SUP_ID IS NULL OR @p_SUP_ID = '')
673
		AND (DATEDIFF(DAY, A.RATE_FROM_DT, CONVERT(DATETIME, @p_RATE_FROM_DT,103)) = 0 OR @p_RATE_FROM_DT IS NULL OR @p_RATE_FROM_DT = '')
674
		AND (DATEDIFF(DAY, A.RATE_TO_DT, CONVERT(DATETIME, @p_RATE_TO_DT,103)) = 0 OR @p_RATE_TO_DT IS NULL OR @p_RATE_TO_DT = '')
675
		AND (A.CREATE_DT >= CONVERT(DATETIME, @p_FROM_DT, 103) OR @p_FROM_DT IS NULL OR @p_FROM_DT = '')
676
		AND (A.CREATE_DT <= CONVERT(DATETIME, @p_TO_DT, 103) OR @p_TO_DT IS NULL OR @p_TO_DT = '')
677
		AND (A.HH_ID LIKE '%' + @p_HH_ID + '%' OR @p_HH_ID IS NULL OR @p_HH_ID = '')
678
		AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
679
		AND (
680
			A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%'
681
			OR (@p_AUTH_STATUS = 'U' AND A.PROCESS_STATUS <> 'APPROVE' AND PLRP.STATUS = 'C')
682
			OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = ''
683
		)
684
		AND (A.MAKER_ID LIKE '%' + @p_MAKER_ID + '%' OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
685
		AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
686
		AND (DATEDIFF(DAY, A.APPROVE_DT, CONVERT(DATETIME, @p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')
687
		AND (
688
			A.PROCESS_STATUS = @p_PROCESS_STATUS
689
			OR(@p_PROCESS_STATUS = 'DMMS_XL' 
690
				AND (
691
					(RPC.TYPE_JOB = 'XL' OR RPC.TYPE_JOB = 'KS')
692
					AND RPC.STATUS_JOB = 'C'
693
					--OR(RPN.STATUS = 'C' AND RPN.PROCESS_ID = 'DMMS')
694
				)
695
			)
696
			OR(@p_PROCESS_STATUS = 'DMMS_APP'
697
				AND (
698
					RPC.TYPE_JOB = 'TP'
699
					AND RPC.STATUS_JOB = 'C'
700
					OR(RPN.STATUS = 'C' AND RPN.PROCESS_ID = 'DMMS' AND NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = A.RATE_ID AND TYPE_JOB = 'TP' AND STATUS_JOB = 'C'))
701
				)
702
			)
703
			OR @p_PROCESS_STATUS IS NULL OR @p_PROCESS_STATUS = ''
704
		)
705
		AND (A.BRANCH_ID = @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
706
		AND ((@p_BRANCH_TYPE = 'HS' AND A.DEP_ID = @p_DEP_ID)
707
				OR @p_BRANCH_TYPE <> 'HS'
708
				OR @p_DEP_ID IS NULL OR @p_DEP_ID = ''
709
		)
710
		--AND (
711
		--	A.MAKER_ID = @p_USER_LOGIN
712
		--	OR (A.SIGN_USER = @p_USER_LOGIN AND A.AUTH_STATUS <> 'E' AND A.PROCESS_STATUS <> 'NEW')
713
		--	OR (@p_USER_LOGIN IN (SELECT TLNAME FROM @t_NEXT_PROCESS_USER WHERE REQ_ID = A.RATE_ID))
714
		--	OR (@p_USER_LOGIN IN (SELECT CHECKER_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.RATE_ID AND STATUS = 'P'))
715
		--)
716
		--AND(
717
		--	(RPC.TYPE_JOB = 'KS' OR RPC.TYPE_JOB = 'TP')
718
		--	AND EXISTS(SELECT ID FROM PL_REQUEST_PROCESS_CHILD TMP WHERE TMP.REQ_ID = A.RATE_ID AND TMP.STATUS_JOB = 'P' AND TMP.TYPE_JOB = 'XL')
719
		--	OR(RPC.TYPE_JOB = 'XL')
720
		--)
721
		AND (	
722
				EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND A.DMMS_ID=AUTH.DMMS_ID AND (A.PROCESS_STATUS='DMMS' OR A.PROCESS_STATUS <> 'DMMS'))
723
			OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PLRP.ROLE_USER AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_STATUS='DMMS')
724
			OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PLRP.ID AND  TLNAME=@p_USER_LOGIN AND PLRP.PROCESS_ID = 'DMMS')
725
		)
726
		AND( NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%' OR @p_NGUOIXULY  IS NULL OR @p_NGUOIXULY  = ''
727
			OR NXL.NGUOI_XU_LY LIKE '%' + @p_NGUOIXULY  + '%')
728
		-----------BAODNQ 2/12/2022 : Chỉ tìm thấy phiếu ở màn hình DMMS khi đã có điều phối cho NVXL--------
729
		AND(
730
			EXISTS(
731
				SELECT ID FROM PL_REQUEST_PROCESS_CHILD
732
				WHERE REQ_ID = A.RATE_ID
733
				AND PROCESS_ID = (SELECT TOP 1 ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = A.RATE_ID AND PROCESS_ID = 'DMMS')
734
				AND TYPE_JOB = 'XL'
735
			)
736
		)
737

    
738
		ORDER BY A.CREATE_DT DESC
739
		-- PAGING END
740
	END
741

    
742

    
743
	END
744

    
745
END -- PAGING
746

    
747