Project

General

Profile

SEARCH_PYC.txt

Luc Tran Van, 05/04/2023 10:38 AM

 
1
ALTER PROCEDURE dbo.TR_REQUEST_SHOP_DOC_Search
2
@p_REQ_ID	varchar(15)  = NULL,
3
@p_REQ_CODE	nvarchar(100)  = NULL,
4
@p_REQ_NAME	nvarchar(200)  = NULL,
5
@p_REQ_DT	VARCHAR(20) = NULL,
6
@p_REQ_TYPE	varchar(20) = NULL,
7
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
8
@p_TOTAL_AMT	decimal = NULL,
9
@p_NOTES	nvarchar(1000)  = NULL,
10
@p_RECORD_STATUS	varchar(1)  = NULL,
11
@p_MAKER_ID NVARCHAR(100)  = NULL,
12
@p_CREATE_DT	VARCHAR(20) = NULL,
13
@p_AUTH_STATUS	varchar(50)  = NULL,
14
@p_CHECKER_ID VARCHAR(100)  = NULL,
15
@p_APPROVE_DT	VARCHAR(20) = NULL,
16
@p_RECEIVE_BRANCH VARCHAR(15) = NULL,
17
@p_USERNAME VARCHAR(100) = NULL,
18
@p_BRANCH_ID VARCHAR(15)=NULL,
19
@p_DEP_ID VARCHAR(15)=NULL,
20
@p_STATUS  VARCHAR(15)=NULL,
21
@p_TOP	INT = 10,
22
@p_DVKD_MANAGE_APP_FROM	VARCHAR(20) = NULL,
23
@p_DVKD_MANAGE_APP_TO	VARCHAR(20) = NULL,
24
@p_REGION_ID varchar(15)  = NULL,
25
@p_CDTYPE_PYC VARCHAR(20) = NULL --Phucvh Truyền thêm CDTYPE để xác định loại PYC
26

    
27

    
28
AS
29
BEGIN -- PAGING
30
    DECLARE @ROLE_KT VARCHAR(50) = (SELECT TU.RoleName FROM TL_USER TU WHERE TU.TLNANME = @p_USERNAME)
31
	DECLARE @DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20)
32
	DECLARE  @ROLE_LOGIN TABLE(ROLE_USER VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20))
33
--	INSERT INTO @ROLE_LOGIN SELECT DisplayName AS ROLE_USER FROM AbpRoles WHERE Id IN (SELECT A.RoleId FROM AbpUserRoles A 
34
--																		LEFT JOIN TL_USER B ON A.UserId = B.ID
35
--																		WHERE B.TLNANME = @p_USERNAME)
36
  INSERT INTO @ROLE_LOGIN
37
  SELECT tugr.ROLE_ID, tugr.BRANCH_ID, tugr.DEPT_ID FROM dbo.TL_USER_GET_ROLES(@p_USERNAME) tugr
38
	SET @DEP_ID= (SELECT DEP_ID FROM dbo.TL_USER WHERE TLNANME=@p_USERNAME)
39
	SET @BRANCH_ID= (SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_USERNAME)
40
	DECLARE @lstCOST TABLE
41
	(
42
		COST_ID VARCHAR(20)
43
	)
44
	INSERT INTO @lstCOST
45
	SELECT COST_ID FROM dbo.CM_COSTCENTER_DT WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID
46
	-- TienLee 11/14/21 --
47
	
48
	--
49

    
50
	DECLARE @TempSTATUS   TABLE
51
	(
52
		STATUS VARCHAR(20)
53
	)
54

    
55
	IF(EXISTS(SELECT ROLE_USER FROM @ROLE_LOGIN WHERE ROLE_USER ='QLTS' ))
56
	BEGIN
57
		INSERT INTO @TempSTATUS VALUES('DVKD')
58
		INSERT INTO @TempSTATUS VALUES('DVCM')
59
	END
60
	ELSE IF(EXISTS(SELECT ROLE_USER FROM @ROLE_LOGIN WHERE ROLE_USER ='DVCM' ))
61
	BEGIN
62
		INSERT INTO @TempSTATUS VALUES('QLTS_N')
63
		INSERT INTO @TempSTATUS VALUES('DVCM')
64
	END
65
	ELSE IF(EXISTS(SELECT ROLE_USER FROM @ROLE_LOGIN WHERE ROLE_USER ='CVMS' ))
66
	BEGIN
67
		INSERT INTO @TempSTATUS VALUES('QLTS_N')
68
		INSERT INTO @TempSTATUS VALUES('QLTS_XL')
69
		INSERT INTO @TempSTATUS VALUES('DVCM')
70
	END
71

    
72
		DECLARE @lstBRANCH_DEP TABLE
73
	(
74
		BRANCH_ID VARCHAR(20),
75
		DEP_ID VARCHAR(20)
76
	) 
77

    
78
--	IF(NOT EXISTS(SELECT ROLE_USER FROM @ROLE_LOGIN WHERE ROLE_USER ='DVCM' OR ROLE_USER='CVMS_TBP' ))
79
--	BEGIN
80
--		INSERT INTO @lstBRANCH_DEP
81
--		(BRANCH_ID,DEP_ID)
82
--		SELECT TLSUBBRID,DEP_ID FROM dbo.TL_USER WHERE TLNANME=@p_USERNAME 
83
--
84
--		INSERT INTO @lstBRANCH_DEP
85
--		(BRANCH_ID,DEP_ID)
86
--		SELECT BRANCH_ID,DEP_ID FROM dbo.CM_KHOI_DT
87
--		WHERE KHOI_ID IN (SELECT KHOI_ID FROM dbo.CM_KHOI_DT WHERE DEP_ID= @DEP_ID AND BRANCH_ID=@BRANCH_ID)
88
--	END
89
--
90
--
91
--
92
--  DECLARE @tbDep TABLE(DEP_ID VARCHAR(20))
93
--INSERT INTO @tbDep
94
--SELECT ckd.DEP_ID FROM CM_DEPARTMENT cd
95
----LEFT JOIN CM_KHOI ck ON cd.DEP_CODE=ck.KHOI_CODE
96
----LEFT JOIN CM_KHOI_DT ckd ON ck.KHOI_ID = ckd.KHOI_ID
97
--WHERE cd.DEP_ID=@p_DEP_ID
98

    
99
DECLARE @REQ_ID_Temp TABLE(REQ_ID VARCHAR(20))
100
INSERT INTO @REQ_ID_Temp
101
SELECT A.REQ_ID FROM TR_REQUEST_SHOP_DOC A
102
LEFT JOIN PL_REQUEST_PROCESS B ON A.REQ_ID = B.REQ_ID AND B.STATUS = 'C'
103
WHERE (EXISTS(SELECT RL.ROLE_USER FROM @ROLE_LOGIN RL WHERE RL.BRANCH_ID = B.BRANCH_ID
104
    AND (B.BRANCH_ID = 'DV0001' AND B.DEP_ID = RL.DEP_ID OR B.BRANCH_ID <> 'DV0001')
105
    AND RL.ROLE_USER = B.ROLE_USER)
106
  OR EXISTS(SELECT * FROM @ROLE_LOGIN RL
107
    JOIN PL_REQUEST_PROCESS C ON C.REQ_ID = A.REQ_ID AND C.STATUS = 'P' AND RL.BRANCH_ID = C.BRANCH_ID
108
    AND (C.BRANCH_ID = 'DV0001' AND C.DEP_ID = RL.DEP_ID OR C.BRANCH_ID <> 'DV0001')
109
    AND RL.ROLE_USER = C.ROLE_USER)
110
  OR A.MAKER_ID = @p_USERNAME)
111
GROUP BY A.REQ_ID
112

    
113
	IF((EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_SLAS' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN))))
114
	BEGIN
115
		IF(@p_TOP IS NULL OR @p_TOP = '' OR @p_TOP = 0)
116
			BEGIN
117
			-- PAGING BEGIN
118
				SELECT A.REQ_ID,
119
					   A.REQ_CODE,
120
					   A.REQ_NAME,
121
					   --ISNULL(PRP.APPROVE_DT,PRP2.APPROVE_DT) AS REQ_DT,
122
                       A.REQ_DT,
123
					   A.REQ_TYPE,
124
					   A.REQ_CONTENT,
125
					   A.TOTAL_AMT,
126
					   A.NOTES,
127
					   A.RECORD_STATUS,
128
					   A.MAKER_ID,
129
					   A.CREATE_DT,
130
					   A.AUTH_STATUS,
131
					   A.CHECKER_ID,
132
					   A.APPROVE_DT,
133
					   A.BRANCH_ID,
134
                       CASE WHEN A.REQ_TYPE = 'CPTS' AND A.IS_DONE = '1' AND A.STATUS = 'DONE' THEN 'APPROVE' ELSE A.STATUS END AS STATUS,
135
					   A.DEP_ID,
136
					   A.HO_NOTES, K.CONTENT AS REQ_TYPE_NAME, 
137
                       --I.CONTENT AS REQ_STATUS_NAME,
138
                       CASE WHEN A.IS_DONE = '1' AND A.STATUS = 'APPROVE' THEN N'Hoàn tất' 
139
                       ELSE I.CONTENT
140
                       END REQ_STATUS_NAME,
141
						 @p_RECEIVE_BRANCH AS RECEIVE_BRANCH,G.BRANCH_CODE,
142
             CASE 
143
             	WHEN A.DEP_ID IS NOT NULL AND A.DEP_ID <> '' THEN G.BRANCH_NAME + ' - ' + CD.DEP_NAME
144
             	 ELSE G.BRANCH_NAME
145
             END AS BRANCH_NAME,
146
						--CASE WHEN  RQT.STATUS = 'C' OR RQT.STATUS = 'U' THEN N'Chờ duyệt' 
147
						--ELSE N'Đã duyệt' END AS AUTH_STATUS_NAME
148
						D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME,
149
            I.CONTENT AS REQ_TYPE_NAME,
150
             CASE WHEN A.STATUS = 'APPROVE'AND A.AUTH_STATUS = 'A' AND DATEDIFF(DAY,GETDATE(),DATEADD(DAY,CONVERT(INT,SP.ParaValue),A.SEND_APP_DT)) < 0 THEN '#f2dede' ELSE ''
151
            END AS COLOR
152
						--D.AUTH_STATUS_NAME 
153
				-- SELECT END
154
				FROM TR_REQUEST_SHOP_DOC A
155

    
156
				LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS 
157
				LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
158
				LEFT JOIN CM_ALLCODE K ON K.CDNAME = 'TRREQASSTYPE' AND K.CDVAL = A.REQ_TYPE
159
				LEFT JOIN CM_ALLCODE I ON I.CDNAME = 'TRREQSTATUS' AND I.CDVAL = A.[STATUS] AND I.CDTYPE = @p_CDTYPE_PYC
160
--        LEFT JOIN PL_REQUEST_PROCESS prp1 ON prp1.REQ_ID = A.REQ_ID AND prp1.STATUS = 'C'
161
				--LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS
162
				--LEFT JOIN dbo.PL_REQUEST_PROCESS RQT ON RQT.REQ_ID = A.REQ_ID 
163
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR (RQT.PROCESS_ID = A.STATUS AND EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN))))
164
				--LEFT JOIN dbo.PL_REQUEST_PROCESS PRP1 ON PRP1.REQ_ID = A.REQ_ID  AND PRP1.PROCESS_ID = 'CVMS_N'
165
				--LEFT JOIN dbo.PL_REQUEST_PROCESS PRP2 ON PRP2.REQ_ID = A.REQ_ID  AND PRP2.PROCESS_ID = 'DVKD'
