Project

General

Profile

DXTL.txt

Luc Tran Van, 04/21/2023 08:58 AM

 
1
ALTER PROCEDURE dbo.ASS_LIQ_REQUEST_Search
2
@p_LIQ_REQ_ID	varchar(15)  = NULL,
3
@p_ASS_TYPE_ID	varchar(15)  = NULL,
4
@p_REQ_DT	VARCHAR(20) = NULL,
5
@p_BRANCH_ID	varchar(15)  = NULL,
6
@p_NOTES	nvarchar(1000)  = NULL,
7
@p_RECORD_STATUS	varchar(1)  = NULL,
8
@p_MAKER_ID	varchar(12)  = NULL,
9
@p_CREATE_DT	VARCHAR(20) = NULL,
10
@p_AUTH_STATUS	varchar(50)  = NULL,
11
@p_STATUS	varchar(50)  = NULL,
12
@p_CHECKER_ID	varchar(12)  = NULL,
13
@p_APPROVE_DT	VARCHAR(20) = NULL,
14
@p_TOP	INT = 10,
15
@p_BRANCH_CREATE	VARCHAR(15) = NULL,
16
@p_LEVEL	VARCHAR(50) = 'UNIT',
17
@p_TERM_ID VARCHAR(15) = NULL,
18
@p_USER_LOGIN VARCHAR(20)=NULL
19
AS
20

    
21

    
22
BEGIN -- PAGING
23

    
24
DECLARE @DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20)
25
DECLARE  @ROLE_LOGIN TABLE(USER_ROLE VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20))
26

    
27
  INSERT INTO @ROLE_LOGIN
28
  SELECT tugr.ROLE_ID, tugr.BRANCH_ID, tugr.DEPT_ID FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr
29

    
30
	SET @DEP_ID= (SELECT DEP_ID FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
31
	SET @BRANCH_ID= (SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
32

    
33
	DECLARE @lstCOST TABLE (COST_ID VARCHAR(20))
34
	INSERT INTO @lstCOST
35
	SELECT COST_ID FROM dbo.CM_COSTCENTER_DT WHERE BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID
36

    
37

    
38

    
39
DECLARE @MAX_ID INT = (SELECT MAX(CRP.ID) FROM CM_REQUEST_PROCESS CRP WHERE CRP.REQ_ID = @p_LIQ_REQ_ID)
40

    
41
DECLARE @LIQ_REQ_ID_Temp TABLE(LIQ_REQ_ID VARCHAR(20))
42
INSERT INTO @LIQ_REQ_ID_Temp
43
SELECT A.LIQ_REQ_ID FROM ASS_LIQ_REQUEST A
44
LEFT JOIN CM_REQUEST_PROCESS B ON A.LIQ_REQ_ID = B.REQ_ID
45
WHERE (EXISTS(SELECT RL.USER_ROLE FROM @ROLE_LOGIN RL WHERE RL.BRANCH_ID = B.BRANCH_ID
46
    AND (B.BRANCH_ID = 'DV0001' AND B.DEP_ID = RL.DEP_ID OR B.BRANCH_ID <> 'DV0001')
47
    AND RL.USER_ROLE = B.ROLE)
48
  OR EXISTS(SELECT * FROM @ROLE_LOGIN RL
49
    JOIN CM_REQUEST_PROCESS C ON C.REQ_ID = A.LIQ_REQ_ID AND C.ID = @MAX_ID AND RL.BRANCH_ID = C.BRANCH_ID
50
    AND (C.BRANCH_ID = 'DV0001' AND C.DEP_ID = RL.DEP_ID OR C.BRANCH_ID <> 'DV0001')
51
    AND RL.USER_ROLE = C.ROLE)
52
  OR EXISTS(SELECT 1 FROM dbo.FN_GET_USER_BY_ROLE_VB('QLTS',NULL,NULL) US
53
                WHERE US.TLNANME = @p_USER_LOGIN)
54
  OR A.MAKER_ID = @p_USER_LOGIN
55
  )
56
GROUP BY A.LIQ_REQ_ID
57

    
58

    
59
--SELECT DISTINCT BRANCH_ID,DEP_ID FROM CM_REQUEST_PROCESS WHERE PROCESS_KEY = 'AssLiqRequest' AND REQ_ID = @p_LIQ_REQ_ID
60

    
61

    
62

    
63
IF(@p_TOP IS NULL OR @p_TOP = '' OR @p_TOP = 0)
64
-- PAGING BEGIN
65
SELECT A.*,C.BRANCH_NAME, C.BRANCH_CODE,E.TYPE_NAME, CB.BRANCH_CODE AS BRANCH_CODE_CREATE, CB.BRANCH_NAME AS BRANCH_NAME_CREATE,
66
	T.TERM_CODE, T.TERM_TYPE
67
	,CASE   WHEN A.IS_REJECTED = 0 AND CRP.STATUS = 'B' THEN N'Mới tạo' 
68
            WHEN A.IS_REJECTED = 0 THEN CRP.DESCRIBE
69
            WHEN A.IS_REJECTED = 1 THEN N'Từ chối'  
70
        ELSE CRP.DESCRIBE
71
    END AS DESCRIBE, CRP.STATUS
72
	,CASE  
73
      WHEN A.IS_REJECTED = 1 THEN N'Từ chối'
74
      WHEN A.IS_REJECTED = 0 AND CRP.STATUS = 'B' THEN N'Lưu nháp'
75
      WHEN A.IS_REJECTED = 0 AND  CRP.STATUS = 'M' THEN N'Đã duyệt'
76
      ELSE N'Chờ duyệt'
77
   END AS AUTH_STATUS_NAME
78
-- SELECT END
79
	FROM ASS_LIQ_REQUEST A
80
	LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
81
	LEFT JOIN CM_BRANCH CB ON A.BRANCH_CREATE = CB.BRANCH_ID
82
	LEFT JOIN ASS_TYPE E ON A.ASS_TYPE_ID=E.TYPE_ID
83
	LEFT JOIN CM_TERM T ON T.TERM_ID = A.TERM_ID
84
	LEFT JOIN CM_REQUEST_PROCESS CRP ON CRP.REQ_ID = A.LIQ_REQ_ID AND CRP.DONE = 0
85
 WHERE 1 = 1
86
	AND (A.LIQ_REQ_ID LIKE '%' + @p_LIQ_REQ_ID + '%' OR  @p_LIQ_REQ_ID IS NULL OR @p_LIQ_REQ_ID = '')
87
	AND (A.ASS_TYPE_ID LIKE '%' + @p_ASS_TYPE_ID + '%' OR  @p_ASS_TYPE_ID IS NULL OR @p_ASS_TYPE_ID = '')
88
	AND (DATEDIFF(DAYOFYEAR, A.REQ_DT,CONVERT(DATETIME, @p_REQ_DT, 103)) = 0 OR  @p_REQ_DT IS NULL OR @p_REQ_DT = '')
89
	AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR  @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
90
	AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR  @p_NOTES IS NULL OR @p_NOTES = '')
91
	AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR  @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
92
	--AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR  @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
93
	AND A.RECORD_STATUS = '1'
94
  AND ((@p_AUTH_STATUS = 'A' AND A.AUTH_STATUS = 'L')
95
        OR (@p_AUTH_STATUS = 'E' AND A.AUTH_STATUS = 'B')
96
        OR (@p_AUTH_STATUS = 'U' AND A.AUTH_STATUS IN (SELECT * FROM STRING_SPLIT('C,E,Z,F,G,H,K', ',')))
97
        OR (@p_AUTH_STATUS = 'R' AND (A.AUTH_STATUS = 'R' OR A.IS_REJECTED = 1))
98
        OR (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
99
        )
100
	--AND (CRP.PROCESS_ID LIKE '%' + @p_AUTH_STATUS + '%' OR (CRP.PROCESS_ID IS NULL AND  @p_AUTH_STATUS<> N'U') OR  @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
101
	AND (A.TERM_ID = @p_TERM_ID OR @p_TERM_ID IS NULL OR @p_TERM_ID = '')
102
	AND ((@p_STATUS = 'Z' AND A.IS_REJECTED = 1) OR (CRP.[STATUS] LIKE '%' + @p_STATUS + '%' OR  @p_STATUS IS NULL OR @p_STATUS = ''))
103
  AND EXISTS(SELECT * FROM @LIQ_REQ_ID_Temp RL WHERE RL.LIQ_REQ_ID = A.LIQ_REQ_ID)
104
  AND CRP.ROLE IN (SELECT USER_ROLE FROM @ROLE_LOGIN) 
105
  OR A.MAKER_ID = @p_USER_LOGIN
106
	ORDER BY A.CREATE_DT DESC
107
-- PAGING END
108
ELSE
109
---- PAGING BEGIN
110
SELECT TOP(CONVERT(INT,@p_TOP)) A.*,C.BRANCH_NAME, C.BRANCH_CODE,E.TYPE_NAME, CB.BRANCH_CODE AS BRANCH_CODE_CREATE, CB.BRANCH_NAME AS BRANCH_NAME_CREATE,
111
	T.TERM_CODE, T.TERM_TYPE
112
	,CASE   WHEN A.IS_REJECTED = 0 AND CRP.STATUS = 'B' THEN N'Mới tạo' 
113
            WHEN A.IS_REJECTED = 0 THEN CRP.DESCRIBE
114
            WHEN A.IS_REJECTED = 1 THEN N'Từ chối' 
115
        ELSE CRP.DESCRIBE
116
    END AS DESCRIBE, CRP.STATUS
117
	,CASE  
118
      WHEN A.IS_REJECTED = 1 THEN N'Từ chối'
119
      WHEN A.IS_REJECTED = 0 AND CRP.STATUS = 'B' THEN N'Lưu nháp'
120
      WHEN A.IS_REJECTED = 0 AND  CRP.STATUS = 'M' THEN N'Đã duyệt'
121
      ELSE N'Chờ duyệt'
122
   END AS AUTH_STATUS_NAME
123
-- SELECT END
124
	FROM ASS_LIQ_REQUEST A
125
	LEFT JOIN CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
126
	LEFT JOIN CM_BRANCH CB ON A.BRANCH_CREATE = CB.BRANCH_ID
127
	LEFT JOIN ASS_TYPE E ON A.ASS_TYPE_ID=E.TYPE_ID
128
	LEFT JOIN CM_TERM T ON T.TERM_ID = A.TERM_ID
129
	LEFT JOIN CM_REQUEST_PROCESS CRP ON CRP.REQ_ID = A.LIQ_REQ_ID AND CRP.DONE = 0
130
 WHERE 1 = 1
131
	AND (A.LIQ_REQ_ID LIKE '%' + @p_LIQ_REQ_ID + '%' OR  @p_LIQ_REQ_ID IS NULL OR @p_LIQ_REQ_ID = '')
132
	AND (A.ASS_TYPE_ID LIKE '%' + @p_ASS_TYPE_ID + '%' OR  @p_ASS_TYPE_ID IS NULL OR @p_ASS_TYPE_ID = '')
133
	AND (DATEDIFF(DAYOFYEAR, A.REQ_DT,CONVERT(DATETIME, @p_REQ_DT, 103)) = 0 OR  @p_REQ_DT IS NULL OR @p_REQ_DT = '')
134
	AND (A.BRANCH_ID LIKE '%' + @p_BRANCH_ID + '%' OR  @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '')
135
	AND (A.NOTES LIKE '%' + @p_NOTES + '%' OR  @p_NOTES IS NULL OR @p_NOTES = '')
136
	AND (A.RECORD_STATUS LIKE '%' + @p_RECORD_STATUS + '%' OR  @p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS = '')
137
	--AND (A.AUTH_STATUS LIKE '%' + @p_AUTH_STATUS + '%' OR  @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
138
  AND ((@p_AUTH_STATUS = 'A' AND A.AUTH_STATUS = 'L')
139
        OR (@p_AUTH_STATUS = 'E' AND A.AUTH_STATUS = 'B')
140
        OR (@p_AUTH_STATUS = 'U' AND A.AUTH_STATUS IN (SELECT * FROM STRING_SPLIT('C,E,Z,F,G,H,K', ',')))
141
        OR (@p_AUTH_STATUS = 'R' AND (A.AUTH_STATUS = 'R' OR A.IS_REJECTED = 1))
142
        OR (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
143
        )
144
	AND A.RECORD_STATUS = '1'
145
	--AND (CRP.PROCESS_ID LIKE '%' + @p_AUTH_STATUS + '%' OR (CRP.PROCESS_ID IS NULL AND  @p_AUTH_STATUS<> N'U') OR  @p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS = '')
146
	AND (A.TERM_ID = @p_TERM_ID OR @p_TERM_ID IS NULL OR @p_TERM_ID = '')
147
	AND ((@p_STATUS = 'Z' AND A.IS_REJECTED = 1) OR (CRP.[STATUS] LIKE '%' + @p_STATUS + '%' OR  @p_STATUS IS NULL OR @p_STATUS = ''))
148
  AND EXISTS(SELECT * FROM @LIQ_REQ_ID_Temp RL WHERE RL.LIQ_REQ_ID = A.LIQ_REQ_ID)
149
  AND CRP.ROLE IN (SELECT USER_ROLE FROM @ROLE_LOGIN)
150
  OR A.MAKER_ID = @p_USER_LOGIN
151
	ORDER BY A.CREATE_DT DESC
152
-- PAGING END
153
END -- PAGING