166
				
167
				LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=A.MAKER_ID
168
        LEFT JOIN SYS_PARAMETERS SP ON 1=1 AND SP.ParaKey = 'NUM_OF_DAYS_LATE'
169
        LEFT JOIN CM_DEPARTMENT CD ON A.DEP_ID = CD.DEP_ID
170
				WHERE 1 = 1
171
				AND (G.REGION_ID LIKE '%' + @p_REGION_ID + '%' OR @p_REGION_ID IS NULL OR @p_REGION_ID = '')
172
--				AND (CONVERT(DATETIME,@p_DVKD_MANAGE_APP_FROM,103) <= CAST (PRP2.RECEPTION_DT AS DATE)  OR @p_DVKD_MANAGE_APP_FROM IS NULL OR @p_DVKD_MANAGE_APP_FROM = '')
173
--				AND (DATEADD(day,1,CONVERT(DATETIME,@p_DVKD_MANAGE_APP_TO,103)) > CAST (PRP2.RECEPTION_DT AS DATE) OR @p_DVKD_MANAGE_APP_TO IS NULL OR @p_DVKD_MANAGE_APP_TO = '')
174
		        AND (@p_DVKD_MANAGE_APP_FROM IS NULL AND @p_DVKD_MANAGE_APP_TO IS NULL OR
175
            	@p_DVKD_MANAGE_APP_TO IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) >= (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) 
176
            	OR  @p_DVKD_MANAGE_APP_FROM IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103)) 
177
            	OR (CONVERT(DATE, A.REQ_DT, 103)) >=  (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103))
178
            	)
179
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN)))
180
				--AND ((@p_AUTH_STATUS = 'U' AND (RQT.STATUS = 'C' OR RQT.STATUS = 'U')) OR (@p_AUTH_STATUS = 'A' AND (RQT.STATUS = 'P' OR RQT.STATUS IS NULL))OR (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = ''))		
181
				AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' 
182
            --OR A.REQ_ID LIKE '%' + @p_REQ_CODE + '%'
183
            OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
184
				AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
185
				AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
186
				AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
187
				--AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
188
				AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
189
				AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
190
				
191
				AND (DATEDIFF(DAY,A.CREATE_DT , CONVERT(DATETIME,@p_CREATE_DT,103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
192
--				AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
193
				AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
194
				AND (DATEDIFF(DAY,A.APPROVE_DT , CONVERT(DATETIME,@p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')		
195
				AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE = '')
196
				AND (A.STATUS IN ('NEW','REJECT') AND A.MAKER_ID = @p_USERNAME OR A.STATUS NOT IN ('NEW','REJECT')
197
            OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
198
                WHERE US.TLNANME = @p_USERNAME))
199
        AND (@p_STATUS IS NULL OR @p_STATUS = '' OR A.STATUS = @p_STATUS)
200
        AND (EXISTS(SELECT 1 FROM @REQ_ID_Temp RL WHERE RL.REQ_ID = A.REQ_ID) 
201
              OR (@ROLE_KT IN ('GDV','KSV') AND A.AUTH_STATUS = 'A' ) 
202
              OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
203
                WHERE US.TLNANME = @p_USERNAME))
204

    
205
				AND A.RECORD_STATUS = '1'
206
				AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR A.BRANCH_ID = @p_BRANCH_ID)
207
				AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
208
				AND( TU.TLFullName COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI  OR TU.TLNANME COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI 
209
				 OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
210

    
211
				ORDER BY A.REQ_DT DESC
212
			-- PAGING END
213
			END
214
		   ELSE 
215
		   BEGIN
216
		   -- PAGING BEGIN
217
				SELECT TOP(CONVERT(INT,@p_TOP))  A.REQ_ID,
218
					   A.REQ_CODE,
219
					   A.REQ_NAME,
220
					   --ISNULL(PRP.APPROVE_DT,PRP2.APPROVE_DT) AS REQ_DT,
221
                       A.REQ_DT,
222
					   A.REQ_TYPE,
223
					   A.REQ_CONTENT,
224
					   A.TOTAL_AMT,
225
					   A.NOTES,
226
					   A.RECORD_STATUS,
227
					   A.MAKER_ID,
228
					   A.CREATE_DT,
229
					   A.AUTH_STATUS,
230
					   A.CHECKER_ID,
231
					   A.APPROVE_DT,
232
					   A.BRANCH_ID,
233
                       CASE WHEN A.REQ_TYPE = 'CPTS' AND A.IS_DONE = '1' AND A.STATUS = 'DONE' THEN 'APPROVE' ELSE A.STATUS END AS STATUS,
234
					   A.DEP_ID,
235
					   A.HO_NOTES, K.CONTENT AS REQ_TYPE_NAME, 
236
                       --I.CONTENT AS REQ_STATUS_NAME,
237
                       CASE WHEN A.IS_DONE = '1' AND A.STATUS = 'APPROVE' THEN N'Hoàn tất' 
238
                       ELSE I.CONTENT
239
                       END REQ_STATUS_NAME,
240
						 @p_RECEIVE_BRANCH AS RECEIVE_BRANCH,G.BRANCH_CODE,
241
              CASE 
242
             	WHEN A.DEP_ID IS NOT NULL AND A.DEP_ID <> '' THEN G.BRANCH_NAME + ' - ' + CD.DEP_NAME
243
             	 ELSE G.BRANCH_NAME
244
              END AS BRANCH_NAME,
245
						--CASE WHEN  RQT.STATUS = 'C' OR RQT.STATUS = 'U' THEN N'Chờ duyệt' 
246
						--ELSE N'Đã duyệt' END AS AUTH_STATUS_NAME
247
						D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME,
248
            I.CONTENT AS REQ_TYPE_NAME,
249
             CASE WHEN A.STATUS = 'APPROVE'AND A.AUTH_STATUS = 'A' AND DATEDIFF(DAY,GETDATE(),DATEADD(DAY,CONVERT(INT,SP.ParaValue),A.SEND_APP_DT)) < 0 THEN '#f2dede' ELSE ''
250
            END AS COLOR
251
						--D.AUTH_STATUS_NAME 
252
				-- SELECT END
253
				FROM TR_REQUEST_SHOP_DOC A
254

    
255
				LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS 
256
				LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
257
				LEFT JOIN CM_ALLCODE K ON K.CDNAME = 'TRREQASSTYPE' AND K.CDVAL = A.REQ_TYPE
258
				LEFT JOIN CM_ALLCODE I ON I.CDNAME = 'TRREQSTATUS' AND I.CDVAL = A.[STATUS] AND I.CDTYPE = @p_CDTYPE_PYC
259
--        LEFT JOIN PL_REQUEST_PROCESS prp1 ON prp1.REQ_ID = A.REQ_ID AND prp1.STATUS = 'C'
260
				 
261
				--LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS
262
				--LEFT JOIN dbo.PL_REQUEST_PROCESS RQT ON RQT.REQ_ID = A.REQ_ID 
263
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR (RQT.PROCESS_ID = A.STATUS AND EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN))))
264
				--LEFT JOIN dbo.PL_REQUEST_PROCESS PRP1 ON PRP1.REQ_ID = A.REQ_ID  AND PRP1.PROCESS_ID = 'CVMS_N'
265
				LEFT JOIN dbo.PL_REQUEST_PROCESS PRP2 ON PRP2.REQ_ID = A.REQ_ID  AND PRP2.PROCESS_ID = 'DVKD'
266
				
267
				LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=A.MAKER_ID
268
        LEFT JOIN SYS_PARAMETERS SP ON 1=1 AND SP.ParaKey = 'NUM_OF_DAYS_LATE'
269
        LEFT JOIN CM_DEPARTMENT CD ON A.DEP_ID = CD.DEP_ID
270
				WHERE 1 = 1
271
				AND (G.REGION_ID LIKE '%' + @p_REGION_ID + '%' OR @p_REGION_ID IS NULL OR @p_REGION_ID = '')
272
			--	AND (CONVERT(DATETIME,@p_DVKD_MANAGE_APP_FROM,103) <= CAST (PRP2.RECEPTION_DT AS DATE)  OR @p_DVKD_MANAGE_APP_FROM IS NULL OR @p_DVKD_MANAGE_APP_FROM = '')
273
			--	AND (DATEADD(day,1,CONVERT(DATETIME,@p_DVKD_MANAGE_APP_TO,103)) > CAST (PRP2.RECEPTION_DT AS DATE) OR @p_DVKD_MANAGE_APP_TO IS NULL OR @p_DVKD_MANAGE_APP_TO = '')
274
		        AND (@p_DVKD_MANAGE_APP_FROM IS NULL AND @p_DVKD_MANAGE_APP_TO IS NULL OR
275
            	@p_DVKD_MANAGE_APP_TO IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) >= (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) 
276
            	OR  @p_DVKD_MANAGE_APP_FROM IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103)) 
277
            	OR (CONVERT(DATE, A.REQ_DT, 103)) >=  (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103))
278
            	)
279
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN)))
280
				--AND ((@p_AUTH_STATUS = 'U' AND (RQT.STATUS = 'C' OR RQT.STATUS = 'U')) OR (@p_AUTH_STATUS = 'A' AND (RQT.STATUS = 'P' OR RQT.STATUS IS NULL))OR (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = ''))		
281
				AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' 
282
            --OR A.REQ_ID LIKE '%' + @p_REQ_CODE + '%'
283
            OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
284
        AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
285
				AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
286
				AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
287
				--AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
288
				AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
289
				AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
290
				
291
				AND (DATEDIFF(DAY,A.CREATE_DT , CONVERT(DATETIME,@p_CREATE_DT,103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
292
--				AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
293
				AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
294
				AND (DATEDIFF(DAY,A.APPROVE_DT , CONVERT(DATETIME,@p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')		
295
				AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE = '')
296
				AND (A.STATUS IN ('NEW','REJECT') AND A.MAKER_ID = @p_USERNAME OR A.STATUS NOT IN ('NEW','REJECT')
297
            OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
298
                WHERE US.TLNANME = @p_USERNAME))
299
        AND (@p_STATUS IS NULL OR @p_STATUS = '' OR A.STATUS = @p_STATUS)
300
        AND (EXISTS(SELECT 1 FROM @REQ_ID_Temp RL WHERE RL.REQ_ID = A.REQ_ID) 
301
              OR (@ROLE_KT IN ('GDV','KSV') AND A.AUTH_STATUS = 'A' ) 
302
              OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
303
                WHERE US.TLNANME = @p_USERNAME))
304
				AND A.RECORD_STATUS = '1'
305
				AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR A.BRANCH_ID = @p_BRANCH_ID)
306
				AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
307
				AND( TU.TLFullName COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI  OR TU.TLNANME COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI 
308
				 OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
309
				ORDER BY A.REQ_DT DESC
310
			 -- PAGING END 
311
		END
312
	END
313
	ELSE
314
	BEGIN
315
		IF(@p_TOP IS NULL OR @p_TOP = '' OR @p_TOP = 0)
316
			BEGIN
317
			-- PAGING BEGIN
318
				SELECT  A.REQ_ID,
319
					   A.REQ_CODE,
320
					   A.REQ_NAME,
321
					   --ISNULL(PRP.APPROVE_DT,PRP2.APPROVE_DT) AS REQ_DT,
322
                       A.REQ_DT,
323
					   A.REQ_TYPE,
324
					   A.REQ_CONTENT,
325
					   A.TOTAL_AMT,
326
					   A.NOTES,
327
					   A.RECORD_STATUS,
328
					   A.MAKER_ID,
329
					   A.CREATE_DT,
330
					   A.AUTH_STATUS,
331
					   A.CHECKER_ID,
332
					   A.APPROVE_DT,
333
					   A.BRANCH_ID,
334
                       CASE WHEN A.REQ_TYPE = 'CPTS' AND A.IS_DONE = '1' AND A.STATUS = 'DONE' THEN 'APPROVE' ELSE A.STATUS END AS STATUS,
335
					   A.DEP_ID,
336
					   A.HO_NOTES, K.CONTENT AS REQ_TYPE_NAME, 
337
                       --I.CONTENT AS REQ_STATUS_NAME,
338
                       CASE WHEN A.IS_DONE = '1' AND A.STATUS = 'APPROVE' THEN N'Hoàn tất' 
339
                       ELSE I.CONTENT
340
                       END REQ_STATUS_NAME,
341
						 @p_RECEIVE_BRANCH AS RECEIVE_BRANCH,G.BRANCH_CODE,
342
              CASE 
343
             	WHEN A.DEP_ID IS NOT NULL AND A.DEP_ID <> '' THEN G.BRANCH_NAME + ' - ' + CD.DEP_NAME
344
             	 ELSE G.BRANCH_NAME
345
              END AS BRANCH_NAME,
346
						--CASE WHEN  RQT.STATUS = 'C' OR RQT.STATUS = 'U' THEN N'Chờ duyệt' 
347
						--ELSE N'Đã duyệt' END AS AUTH_STATUS_NAME
348
						D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME,
349
            CASE WHEN A.STATUS = 'APPROVE'AND A.AUTH_STATUS = 'A'
350
                  AND DATEDIFF(DAY,GETDATE(),DATEADD(DAY,CONVERT(INT,SP.ParaValue),A.SEND_APP_DT)) < 0 THEN '#f2dede' ELSE ''
351
            END AS COLOR
352
						--D.AUTH_STATUS_NAME 
353
				-- SELECT END
354
				FROM TR_REQUEST_SHOP_DOC A
355

    
356
				LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
357
				LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
358
				LEFT JOIN CM_ALLCODE K ON K.CDNAME = 'TRREQASSTYPE' AND K.CDVAL = A.REQ_TYPE
359
				LEFT JOIN CM_ALLCODE I ON I.CDNAME = 'TRREQSTATUS' AND I.CDVAL = A.[STATUS] AND I.CDTYPE = @p_CDTYPE_PYC
360
--        LEFT JOIN PL_REQUEST_PROCESS prp1 ON prp1.REQ_ID = A.REQ_ID AND prp1.STATUS = 'C'		
361
				 
362
				--LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS
363
				--LEFT JOIN dbo.PL_REQUEST_PROCESS RQT ON RQT.REQ_ID = A.REQ_ID 
364
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR (RQT.PROCESS_ID = A.STATUS AND EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN))))
365
				--LEFT JOIN dbo.PL_REQUEST_PROCESS PRP1 ON PRP1.REQ_ID = A.REQ_ID  AND PRP1.PROCESS_ID = 'CVMS_N'
366
				LEFT JOIN dbo.PL_REQUEST_PROCESS PRP2 ON PRP2.REQ_ID = A.REQ_ID  AND PRP2.PROCESS_ID = 'DVKD'
367
				
368
				LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=A.MAKER_ID
369
        LEFT JOIN SYS_PARAMETERS SP ON 1=1 AND SP.ParaKey = 'NUM_OF_DAYS_LATE'
370
        LEFT JOIN CM_DEPARTMENT CD ON A.DEP_ID = CD.DEP_ID
371
				WHERE 1 = 1
372
				AND (G.REGION_ID LIKE '%' + @p_REGION_ID + '%' OR @p_REGION_ID IS NULL OR @p_REGION_ID = '')
373
--				AND (CONVERT(DATETIME,@p_DVKD_MANAGE_APP_FROM,103) <= CAST (PRP2.RECEPTION_DT AS DATE)  OR @p_DVKD_MANAGE_APP_FROM IS NULL OR @p_DVKD_MANAGE_APP_FROM = '')
374
--				AND (DATEADD(day,1,CONVERT(DATETIME,@p_DVKD_MANAGE_APP_TO,103)) > CAST (PRP2.RECEPTION_DT AS DATE) OR @p_DVKD_MANAGE_APP_TO IS NULL OR @p_DVKD_MANAGE_APP_TO = '')
375
		        AND (@p_DVKD_MANAGE_APP_FROM IS NULL AND @p_DVKD_MANAGE_APP_TO IS NULL OR
376
            	@p_DVKD_MANAGE_APP_TO IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) >= (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) 
377
            	OR  @p_DVKD_MANAGE_APP_FROM IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103)) 
378
            	OR (CONVERT(DATE, A.REQ_DT, 103)) >=  (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103))
379
            	)
380
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN)))
381
				--AND ((@p_AUTH_STATUS = 'U' AND (RQT.STATUS = 'C' OR RQT.STATUS = 'U')) OR (@p_AUTH_STATUS = 'A' AND (RQT.STATUS = 'P' OR RQT.STATUS IS NULL))OR (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = ''))		
382
				AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' 
383
            --OR A.REQ_ID LIKE '%' + @p_REQ_CODE + '%'
384
            OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
385
				AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
386
				AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
387
				AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
388
				--AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
389
				AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
390
				AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
391
				
392
				AND (DATEDIFF(DAY,A.CREATE_DT , CONVERT(DATETIME,@p_CREATE_DT,103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
393
--				AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
394
				AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
395
				AND (DATEDIFF(DAY,A.APPROVE_DT , CONVERT(DATETIME,@p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')		
396
				AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE = '')
397
				AND (A.STATUS IN ('NEW','REJECT') AND A.MAKER_ID = @p_USERNAME OR A.STATUS NOT IN ('NEW','REJECT')
398
            OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
399
                WHERE US.TLNANME = @p_USERNAME))
400
        AND (@p_STATUS IS NULL OR @p_STATUS = '' OR A.STATUS = @p_STATUS)
401
        AND (EXISTS(SELECT 1 FROM @REQ_ID_Temp RL WHERE RL.REQ_ID = A.REQ_ID) 
402
              OR (@ROLE_KT IN ('GDV','KSV') AND A.AUTH_STATUS = 'A' ) 
403
              OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
404
                WHERE US.TLNANME = @p_USERNAME))
405

    
406
				AND A.RECORD_STATUS = '1'
407
				AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR A.BRANCH_ID = @p_BRANCH_ID)
408
				AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
409
				AND( TU.TLFullName COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI  OR TU.TLNANME COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI 
410
				 OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
411
				ORDER BY  A.REQ_DT  DESC
412
			-- PAGING END
413
			END
414
		   ELSE 
415
		   BEGIN
416
		   -- PAGING BEGIN
417
				SELECT TOP(CONVERT(INT,@p_TOP))  A.REQ_ID,
418
					   A.REQ_CODE,
419
					   A.REQ_NAME,
420
					   --ISNULL(PRP.APPROVE_DT,PRP2.APPROVE_DT) AS REQ_DT,
421
                       A.REQ_DT,
422
					   A.REQ_TYPE,
423
					   A.REQ_CONTENT,
424
					   A.TOTAL_AMT,
425
					   A.NOTES,
426
					   A.RECORD_STATUS,
427
					   A.MAKER_ID,
428
					   A.CREATE_DT,
429
					   A.AUTH_STATUS,
430
					   A.CHECKER_ID,
431
					   A.APPROVE_DT,
432
					   A.BRANCH_ID,
433
                       CASE WHEN A.REQ_TYPE = 'CPTS' AND A.IS_DONE = '1' AND A.STATUS = 'DONE' THEN 'APPROVE' ELSE A.STATUS END AS STATUS,
434
					   A.DEP_ID,
435
					   A.HO_NOTES, K.CONTENT AS REQ_TYPE_NAME, 
436
                       --I.CONTENT AS REQ_STATUS_NAME,
437
                       CASE WHEN A.IS_DONE = '1' AND A.STATUS = 'APPROVE' THEN N'Hoàn tất' 
438
                       ELSE I.CONTENT
439
                       END REQ_STATUS_NAME,
440
						 @p_RECEIVE_BRANCH AS RECEIVE_BRANCH,G.BRANCH_CODE,
441
              CASE 
442
             	WHEN A.DEP_ID IS NOT NULL AND A.DEP_ID <> '' THEN G.BRANCH_NAME + ' - ' + CD.DEP_NAME
443
             	 ELSE G.BRANCH_NAME
444
              END AS BRANCH_NAME,
445
						--CASE WHEN  RQT.STATUS = 'C' OR RQT.STATUS = 'U' THEN N'Chờ duyệt' 
446
						--ELSE N'Đã duyệt' END AS AUTH_STATUS_NAME
447
						D.AUTH_STATUS_NAME AS AUTH_STATUS_NAME,
448
            CASE WHEN A.STATUS = 'APPROVE'AND A.AUTH_STATUS = 'A'
449
                  AND DATEDIFF(DAY,GETDATE(),DATEADD(DAY,CONVERT(INT,SP.ParaValue),A.SEND_APP_DT)) < 0 THEN '#f2dede' ELSE ''
450
            END AS COLOR
451
						--D.AUTH_STATUS_NAME 
452
				-- SELECT END
453
				FROM TR_REQUEST_SHOP_DOC A
454

    
455
				LEFT JOIN CM_AUTH_STATUS D ON D.AUTH_STATUS = A.AUTH_STATUS
456
				LEFT JOIN CM_BRANCH G ON A.BRANCH_ID=G.BRANCH_ID
457
				LEFT JOIN CM_ALLCODE K ON K.CDNAME = 'TRREQASSTYPE' AND K.CDVAL = A.REQ_TYPE
458
				LEFT JOIN CM_ALLCODE I ON I.CDNAME = 'TRREQSTATUS' AND I.CDVAL = A.[STATUS] AND I.CDTYPE = @p_CDTYPE_PYC
459
--        LEFT JOIN PL_REQUEST_PROCESS prp1 ON prp1.REQ_ID = A.REQ_ID AND prp1.STATUS = 'C'		
460
				 
461
				--LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS
462
				--LEFT JOIN dbo.PL_REQUEST_PROCESS RQT ON RQT.REQ_ID = A.REQ_ID 
463
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR (RQT.PROCESS_ID = A.STATUS AND EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN))))
464
				--LEFT JOIN dbo.PL_REQUEST_PROCESS PRP1 ON PRP1.REQ_ID = A.REQ_ID  AND PRP1.PROCESS_ID = 'CVMS_N'
465
				LEFT JOIN dbo.PL_REQUEST_PROCESS PRP2 ON PRP2.REQ_ID = A.REQ_ID  AND PRP2.PROCESS_ID = 'DVKD'
466
				
467
				LEFT JOIN dbo.TL_USER TU ON TU.TLNANME=A.MAKER_ID
468
        LEFT JOIN SYS_PARAMETERS SP ON 1=1 AND SP.ParaKey = 'NUM_OF_DAYS_LATE'
469
        LEFT JOIN CM_DEPARTMENT CD ON A.DEP_ID = CD.DEP_ID
470
				WHERE 1 = 1
471
				AND (G.REGION_ID LIKE '%' + @p_REGION_ID + '%' OR @p_REGION_ID IS NULL OR @p_REGION_ID = '')
472
				--AND (CONVERT(DATETIME,@p_DVKD_MANAGE_APP_FROM,103) <= CAST (PRP2.RECEPTION_DT AS DATE)  OR @p_DVKD_MANAGE_APP_FROM IS NULL OR @p_DVKD_MANAGE_APP_FROM = '')
473
				--AND (DATEADD(day,1,CONVERT(DATETIME,@p_DVKD_MANAGE_APP_TO,103)) > CAST (PRP2.RECEPTION_DT AS DATE) OR @p_DVKD_MANAGE_APP_TO IS NULL OR @p_DVKD_MANAGE_APP_TO = '')
474
		        AND (@p_DVKD_MANAGE_APP_FROM IS NULL AND @p_DVKD_MANAGE_APP_TO IS NULL OR
475
            	@p_DVKD_MANAGE_APP_TO IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) >= (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) 
476
            	OR  @p_DVKD_MANAGE_APP_FROM IS NULL AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103)) 
477
            	OR (CONVERT(DATE, A.REQ_DT, 103)) >=  (CONVERT(DATE, @p_DVKD_MANAGE_APP_FROM, 103)) AND (CONVERT(DATE, A.REQ_DT, 103)) <= (CONVERT(DATE, @p_DVKD_MANAGE_APP_TO, 103))
478
            	)
479
				--AND (((RQT.PROCESS_ID = A.STATUS AND  RQT.ROLE_USER IN (SELECT ROLE_USER FROM @ROLE_LOGIN) AND (@p_USERNAME = RQT.DVKD_USER_APP OR (RQT.DVKD_USER_APP IS NULL OR RQT.DVKD_USER_APP = ''))) OR (RQT.STATUS = 'U' AND RQT.PROCESS_ID = 'DVKD')) OR EXISTS(SELECT * FROM PL_CONFIG_DATA WHERE TYPE_DATA = 'REQUEST_DOC_ROLE' AND REF_ID IN (SELECT ROLE_USER FROM @ROLE_LOGIN)))
480
				--AND ((@p_AUTH_STATUS = 'U' AND (RQT.STATUS = 'C' OR RQT.STATUS = 'U')) OR (@p_AUTH_STATUS = 'A' AND (RQT.STATUS = 'P' OR RQT.STATUS IS NULL))OR (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = ''))		
481
				AND (A.REQ_CODE LIKE '%' + @p_REQ_CODE + '%' 
482
            --OR A.REQ_ID LIKE '%' + @p_REQ_CODE + '%'
483
            OR @p_REQ_CODE IS NULL OR @p_REQ_CODE = '')
484
				AND (A.REQ_ID LIKE '%' + @p_REQ_ID + '%' OR @p_REQ_ID IS NULL OR @p_REQ_ID = '')
485
				AND (A.REQ_CONTENT LIKE '%' + @p_REQ_CONTENT + '%' OR @p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT = '')
486
				AND (A.TOTAL_AMT=@p_TOTAL_AMT OR @p_TOTAL_AMT IS NULL OR @p_TOTAL_AMT =0)
487
				--AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
488
				AND (A.REQ_NAME LIKE '%' + @p_REQ_NAME + '%' OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
489
				AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
490
				
491
				AND (DATEDIFF(DAY,A.CREATE_DT , CONVERT(DATETIME,@p_CREATE_DT,103)) = 0 OR @p_CREATE_DT IS NULL OR @p_CREATE_DT = '')
492
--				AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
493
				AND (A.CHECKER_ID LIKE '%' + @p_CHECKER_ID + '%' OR @p_CHECKER_ID IS NULL OR @p_CHECKER_ID = '')
494
				AND (DATEDIFF(DAY,A.APPROVE_DT , CONVERT(DATETIME,@p_APPROVE_DT,103)) = 0 OR @p_APPROVE_DT IS NULL OR @p_APPROVE_DT = '')		
495
				AND (A.REQ_TYPE = @p_REQ_TYPE OR @p_REQ_TYPE IS NULL OR @p_REQ_TYPE = '')
496
				AND (A.STATUS IN ('NEW','REJECT') AND A.MAKER_ID = @p_USERNAME OR A.STATUS NOT IN ('NEW','REJECT') 
497
            OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
498
                WHERE US.TLNANME = @p_USERNAME))
499
        AND (@p_STATUS IS NULL OR @p_STATUS = '' OR A.STATUS = @p_STATUS)
500
        AND (EXISTS(SELECT 1 FROM @REQ_ID_Temp RL WHERE RL.REQ_ID = A.REQ_ID) 
501
              OR (@ROLE_KT IN ('GDV','KSV') AND A.AUTH_STATUS = 'A' ) 
502
              OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
503
                WHERE US.TLNANME = @p_USERNAME))
504

    
505
				AND A.RECORD_STATUS = '1'
506
				AND (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR A.BRANCH_ID = @p_BRANCH_ID)
507
				AND (A.REQ_NAME COLLATE Latin1_general_CI_AI Like N'%' + @p_REQ_NAME + N'%' COLLATE Latin1_general_CI_AI  OR @p_REQ_NAME IS NULL OR @p_REQ_NAME = '')
508
				AND( TU.TLFullName COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI  OR TU.TLNANME COLLATE Latin1_general_CI_AI Like N'%' + @p_MAKER_ID + N'%' COLLATE Latin1_general_CI_AI 
509
				 OR @p_MAKER_ID IS NULL OR @p_MAKER_ID = '')
510
				ORDER BY A.REQ_DT  DESC
511
			 -- PAGING END 
512
		END
513
	END
514
	
515
		
516
		
517
   END
518
GO
519

    
520

    
521

    
522
ALTER PROCEDURE dbo.PL_REQUEST_DOC_TRANSFER_Upd
523
@p_REQ_ID varchar(15) = NULL,
524
@p_TYPE_PROCESS varchar(50) = NULL,
525
@p_MAKERID varchar(100)= NULL,
526
@p_AUTH_STATUS VARCHAR(1) = NULL,
527
@p_CHECKER_ID VARCHAR(100)  = NULL,
528
@p_APPROVE_DT VARCHAR(50) = NULL,
529
@p_USERNAME varchar(100)  = NULL,
530
@p_NOTES NVARCHAR(MAX)= NULL,
531
@p_DVKD_USER_APP NVARCHAR(500)= NULL
532

    
533
AS
534
BEGIN
535

    
536
DECLARE 
537
@NOTIFATION NVARCHAR(100) = NULL,
538
@BRANCHID VARCHAR(20)= NULL,
539
@DEP_ID VARCHAR(20),
540
@NOTIFY_TO_USER VARCHAR(MAX) = '',
541
@COMPLETE BIT = 0,
542
@REQ_TYPE VARCHAR(20) = (SELECT TOP 1 trsd.REQ_TYPE FROM TR_REQUEST_SHOP_DOC trsd WHERE trsd.REQ_ID = @p_REQ_ID),
543
@CURR_PROCESS VARCHAR(50) = (SELECT TOP 1 A.PROCESS_ID FROM PL_REQUEST_PROCESS A WHERE A.REQ_ID = @p_REQ_ID AND A.STATUS = 'C')
544

    
545

    
546
SELECT @BRANCHID = tu.TLSUBBRID, @DEP_ID = tu.DEP_ID FROM TL_USER tu WHERE tu.TLNANME = @p_CHECKER_ID
547

    
548
DECLARE @ASSET_ID_LST VARCHAR(MAX), @CURRENT_TRANS_ERROR NVARCHAR(MAX)
549

    
550

    
551
BEGIN TRANSACTION
552

    
553
 	IF(EXISTS(SELECT REQ_ID FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID AND STATUS = 'REJECT'))
554
		BEGIN
555
			ROLLBACK TRANSACTION
556
			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'Phiếu yêu cầu đang bị trả về' ErrorDesc
557
			RETURN '-1'
558
		END
559

    
560
	-- GỬI TRƯỞNG ĐƠN VỊ
561
	IF(@p_TYPE_PROCESS='S_DVKD')
562
	BEGIN  
563
        
564
      --PHUCVH 26/12/22 RÀNG BUỘC KHÔNG CHO TẠO 2 PYC CÙNG 1 TÀI SẢN CHƯA HOÀN THÀNH SỬA CHỮA 
565
      --&&  TS ĐÃ ĐƯỢC THÊM Ở LƯỚI TS CẦN THAY THẾ TRÊN  PYC CẤP PHÁT KHÔNG ĐƯỢC YÊU CẦU SỬA CHỮA
566
      IF(@REQ_TYPE = 'SC')
567
      BEGIN
568
          DECLARE @MESSAGE_VALIDATION NVARCHAR(MAX)
569

    
570
          DECLARE @TABLE_ASSCODE_VALIDATION TABLE (ASSET_CODE VARCHAR(100), REQ_CODE VARCHAR(100))
571

    
572
          --RÀNG BUỘC TS ĐÃ ĐƯỢC THÊM Ở LƯỚI TS CẦN THAY THẾ TRÊN  PYC CẤP PHÁT KHÔNG ĐƯỢC YÊU CẦU SỬA CHỮA
573
          INSERT INTO @TABLE_ASSCODE_VALIDATION
574
          SELECT ISNULL(G.ASSET_CODE,G.ASS_CODE_TMP) ASSET_CODE, F.REQ_CODE
575
          FROM (
576
              SELECT B.ASS_ID, C.REQ_CODE
577
              FROM TR_REQUEST_SHOP_DOC_DT B
578
              LEFT JOIN TR_REQUEST_SHOP_DOC C ON B.REQ_DOC_ID = C.REQ_ID
579
              WHERE C.AUTH_STATUS NOT IN ('E','R','D') AND B.REQ_DT_TYPE = 'ASSET_BROKEN'
580
              AND B.ASS_ID IN (SELECT D.ASS_ID FROM TR_REQUEST_SHOP_DOC_DT D WHERE D.REQ_DOC_ID = @p_REQ_ID)
581
              GROUP BY B.ASS_ID, C.REQ_CODE
582
          ) F
583
          LEFT JOIN ASS_MASTER G ON F.ASS_ID = G.ASSET_ID
584

    
585
          IF(EXISTS(SELECT 1 FROM @TABLE_ASSCODE_VALIDATION))
586
          BEGIN
587
              SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT 
588
                                        CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN ''
589
                                        ELSE '|' END 
590
                                        + N'Tài sản ' + C.ASSET_CODE + N' đã được yêu cầu thay thế trong phiếu số' + C.REQ_CODE
591
                                  FROM ( SELECT ASSET_CODE,REQ_CODE FROM @TABLE_ASSCODE_VALIDATION) C
592
                                  FOR XML PATH (''))
593
                                , '|', '<br />'))
594
          ROLLBACK TRANSACTION
595
          SELECT '-1' as Result, @MESSAGE_VALIDATION ErrorDesc
596
          RETURN '-1'
597
          END
598

    
599
          --RÀNG BUỘC KHÔNG CHO TẠO 2 PYC CÙNG 1 TÀI SẢN CHƯA HOÀN THÀNH SỬA CHỮA 
600
          INSERT INTO @TABLE_ASSCODE_VALIDATION
601
          SELECT ISNULL(C.ASSET_CODE,C.ASS_CODE_TMP),B.REQ_CODE
602
          FROM TR_REQUEST_SHOP_DOC_DT A
603
          LEFT JOIN TR_REQUEST_SHOP_DOC B ON A.REQ_DOC_ID = B.REQ_ID
604
          LEFT JOIN ASS_MASTER C ON A.ASS_ID = C.ASSET_ID
605
          WHERE A.ASS_ID IN (SELECT C.ASS_ID FROM TR_REQUEST_SHOP_DOC_DT C WHERE C.REQ_DOC_ID = @p_REQ_ID)
606
          AND B.IS_DONE = '0'
607
          AND B.REQ_TYPE = 'SC'
608
          AND B.AUTH_STATUS NOT IN ('E','D','R')
609
          AND A.REQ_DOC_ID <> @p_REQ_ID
610
         
611
          IF(EXISTS(SELECT 1 FROM @TABLE_ASSCODE_VALIDATION))
612
          BEGIN
613
              SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT 
614
                                                CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN ''
615
                                                ELSE '|' END 
616
                                                + N'Tài sản ' + C.ASSET_CODE + N' trong ' + C.REQ_CODE + N' chưa được hoàn thành sửa chữa'
617
                                          FROM (SELECT ASSET_CODE,REQ_CODE FROM @TABLE_ASSCODE_VALIDATION) C
618
                                          FOR XML PATH (''))
619
                                        , '|', '<br />'))
620
          ROLLBACK TRANSACTION
621
          SELECT '-1' as Result, @MESSAGE_VALIDATION ErrorDesc
622
          RETURN '-1'
623
          END
624

    
625
      END
626
  
627
      
628
      IF(@REQ_TYPE = 'TH')
629
      BEGIN
630
          -- KIỂM TRA TÀI SẢN ĐANG TREO TRONG GIAO DỊCH KHÁC
631
          SET @ASSET_ID_LST = (SELECT B.ASSET_ID + '|' FROM (SELECT A.ASSET_ID
632
              FROM TR_REQUEST_DOC_ASSET_DT A 
633
              where A.REQ_DOC_ID = @p_REQ_ID) B
634
          FOR XML PATH (''))
635
          SELECT @CURRENT_TRANS_ERROR = dbo.ASSET_CHECK_CURRENT_TRANS(@ASSET_ID_LST)
636
          IF(@CURRENT_TRANS_ERROR IS NOT NULL AND @CURRENT_TRANS_ERROR <> '')
637
          BEGIN
638
          ROLLBACK TRANSACTION
639
          SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, @CURRENT_TRANS_ERROR ErrorDesc
640
          RETURN '-1'
641
          END
642
      END
643
      ELSE
644
      BEGIN
645
          -- KIỂM TRA TÀI SẢN ĐANG TREO TRONG GIAO DỊCH KHÁC
646
          SET @ASSET_ID_LST = (SELECT B.ASS_ID + '|' FROM (SELECT A.ASS_ID
647
              FROM TR_REQUEST_SHOP_DOC_DT A 
648
              where A.REQ_DOC_ID = @p_REQ_ID) B
649
          FOR XML PATH (''))
650
          SELECT @CURRENT_TRANS_ERROR = dbo.ASSET_CHECK_CURRENT_TRANS(@ASSET_ID_LST)
651
          IF(@CURRENT_TRANS_ERROR IS NOT NULL AND @CURRENT_TRANS_ERROR <> '')
652
          BEGIN
653
          ROLLBACK TRANSACTION
654
          SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, @CURRENT_TRANS_ERROR ErrorDesc
655
          RETURN '-1'
656
          END
657
      END
658

    
659

    
660
      --PHUCVH 09/11/22 UPDATE TÀI SẢN TREO GIAO DỊCH
661
      IF(@REQ_TYPE = 'TH')
662
      BEGIN
663
            UPDATE ASS_MASTER SET CURRENT_TRANS = @p_REQ_ID, CURRENT_TRANS_TYPE = (SELECT A.REQ_TYPE FROM TR_REQUEST_SHOP_DOC A WHERE A.REQ_ID = @p_REQ_ID)
664
            WHERE ASSET_ID IN (SELECT B.ASSET_ID FROM TR_REQUEST_DOC_ASSET_DT B WHERE B.REQ_DOC_ID = @p_REQ_ID)
665
      END
666
      ELSE
667
      BEGIN
668
            UPDATE ASS_MASTER SET CURRENT_TRANS = @p_REQ_ID, CURRENT_TRANS_TYPE = (SELECT A.REQ_TYPE FROM TR_REQUEST_SHOP_DOC A WHERE A.REQ_ID = @p_REQ_ID)
669
            WHERE ASSET_ID IN (SELECT B.ASS_ID FROM TR_REQUEST_SHOP_DOC_DT B WHERE B.REQ_DOC_ID = @p_REQ_ID)
670
      END
671

    
672
      INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,DEP_ID,PARENT_PROCESS_ID,IS_LEAF,NOTES,PROCESS_TYPE)
673
		  VALUES(@p_REQ_ID,'APPNEW','C','GDDV',@BRANCHID,@DEP_ID,'','N',NULL,'Approve')
674

    
675
      INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
676
      VALUES (@p_REQ_ID, 'S_DVKD', @p_CHECKER_ID, GETDATE(), N'Gửi trưởng đơn vị', N'Gửi trưởng đơn vị thành công');
677

    
678
			UPDATE TR_REQUEST_SHOP_DOC SET [STATUS]='APPNEW', AUTH_STATUS = 'U' WHERE REQ_ID=@p_REQ_ID
679
      UPDATE TR_REQUEST_SHOP_DOC_DT SET AUTH_STATUS = 'U' WHERE REQ_DOC_ID = @p_REQ_ID
680

    
681
		  SET @NOTIFATION= N'Gửi trưởng đơn vị thành công'
682

    
683
      --UPDATE NGÀY GỬI DUYỆT
684
      UPDATE TR_REQUEST_SHOP_DOC SET SEND_APP_DT = GETDATE()
685
      WHERE REQ_ID = @p_REQ_ID
686

    
687
			IF @@Error <> 0 GOTO ABORT
688
	END
689
--  --QLTS gửi DVCM
690
  ELSE IF(@p_TYPE_PROCESS='S_DVCM')
691
	BEGIN
692
		IF(EXISTS(SELECT REQ_ID FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID AND STATUS = 'REJECT'))
693
		BEGIN
694
			ROLLBACK TRANSACTION
695
			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'Phiếu yêu cầu đã bị trả về. Gửi duyệt thất bại.' ErrorDesc
696
			RETURN '-1'
697
		END
698

    
699
    IF(EXISTS(SELECT REQ_ID FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID AND (HO_NOTES IS NULL OR HO_NOTES = '')))
700
    BEGIN
701
			ROLLBACK TRANSACTION
702
			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'Vui lòng nhập ý kiến của bộ phận QLTS trước khi gửi duyệt.' ErrorDesc
703
			RETURN '-1'
704
    END
705
		
706
    INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
707
    VALUES (@p_REQ_ID, 'S_DVCM', @p_CHECKER_ID, GETDATE(), N'Gửi DVCM', N'QLTS gửi DVCM thành công');
708

    
709
    UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'DVCM' WHERE REQ_ID = @p_REQ_ID
710
    
711
    UPDATE PL_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103) WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'QLTS_N'
712

    
713
    UPDATE PL_REQUEST_PROCESS SET STATUS = 'C' WHERE PROCESS_ID = 'DVCM' AND REQ_ID = @p_REQ_ID 
714
    
715
    SET @p_NOTES = N'Gửi DVCM thành công'
716
		
717
			IF @@Error <> 0 GOTO ABORT
718
			
719
		--END
720
		SET @NOTIFATION= N'Gửi DVCM thành công'
721

    
722
    --UPDATE NGÀY GỬI DUYỆT
723
    UPDATE TR_REQUEST_SHOP_DOC SET SEND_APP_DT = GETDATE()
724
    WHERE REQ_ID = @p_REQ_ID
725

    
726
	END	
727
  -- QLTS DUYỆT
728
	ELSE IF(@p_TYPE_PROCESS='QLTS_D')
729
	BEGIN
730

    
731
      IF(EXISTS(SELECT TOP 1 A.HO_NOTES FROM TR_REQUEST_SHOP_DOC A WHERE A.REQ_ID = @p_REQ_ID AND (A.HO_NOTES IS NULL OR A.HO_NOTES = '')))
732
      BEGIN
733
    			ROLLBACK TRANSACTION
734
    			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'QLTS chưa nhập ý kiến. Duyệt thất bại' ErrorDesc
735
    			RETURN '-1'
736
      END
737

    
738
      IF(EXISTS(SELECT trsd.REQ_ID FROM TR_REQUEST_SHOP_DOC trsd WHERE trsd.REQ_ID = @p_REQ_ID AND trsd.MAKER_ID = @p_CHECKER_ID))
739
      BEGIN
740
            ROLLBACK TRANSACTION
741
      			SELECT '-1' as Result, @p_REQ_ID AS ID, N'Bạn không có quyền duyệt phiếu này' ErrorDesc
742
      			RETURN '-1'
743
      END
744

    
745
      IF((SELECT TOP 1 STATUS FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID) = 'TBP_D')
746
      BEGIN --TRƯỞNG BỘ PHẬN QLTS DUYỆT
747

    
748
    			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',NOTES = @p_NOTES ,CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID = 'TBP_D'
749
    		
750
          INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
751
          VALUES (@p_REQ_ID, 'TBP_D', @p_CHECKER_ID, GETDATE(), N'Trưởng bộ phận QLTS duyệt', @p_NOTES);
752
    
753
    			UPDATE TR_REQUEST_SHOP_DOC SET [STATUS]='QLTS_D' WHERE REQ_ID=@p_REQ_ID
754
          
755
          INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID,IS_LEAF,NOTES,PROCESS_TYPE)
756
          VALUES(@p_REQ_ID,'QLTS_D','C','GDDV_QLTS','DV0001','TBP_D','DEP000000000048','N',NULL,'Approve')
757
    
758
    		  SET @NOTIFATION= N'Trưởng bộ phận QLTS duyệt thành công'
759
      END
760
      ELSE IF((SELECT TOP 1 STATUS FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID) = 'QLTS_D')
761
      BEGIN --TRƯỞNG ĐƠN VỊ QLTS DUYỆT
762

    
763
    			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P', NOTES = @p_NOTES , CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' 
764
    			IF @@Error <> 0 GOTO ABORT     
765
    		
766
          INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
767
          VALUES (@p_REQ_ID, 'QLTS_D', @p_CHECKER_ID, GETDATE(), N'Trưởng đơn vị QLTS duyệt', @p_NOTES);
768

    
769
          IF(@REQ_TYPE <> 'DCTS')
770
          BEGIN --PHIẾU SỬA CHỮA TÀI SẢN, THU HỒI TÀI SẢN
771
        		  INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],IS_LEAF)
772
        			VALUES(@p_REQ_ID,'APPROVE','C','N')
773
        
774
        			UPDATE TR_REQUEST_SHOP_DOC SET [STATUS]='APPROVE',AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,GETDATE(),103) WHERE REQ_ID=@p_REQ_ID
775
              
776
              IF(@REQ_TYPE = 'TH')
777
              BEGIN
778
                  --UPDATE ASS_MASTER XONG GIAO DỊCH
779
                  UPDATE ASS_MASTER SET CURRENT_TRANS = NULL, CURRENT_TRANS_TYPE = NULL WHERE ASSET_ID IN (SELECT A.ASSET_ID FROM TR_REQUEST_DOC_ASSET_DT A WHERE A.REQ_DOC_ID = @p_REQ_ID)
780
              END
781
              ELSE
782
              BEGIN
783
                  --UPDATE ASS_MASTER XONG GIAO DỊCH
784
                  UPDATE ASS_MASTER SET CURRENT_TRANS = NULL, CURRENT_TRANS_TYPE = NULL WHERE ASSET_ID IN (SELECT A.ASS_ID FROM TR_REQUEST_SHOP_DOC_DT A WHERE A.REQ_DOC_ID = @p_REQ_ID)
785
              END
786
              SET @NOTIFATION= N'Phê duyệt thành công'
787
          END
788
          ELSE 
789
          BEGIN
790
                DECLARE @PRICE_OF_ASSET DECIMAL = (SELECT MAX(b.BUY_PRICE) 
791
                                                  FROM TR_REQUEST_SHOP_DOC_DT A 
792
                                                  LEFT JOIN ASS_MASTER B ON A.ASS_ID = B.ASSET_ID 
793
                                                  WHERE A.REQ_DOC_ID = @p_REQ_ID)
794

    
795
                IF(@PRICE_OF_ASSET > 30000000)
796
                BEGIN --LÊN TTDVNB
797
                    INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID,IS_LEAF,NOTES,PROCESS_TYPE)
798
          		      VALUES(@p_REQ_ID,'TTQLTS_D','C','GDDV','DV0001','QLTS_D',(SELECT TOP 1 DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE = '05N20'),'N',NULL,'Approve')
799

    
800
                    UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'TTQLTS_D' WHERE REQ_ID = @p_REQ_ID   
801
                    SET @NOTIFATION= N'Trưởng đơn vị phê duyệt thành công. Phiếu đã gừi lên Trung tâm dịch vụ nội bộ.'  
802
                END               
803
                ELSE 
804
                BEGIN
805
              		  INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],IS_LEAF)
806
              			VALUES(@p_REQ_ID,'APPROVE','C','N')
807
              
808
              			UPDATE TR_REQUEST_SHOP_DOC SET [STATUS]='APPROVE',AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,GETDATE(),103) WHERE REQ_ID=@p_REQ_ID
809
                    
810
                    --UPDATE ASS_MASTER XONG GIAO DỊCH
811
                    UPDATE ASS_MASTER SET CURRENT_TRANS = NULL, CURRENT_TRANS_TYPE = NULL WHERE ASSET_ID IN (SELECT A.ASS_ID FROM TR_REQUEST_SHOP_DOC_DT A WHERE A.REQ_DOC_ID = @p_REQ_ID)
812

    
813
                    SET @NOTIFATION= N'Phê duyệt thành công.'
814
                END
815
          END
816
    
817
    		  
818
      END
819
      ELSE IF((SELECT TOP 1 STATUS FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID) = 'TTQLTS_D')
820
      BEGIN --TRUNG TÂM DỊCH VỤ NỘI BỘ DUYỆT
821
          UPDATE PL_REQUEST_PROCESS SET [STATUS]='P', NOTES = @p_NOTES , CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' 
822
    			IF @@Error <> 0 GOTO ABORT
823
      
824
    		  INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],IS_LEAF)
825
    			 VALUES(@p_REQ_ID,'APPROVE','C','N')
826
    		
827
          INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
828
          VALUES (@p_REQ_ID, 'TTQLTS_D', @p_CHECKER_ID, GETDATE(), N'Trung tâm dịch vụ nội bộ phê duyệt', @p_NOTES);
829
    
830
    			UPDATE TR_REQUEST_SHOP_DOC SET [STATUS]='APPROVE',AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,GETDATE(),103) WHERE REQ_ID=@p_REQ_ID
831
          
832
          --UPDATE ASS_MASTER XONG GIAO DỊCH
833
          UPDATE ASS_MASTER SET CURRENT_TRANS = NULL, CURRENT_TRANS_TYPE = NULL WHERE ASSET_ID IN (SELECT A.ASS_ID FROM TR_REQUEST_SHOP_DOC_DT A WHERE A.REQ_DOC_ID = @p_REQ_ID)
834
    
835
    		  SET @NOTIFATION= N'Phê duyệt thành công'
836
      END
837

    
838
      --UPDATE NGÀY GỬI DUYỆT
839
      UPDATE TR_REQUEST_SHOP_DOC SET SEND_APP_DT = GETDATE()
840
      WHERE REQ_ID = @p_REQ_ID
841

    
842
    	IF @@Error <> 0 GOTO ABORT
843
	END
844
  ELSE IF(@p_TYPE_PROCESS = 'DVCM_D')
845
  BEGIN
846
  		UPDATE TR_REQUEST_SHOP_COSTCENTER SET AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103)
847
      WHERE REQ_ID = @p_REQ_ID AND COST_ID = @DEP_ID
848

    
849
      UPDATE PL_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103), NOTES = @p_NOTES
850
      WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DVCM_D' AND PARENT_PROCESS_ID = 'DVCM' AND DEP_ID = @DEP_ID
851
		
852
      INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
853
      VALUES (@p_REQ_ID, 'DVCM_D', @p_CHECKER_ID, GETDATE(), N'Trưởng bộ phận DVCM duyệt', @p_NOTES);
854

    
855
       -- CHECK DVCM ĐÃ NHẬP ĐỦ HẾT CHƯA
856
      IF(NOT EXISTS(SELECT TOP 1 trsc.REQ_COST_ID FROM TR_REQUEST_SHOP_COSTCENTER trsc 
857
                        WHERE trsc.REQ_ID = @p_REQ_ID AND (trsc.AUTH_STATUS = 'U' OR trsc.AUTH_STATUS = 'E')))
858
      BEGIN
859

    
860
          IF(@REQ_TYPE = 'SC')
861
          BEGIN
862
              UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'QLTS_NL',HO_NOTES = N'- Kế hoạch (Trong/Ngoài NS):' + CHAR(10) + N'- Nội dung đề xuất:' + CHAR(10) + N'- Ghi chú khác:'  WHERE REQ_ID = @p_REQ_ID
863

    
864
              INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID,IS_LEAF,NOTES,PROCESS_TYPE)
865
          		VALUES(@p_REQ_ID,'QLTS_NL','C','QLTS','DV0001','DVCM_D','DEP000000000048','N',NULL,'Update')
866
          END
867
          ELSE
868
          BEGIN
869
              UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'TBP_D' WHERE REQ_ID = @p_REQ_ID
870
                        
871
              INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID,IS_LEAF,NOTES,PROCESS_TYPE)
872
          		VALUES(@p_REQ_ID,'TBP_D','C','TBP_QLTS','DV0001','DVCM_D','DEP000000000048','N',NULL,'Approve')
873
          END
874

    
875
           --UPDATE NGÀY GỬI DUYỆT
876
          UPDATE TR_REQUEST_SHOP_DOC SET SEND_APP_DT = GETDATE()
877
          WHERE REQ_ID = @p_REQ_ID
878
      END
879

    
880

    
881
		  SET @NOTIFATION= N'Trưởng phòng DVCM duyệt thành công'
882
    	IF @@Error <> 0 GOTO ABORT
883
  END
884
  ELSE IF(@p_TYPE_PROCESS = 'S_GDDV_QLTS')
885
  BEGIN -- GỬI TRƯỞNG BỘ PHẬN QLTS DUYỆT
886
      IF(EXISTS(SELECT TOP 1 A.HO_NOTES FROM TR_REQUEST_SHOP_DOC A WHERE A.REQ_ID = @p_REQ_ID AND (A.HO_NOTES IS NULL OR A.HO_NOTES = '')))
887
      BEGIN
888
    			ROLLBACK TRANSACTION
889
    			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'Vui lòng nhập ý kiến của bộ phận QLTS trước khi gửi duyệt.' ErrorDesc
890
    			RETURN '-1'
891
      END
892

    
893
      INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
894
      VALUES (@p_REQ_ID, 'S_TBP_QLTS', @p_CHECKER_ID, CONVERT(DATETIME,@p_APPROVE_DT,103), N'QLTS gửi phê duyệt', N'QLTS gửi trưởng bộ phận QLTS phê duyệt thành công');  
895
           
896
      UPDATE PL_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103) 
897
      WHERE REQ_ID = @p_REQ_ID AND (PROCESS_ID = 'QLTS_N' 
898
                                    OR PROCESS_ID = 'QLTS_NL')--PYC_SC                                                                
899

    
900
      INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID,IS_LEAF,NOTES,PROCESS_TYPE)
901
      VALUES(@p_REQ_ID,'TBP_D','C','TBP_QLTS','DV0001','QLTS_N','DEP000000000048','N',NULL,'Approve')
902

    
903
      UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'TBP_D' WHERE REQ_ID = @p_REQ_ID
904

    
905
			IF @@Error <> 0 GOTO ABORT
906

    
907
		  SET @NOTIFATION= N'Gửi trưởng bộ phận QLTS phê duyệt thành công'
908

    
909
       --UPDATE NGÀY GỬI DUYỆT
910
      UPDATE TR_REQUEST_SHOP_DOC SET SEND_APP_DT = GETDATE()
911
      WHERE REQ_ID = @p_REQ_ID
912
  END
913
  ELSE IF(@p_TYPE_PROCESS = 'S_GDDV_DVCM')
914
  BEGIN
915
        IF(EXISTS(SELECT 1 FROM TR_REQUEST_SHOP_COSTCENTER trsc WHERE trsc.REQ_ID = @p_REQ_ID 
916
                            AND trsc.COST_ID = @DEP_ID 
917
                            AND trsc.AUTH_STATUS = 'E' 
918
                            AND (trsc.RE_CONTENT IS NULL OR trsc.RE_CONTENT = '')))
919
        BEGIN
920
      			ROLLBACK TRANSACTION
921
      			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'Vui lòng nhập Nội Dung Đề Xuất của bạn trước khi gửi Trưởng bộ phận DVCM phê duyệt' ErrorDesc
922
      			RETURN '-1'
923
        END
924

    
925
        INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
926
        VALUES (@p_REQ_ID, 'S_GDDVDVCM', @p_CHECKER_ID, CONVERT(DATETIME,@p_APPROVE_DT,103), N'DVCM gửi Trưởng bộ phận DVCM', N'DVCM gửi Trưởng bộ phận DVCM phê duyệt thành công');  
927

    
928
       UPDATE TR_REQUEST_SHOP_COSTCENTER SET AUTH_STATUS = 'U' WHERE REQ_ID = @p_REQ_ID AND COST_ID = @DEP_ID
929
       UPDATE PL_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103)  WHERE REQ_ID = @p_REQ_ID AND DEP_ID = @DEP_ID AND PROCESS_ID = 'DVCM' AND PARENT_PROCESS_ID = 'QLTS_N'
930
			 UPDATE PL_REQUEST_PROCESS SET STATUS = 'C' WHERE REQ_ID = @p_REQ_ID AND DEP_ID = @DEP_ID AND PROCESS_ID = 'DVCM_D' AND PARENT_PROCESS_ID = 'DVCM'
931

    
932
      IF @@Error <> 0 GOTO ABORT
933

    
934
		  SET @NOTIFATION= N'Gửi trưởng bộ phận DVCM phê duyệt thành công'
935
  END
936
  ELSE IF(@p_TYPE_PROCESS = 'S_DVCM_OR_QLTSNL')
937
  BEGIN --PYC SỬA CHỮA: NẾU CÓ DVCM THÌ GỬI DVCM. NẾU KO CÓ THÌ QUAY LẠI QLTS_NL
938
      IF(EXISTS(SELECT REQ_ID FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID AND STATUS = 'REJECT'))
939
    		BEGIN
940
    			ROLLBACK TRANSACTION
941
    			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'Phiếu yêu cầu đã bị trả về. Gửi duyệt thất bại.' ErrorDesc
942
    			RETURN '-1'
943
    		END
944

    
945
        IF(EXISTS(SELECT 1 FROM TR_REQUEST_SHOP_COSTCENTER WHERE REQ_ID = @p_REQ_ID))
946
        BEGIN --GỬI DVCM
947
            INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
948
            VALUES (@p_REQ_ID, 'S_DVCM', @p_CHECKER_ID, GETDATE(), N'Gửi DVCM', N'QLTS gửi DVCM thành công');
949
        
950
            UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'DVCM' WHERE REQ_ID = @p_REQ_ID
951
            
952
            UPDATE PL_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103) WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'QLTS_N'
953
        
954
            UPDATE PL_REQUEST_PROCESS SET STATUS = 'C' WHERE PROCESS_ID = 'DVCM' AND REQ_ID = @p_REQ_ID 
955
            
956
            SET @p_NOTES = N'Gửi DVCM thành công'
957
            SET @NOTIFATION= N'Gửi DVCM thành công'
958
        END
959
        ELSE --QUAY LẠI QLTS
960
        BEGIN
961
            INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
962
            VALUES (@p_REQ_ID, 'S_QLTS_NL', @p_CHECKER_ID, GETDATE(), N'Gửi bộ phận QLTS xử lý', N'Gửi bộ phận QLTS xử lý thành công');
963
        
964
            UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'QLTS_NL', 
965
            HO_NOTES = N'- Kế hoạch (Trong/Ngoài NS):' + CHAR(10) + N'- Nội dung đề xuất: ' + CHAR(10) + N'- Ghi chú khác:' 
966
            WHERE REQ_ID = @p_REQ_ID
967
            
968
            UPDATE PL_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103) WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'QLTS_N'
969
        
970
            INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID,IS_LEAF,NOTES,PROCESS_TYPE)
971
          	VALUES(@p_REQ_ID,'QLTS_NL','C','QLTS','DV0001','QLTS_N','DEP000000000048','N',NULL,'Update')
972
            
973
            SET @p_NOTES = N'Gửi bộ phận QLTS xử lý thành công'
974
            SET @NOTIFATION= N'Gửi bộ phận QLTS xử lý thành công'
975
        END    	
976

    
977
    		--UPDATE NGÀY GỬI DUYỆT
978
        UPDATE TR_REQUEST_SHOP_DOC SET SEND_APP_DT = GETDATE()
979
        WHERE REQ_ID = @p_REQ_ID
980
    		IF @@Error <> 0 GOTO ABORT
981
  END
982
  ELSE IF(@p_TYPE_PROCESS = 'CANCEL')
983
  BEGIN --QLTS HUỶ PHIẾU
984
      IF(NOT EXISTS(SELECT 1 FROM TR_REQUEST_SHOP_DOC A 
985
                    WHERE A.REQ_ID = @p_REQ_ID AND ((A.REQ_TYPE IN ('DCTS','TH') AND A.STATUS = 'QLTS_N')
986
                                                     OR(A.REQ_TYPE = 'SC' AND A.STATUS IN ('QLTS_N','QLTS_NL')))))
987
      BEGIN
988
          ROLLBACK TRANSACTION
989
    			SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, N'Huỷ thất phải. Vui lòng kiểm tra lại trạng thái phiếu' ErrorDesc
990
    			RETURN '-1'
991
      END
992

    
993
      IF(@REQ_TYPE = 'TH')
994
      BEGIN
995
          UPDATE ASS_MASTER SET CURRENT_TRANS = NULL, CURRENT_TRANS_TYPE = NULL 
996
          WHERE ASSET_ID IN (SELECT A.ASSET_ID FROM TR_REQUEST_DOC_ASSET_DT A WHERE A.REQ_DOC_ID = @p_REQ_ID)
997
      END
998
      ELSE IF(@REQ_TYPE IN ('DCTS','SC'))
999
      BEGIN
1000
          UPDATE ASS_MASTER SET CURRENT_TRANS = NULL, CURRENT_TRANS_TYPE = NULL 
1001
          WHERE ASSET_ID IN (SELECT A.ASS_ID FROM TR_REQUEST_SHOP_DOC_DT A WHERE A.REQ_DOC_ID = @p_REQ_ID)
1002
      END
1003
        
1004
      UPDATE TR_REQUEST_SHOP_DOC SET STATUS = 'CANCEL', AUTH_STATUS = 'D' WHERE REQ_ID = @p_REQ_ID
1005

    
1006
      INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
1007
      VALUES (@p_REQ_ID, 'CANCEL', @p_CHECKER_ID, GETDATE(), N'Chuyên viên QLTS huỷ phiếu.', @p_NOTES);
1008

    
1009
--      DELETE PL_REQUEST_PROCESS 
1010
--      WHERE REQ_ID = @p_REQ_ID AND STATUS = 'C' AND PROCESS_ID IN ('QLTS_N','QLTS_NL')
1011

    
1012
      DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND ((STATUS = 'C' AND PROCESS_ID IN ('QLTS_N','QLTS_NL'))
1013
                                                                OR STATUS = 'U')
1014

    
1015
      INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES,BRANCH_ID,DEP_ID)
1016
      VALUES(@p_REQ_ID,'CANCEL','C','QLTS',@p_CHECKER_ID,GETDATE(),@CURR_PROCESS,'Y',N'Chuyên viên QLTS huỷ phiếu',@BRANCHID,@DEP_ID)
1017
      
1018
      SET @p_NOTES = N'Huỷ phiếu thành công'
1019
      SET @NOTIFATION= N'Huỷ phiếu thành công'
1020
  END
1021
COMMIT TRANSACTION
1022
SELECT '0' as Result, @NOTIFATION AS NOTIFATION, '' ErrorDesc, @NOTIFY_TO_USER AS NEXT_USER_NOTIFI, @COMPLETE AS COMPLETE
1023
RETURN '0'
1024
ABORT:
1025
BEGIN
1026
		ROLLBACK TRANSACTION
1027
		SELECT '-1' AS RESULT, '' ErrorDesc
1028
		RETURN '-1'
1029
End
1030
END
1031

    
1032

    
1033

    
1034
GO
1035

    
1036

    
1037
ALTER PROCEDURE dbo.TR_REQUEST_REPAIR_ASS_Upd_QLTS
1038
@p_REQ_ID	varchar(15) = null ,
1039
@p_REQ_TYPE VARCHAR(10) = NULL,
1040
@p_CHECKER_ID VARCHAR(100) = NULL,
1041
@p_APPROVE_DT VARCHAR(100) = NULL,
1042
@p_HO_NOTES NVARCHAR(1000) = NULL,
1043
@p_NOTES NVARCHAR(MAX) = NULL,
1044
@p_ListCostCenter XML
1045
AS
1046

    
1047
BEGIN TRANSACTION    		
1048
    
1049
    DECLARE @TYPE_PYC VARCHAR(10) = (SELECT TOP 1 trsd.REQ_TYPE FROM TR_REQUEST_SHOP_DOC trsd WHERE trsd.REQ_ID = @p_REQ_ID)
1050

    
1051
    IF(@TYPE_PYC <> 'SC')
1052
    BEGIN --PYC ĐIỀU CHUYỂN && THU HỒI
1053

    
1054
        IF(@p_HO_NOTES IS NULL OR @p_HO_NOTES = '')
1055
        BEGIN
1056
            ROLLBACK TRANSACTION
1057
            SELECT '-1' as Result, @p_REQ_ID  REQ_ID, N'Vui lòng nhập ý kiến của bộ phận QLTS' ErrorDesc
1058
            RETURN '-1'
1059
        END
1060
    
1061
        IF(ISNULL(@p_NOTES,'') <> 'SKIP_PL_PROCESS')
1062
        BEGIN
1063
            INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
1064
            VALUES (@p_REQ_ID, 'QLTS_N', @p_CHECKER_ID, CONVERT(DATETIME,@p_APPROVE_DT,103), N'QLTS nhập ý kiến', N'QLTS nhập ý kiến thành công');       
1065
    		END
1066

    
1067
        UPDATE TR_REQUEST_SHOP_DOC SET HO_NOTES = @p_HO_NOTES WHERE REQ_ID = @p_REQ_ID
1068
    
1069
        DELETE TR_REQUEST_SHOP_COSTCENTER WHERE REQ_ID = @p_REQ_ID
1070
    
1071
        DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND (PROCESS_ID = 'DVCM' OR PROCESS_ID = 'DVCM_D')
1072
    
1073
            --START THÊM DVCM
1074
            DECLARE @hdoc2 INT
1075
        		
1076
        		Declare 
1077
        		@l_NOTES NVARCHAR(MAX),
1078
        		@l_AUTH_STATUS VARCHAR(5),
1079
        		@COST_ID	varchar(15),
1080
        		@REQ_COST_ID	varchar(15),
1081
            @MAKER_ID VARCHAR(100),
1082
            @CREATE_DT VARCHAR(50),
1083
            @CHECKER_ID VARCHAR(100),
1084
            @APPROVE_DT VARCHAR(50),
1085
            @l_ASS_STATUS NVARCHAR(MAX),
1086
            @l_RE_CONTENT NVARCHAR(MAX),
1087
            @l_QUANTITY INT
1088
      
1089
            Exec sp_xml_preparedocument @hdoc2 Output,@p_ListCostCenter
1090
      			DECLARE ListCostCenters  CURSOR FOR
1091
      			SELECT *
1092
      			FROM OPENXML(@hdoc2,'/Root/ListCostCenter',2)
1093
      			WITH 
1094
      			(
1095
      				REQ_COST_ID VARCHAR(15),
1096
      				COST_ID	varchar(15),	
1097
      				AUTH_STATUS VARCHAR(5),
1098
      				NOTES	nvarchar(MAX),
1099
              MAKER_ID VARCHAR(100),
1100
              CREATE_DT VARCHAR(50),
1101
              CHECKER_ID VARCHAR(100),
1102
              APPROVE_DT VARCHAR(50),
1103
              ASS_STATUS NVARCHAR(MAX),
1104
              RE_CONTENT NVARCHAR(MAX),
1105
              QUANTITY INT 
1106
      				
1107
      			)
1108
      			OPEN ListCostCenters                         
1109
      
1110
      			FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@l_AUTH_STATUS, @l_NOTES, @MAKER_ID, @CREATE_DT, @CHECKER_ID, @APPROVE_DT, @l_ASS_STATUS, @l_RE_CONTENT, @l_QUANTITY
1111
      			WHILE @@FETCH_STATUS = 0	
1112
      			BEGIN
1113
      				IF( NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_SHOP_COSTCENTER WHERE COST_ID=@COST_ID AND REQ_ID=@p_REQ_ID))
1114
      				BEGIN
1115
          				EXEC SYS_CodeMasters_Gen 'TR_REQUEST_SHOP_COSTCENTER', @REQ_COST_ID out
1116
          				IF @REQ_COST_ID='' OR @REQ_COST_ID IS NULL GOTO ABORT
1117
          				INSERT INTO dbo.TR_REQUEST_SHOP_COSTCENTER
1118
          				(
1119
          				    REQ_COST_ID,
1120
          				    COST_ID,
1121
          				    REQ_ID,
1122
          				    NOTES,
1123
          				    AUTH_STATUS,
1124
          				    MAKER_ID,
1125
          				    CREATE_DT,
1126
          				    CHECKER_ID,
1127
          				    APPROVE_DT,
1128
                      ASS_STATUS,
1129
                      RE_CONTENT,
1130
                      QUANTITY
1131
          				)
1132
          				VALUES
1133
          				(   @REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
1134
          				    @COST_ID,        -- COST_ID - varchar(15)
1135
          					  @p_REQ_ID,        -- REQ_ID - varchar(15)
1136
          				    @l_NOTES,       -- NOTES - nvarchar(500)
1137
          					  @l_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
1138
          				    @MAKER_ID,        -- MAKER_ID - varchar(15)
1139
          				    CONVERT(DATETIME,@CREATE_DT,103), -- CREATE_DT - datetime
1140
          				    @CHECKER_ID,        -- CHECKER_ID - varchar(15)
1141
          				    CONVERT(DATETIME,@APPROVE_DT,103)  -- APPROVE_DT - datetime
1142
                      , @l_ASS_STATUS
1143
                      , @l_RE_CONTENT
1144
                      , @l_QUANTITY
1145
          				    )
1146
          				END						
1147
          				IF @@ERROR <> 0 GOTO ABORT2
1148
          			
1149
          				FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@l_AUTH_STATUS, @l_NOTES, @MAKER_ID, @CREATE_DT, @CHECKER_ID, @APPROVE_DT, @l_ASS_STATUS, @l_RE_CONTENT, @l_QUANTITY
1150
      			  END
1151
      			CLOSE ListCostCenters
1152
      			DEALLOCATE ListCostCenters
1153
      		--END DVCM          
1154
          
1155
    
1156
          INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID,DEP_ID, PARENT_PROCESS_ID, IS_LEAF, NOTES, PROCESS_TYPE)
1157
          SELECT 
1158
          @p_REQ_ID,
1159
          'DVCM',
1160
          'U',
1161
          'DVCM',
1162
          (CASE WHEN 1=1 THEN (SELECT B.BRANCH_ID FROM CM_DEPARTMENT B WHERE B.DEP_ID = A.COST_ID)END) AS BRANCH_ID,       
1163
          A.COST_ID, --DEP_ID
1164
          'QLTS_N',
1165
          'N',
1166
          NULL,
1167
          'Update'
1168
          FROM TR_REQUEST_SHOP_COSTCENTER A WHERE REQ_ID = @p_REQ_ID
1169
    
1170
          --TRƯỞNG DVCM CẬP DUYỆT
1171
          INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID,DEP_ID, PARENT_PROCESS_ID, IS_LEAF, NOTES, PROCESS_TYPE)
1172
          SELECT 
1173
          @p_REQ_ID,
1174
          'DVCM_D',
1175
          'U',
1176
          'GDDV',
1177
          (CASE WHEN 1=1 THEN (SELECT B.BRANCH_ID FROM CM_DEPARTMENT B WHERE B.DEP_ID = A.COST_ID)END) AS BRANCH_ID,       
1178
          A.COST_ID, --DEP_ID
1179
          'DVCM',
1180
          'N',
1181
          NULL,
1182
          'Approve'
1183
          FROM TR_REQUEST_SHOP_COSTCENTER A WHERE REQ_ID = @p_REQ_ID
1184
      END
1185
    ELSE 
1186
    BEGIN --PYC SỬA CHỮA
1187

    
1188
        IF(ISNULL(@p_NOTES,'') <> 'SKIP_PL_PROCESS')
1189
        BEGIN
1190
            INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
1191
            VALUES (@p_REQ_ID, 'QLTS_N', @p_CHECKER_ID, CONVERT(DATETIME,@p_APPROVE_DT,103), N'QLTS xử lý', N'QLTS xử lý thành công');
1192
        END
1193

    
1194
        IF(EXISTS(SELECT 1 FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID = @p_REQ_ID AND STATUS = 'QLTS_N'))
1195
        BEGIN --ĐANG Ở BƯỚC QLTS CHỌN DVCM
1196
            DELETE TR_REQUEST_SHOP_COSTCENTER WHERE REQ_ID = @p_REQ_ID
1197
        
1198
            DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND (PROCESS_ID = 'DVCM' OR PROCESS_ID = 'DVCM_D')
1199
        
1200
                --START THÊM DVCM
1201
                DECLARE @hdoc3 INT
1202
            		
1203
            		Declare 
1204
            		@l_NOTES_1 NVARCHAR(MAX),
1205
            		@l_AUTH_STATUS_1 VARCHAR(5),
1206
            		@COST_ID_1	varchar(15),
1207
            		@REQ_COST_ID_1	varchar(15),
1208
                @MAKER_ID_1 VARCHAR(100),
1209
                @CREATE_DT_1 VARCHAR(50),
1210
                @CHECKER_ID_1 VARCHAR(100),
1211
                @APPROVE_DT_1 VARCHAR(50),
1212
                @l_ASS_STATUS_1 NVARCHAR(MAX),
1213
                @l_RE_CONTENT_1 NVARCHAR(MAX),
1214
                @l_QUANTITY_1 INT
1215
          
1216
                Exec sp_xml_preparedocument @hdoc3 Output,@p_ListCostCenter
1217
          			DECLARE ListCostCenters  CURSOR FOR
1218
          			SELECT *
1219
          			FROM OPENXML(@hdoc3,'/Root/ListCostCenter',2)
1220
          			WITH 
1221
          			(
1222
          				REQ_COST_ID VARCHAR(15),
1223
          				COST_ID	varchar(15),	
1224
          				AUTH_STATUS VARCHAR(5),
1225
          				NOTES	nvarchar(MAX),
1226
                  MAKER_ID VARCHAR(100),
1227
                  CREATE_DT VARCHAR(50),
1228
                  CHECKER_ID VARCHAR(100),
1229
                  APPROVE_DT VARCHAR(50),
1230
                  ASS_STATUS NVARCHAR(MAX),
1231
                  RE_CONTENT NVARCHAR(MAX),
1232
                  QUANTITY INT 
1233
          				
1234
          			)
1235
          			OPEN ListCostCenters                         
1236
          
1237
          			FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID_1,@COST_ID_1,@l_AUTH_STATUS_1, @l_NOTES_1, @MAKER_ID_1, @CREATE_DT_1, @CHECKER_ID_1, @APPROVE_DT_1, @l_ASS_STATUS_1, @l_RE_CONTENT_1, @l_QUANTITY_1
1238
          			WHILE @@FETCH_STATUS = 0	
1239
          			BEGIN
1240
          				IF( NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_SHOP_COSTCENTER WHERE COST_ID=@COST_ID_1 AND REQ_ID=@p_REQ_ID))
1241
          				BEGIN
1242
              				EXEC SYS_CodeMasters_Gen 'TR_REQUEST_SHOP_COSTCENTER', @REQ_COST_ID_1 out
1243
              				IF @REQ_COST_ID_1='' OR @REQ_COST_ID_1 IS NULL GOTO ABORT
1244
              				INSERT INTO dbo.TR_REQUEST_SHOP_COSTCENTER
1245
              				(
1246
              				    REQ_COST_ID,
1247
              				    COST_ID,
1248
              				    REQ_ID,
1249
              				    NOTES,
1250
              				    AUTH_STATUS,
1251
              				    MAKER_ID,
1252
              				    CREATE_DT,
1253
              				    CHECKER_ID,
1254
              				    APPROVE_DT,
1255
                          ASS_STATUS,
1256
                          RE_CONTENT,
1257
                          QUANTITY
1258
              				)
1259
              				VALUES
1260
              				(   @REQ_COST_ID_1,        -- REQ_COST_ID - varchar(15)
1261
              				    @COST_ID_1,        -- COST_ID - varchar(15)
1262
              					  @p_REQ_ID,        -- REQ_ID - varchar(15)
1263
              				    @l_NOTES_1,       -- NOTES - nvarchar(500)
1264
              					  @l_AUTH_STATUS_1,        -- AUTH_STATUS - varchar(1)
1265
              				    @MAKER_ID_1,        -- MAKER_ID - varchar(15)
1266
              				    CONVERT(DATETIME,@CREATE_DT_1,103), -- CREATE_DT - datetime
1267
              				    @CHECKER_ID_1,        -- CHECKER_ID - varchar(15)
1268
              				    CONVERT(DATETIME,@APPROVE_DT_1,103)  -- APPROVE_DT - datetime
1269
                          , @l_ASS_STATUS_1
1270
                          , @l_RE_CONTENT_1
1271
                          , @l_QUANTITY_1
1272
              				    )
1273
              				END						
1274
              				IF @@ERROR <> 0 GOTO ABORT2
1275
              			
1276
              				FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID_1,@COST_ID_1,@l_AUTH_STATUS_1, @l_NOTES_1, @MAKER_ID_1, @CREATE_DT_1, @CHECKER_ID_1, @APPROVE_DT_1, @l_ASS_STATUS_1, @l_RE_CONTENT_1, @l_QUANTITY_1
1277
          			  END
1278
          			CLOSE ListCostCenters
1279
          			DEALLOCATE ListCostCenters
1280
          		--END DVCM          
1281
              
1282
        
1283
              INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID,DEP_ID, PARENT_PROCESS_ID, IS_LEAF, NOTES, PROCESS_TYPE)
1284
              SELECT 
1285
              @p_REQ_ID,
1286
              'DVCM',
1287
              'U',
1288
              'DVCM',
1289
              (CASE WHEN 1=1 THEN (SELECT B.BRANCH_ID FROM CM_DEPARTMENT B WHERE B.DEP_ID = A.COST_ID)END) AS BRANCH_ID,       
1290
              A.COST_ID, --DEP_ID
1291
              'QLTS_N',
1292
              'N',
1293
              NULL,
1294
              'Update'
1295
              FROM TR_REQUEST_SHOP_COSTCENTER A WHERE REQ_ID = @p_REQ_ID
1296
        
1297
              --TRƯỞNG DVCM CẬP DUYỆT
1298
              INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID,DEP_ID, PARENT_PROCESS_ID, IS_LEAF, NOTES, PROCESS_TYPE)
1299
              SELECT 
1300
              @p_REQ_ID,
1301
              'DVCM_D',
1302
              'U',
1303
              'GDDV',
1304
              (CASE WHEN 1=1 THEN (SELECT B.BRANCH_ID FROM CM_DEPARTMENT B WHERE B.DEP_ID = A.COST_ID)END) AS BRANCH_ID,       
1305
              A.COST_ID, --DEP_ID
1306
              'DVCM',
1307
              'N',
1308
              NULL,
1309
              'Approve'
1310
              FROM TR_REQUEST_SHOP_COSTCENTER A WHERE REQ_ID = @p_REQ_ID
1311

    
1312
        END
1313
        ELSE
1314
        BEGIN
1315
            IF(@p_HO_NOTES IS NULL OR @p_HO_NOTES = '')
1316
            BEGIN
1317
                ROLLBACK TRANSACTION
1318
                SELECT '-1' as Result, @p_REQ_ID  REQ_ID, N'Vui lòng nhập ý kiến của bộ phận QLTS' ErrorDesc
1319
                RETURN '-1'
1320
            END
1321

    
1322
        	  UPDATE TR_REQUEST_SHOP_DOC SET HO_NOTES = @p_HO_NOTES WHERE REQ_ID = @p_REQ_ID
1323
        END
1324

    
1325
    END
1326
COMMIT TRANSACTION
1327
SELECT '0' as Result, @p_REQ_ID  REQ_ID, '' ErrorDesc, N'QLTS xử lý thành công' Message
1328
RETURN '0'
1329
ABORT:
1330
BEGIN
1331
		ROLLBACK TRANSACTION
1332
		SELECT '-1' AS RESULT
1333
		RETURN '-1'
1334
END
1335
ABORT2:
1336
BEGIN
1337
		ROLLBACK TRANSACTION
1338
  	CLOSE ListCostCenters
1339
	  DEALLOCATE ListCostCenters
1340
		SELECT '-1' AS RESULT
1341
		RETURN '-1'
1342
END
1343

    
1344

    
1345

    
1346

    
1347

    
1348

    
1349

    
1350

    
1351