1
|
|
2
|
|
3
|
ALTER PROCEDURE [dbo].[TR_CHECK_ROLE_APPROVE]
|
4
|
@TYPE VARCHAR(15) = NULL,
|
5
|
@p_REQ_ID varchar(15) = NULL,
|
6
|
@p_USER_LOGIN varchar(15) = NULL
|
7
|
AS
|
8
|
BEGIN TRANSACTION
|
9
|
IF(@TYPE <> 'ADV_PAY')
|
10
|
BEGIN
|
11
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN AND TYPE_JOB IN ('TP','KS')))
|
12
|
BEGIN
|
13
|
ROLLBACK TRANSACTION
|
14
|
SELECT '0' as Result, '' ErrorDesc
|
15
|
RETURN '0'
|
16
|
END
|
17
|
END
|
18
|
-- KHAI BAO THEM ROLE NHAN UY QUYEN
|
19
|
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
|
20
|
DECLARE @ROLE_ID VARCHAR(50)
|
21
|
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
|
22
|
INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
|
23
|
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND
|
24
|
(CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL))
|
25
|
|
26
|
DECLARE @AUTHOR TABLE
|
27
|
(
|
28
|
ROLE_ID VARCHAR(20),
|
29
|
BRANCH_ID VARCHAR(20),
|
30
|
DEP_ID VARCHAR(20),
|
31
|
BRANCH_TYPE VARCHAR(20)
|
32
|
)
|
33
|
DECLARE @AUTHOR_DVDM TABLE
|
34
|
(
|
35
|
ROLE_ID VARCHAR(20),
|
36
|
BRANCH_ID VARCHAR(20),
|
37
|
DEP_ID VARCHAR(20),
|
38
|
DVDM_ID VARCHAR(20)
|
39
|
)
|
40
|
|
41
|
DECLARE @AUTHOR_DMMS TABLE
|
42
|
(
|
43
|
ROLE_ID VARCHAR(20),
|
44
|
BRANCH_ID VARCHAR(20),
|
45
|
DEP_ID VARCHAR(20),
|
46
|
DMMS_ID VARCHAR(20)
|
47
|
)
|
48
|
|
49
|
INSERT INTO @AUTHOR
|
50
|
(
|
51
|
ROLE_ID,
|
52
|
BRANCH_ID,
|
53
|
DEP_ID,
|
54
|
BRANCH_TYPE
|
55
|
)
|
56
|
SELECT RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU
|
57
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
|
58
|
WHERE TLNANME=@p_USER_LOGIN
|
59
|
UNION ALL
|
60
|
SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_USER TU
|
61
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
62
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
|
63
|
WHERE TLNANME=@p_USER_LOGIN
|
64
|
UNION ALL
|
65
|
SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1
|
66
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
|
67
|
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
68
|
UNION ALL
|
69
|
SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,CB.BRANCH_TYPE FROM dbo.TL_SYS_ROLE_MAPPING TM1
|
70
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
71
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
|
72
|
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
73
|
|
74
|
INSERT INTO @AUTHOR_DVDM
|
75
|
(
|
76
|
ROLE_ID,
|
77
|
BRANCH_ID,
|
78
|
DEP_ID,
|
79
|
DVDM_ID
|
80
|
)
|
81
|
SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
|
82
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
|
83
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
84
|
WHERE TU.TLNANME=@p_USER_LOGIN
|
85
|
UNION ALL
|
86
|
SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
|
87
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
|
88
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
89
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
90
|
WHERE TU.TLNANME=@p_USER_LOGIN
|
91
|
UNION ALL
|
92
|
SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
|
93
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
|
94
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
95
|
WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
96
|
UNION ALL
|
97
|
SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
|
98
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
|
99
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
100
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
101
|
WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
102
|
|
103
|
INSERT INTO @AUTHOR_DMMS
|
104
|
(
|
105
|
ROLE_ID,
|
106
|
BRANCH_ID,
|
107
|
DEP_ID,
|
108
|
DMMS_ID
|
109
|
)
|
110
|
SELECT RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
|
111
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
|
112
|
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')
|
113
|
WHERE TLNANME=@p_USER_LOGIN
|
114
|
UNION ALL
|
115
|
SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
|
116
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
117
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
|
118
|
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')
|
119
|
WHERE TLNANME=@p_USER_LOGIN
|
120
|
UNION ALL
|
121
|
SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
|
122
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
|
123
|
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')
|
124
|
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
125
|
UNION ALL
|
126
|
SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
|
127
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
128
|
LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
|
129
|
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')
|
130
|
WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
131
|
|
132
|
IF(@TYPE='ADV_PAY')
|
133
|
BEGIN
|
134
|
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_ID))
|
135
|
BEGIN
|
136
|
ROLLBACK TRANSACTION
|
137
|
SELECT '-1' as Result, '' ErrorDesc
|
138
|
RETURN '-1'
|
139
|
END
|
140
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE)) )
|
141
|
BEGIN
|
142
|
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND ROLE_USER IN (SELECT * FROM @TABLE_ROLE)))
|
143
|
BEGIN
|
144
|
ROLLBACK TRANSACTION
|
145
|
SELECT '-1' as Result, '' ErrorDesc
|
146
|
RETURN '-1'
|
147
|
END
|
148
|
END
|
149
|
END
|
150
|
ELSE
|
151
|
BEGIN
|
152
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN))
|
153
|
BEGIN
|
154
|
ROLLBACK TRANSACTION
|
155
|
SELECT '0' as Result, '' ErrorDesc
|
156
|
RETURN '0'
|
157
|
END
|
158
|
IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND (
|
159
|
EXISTS(SELECT * FROM @AUTHOR AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND AUTH.BRANCH_ID=PR.BRANCH_ID AND (AUTH.DEP_ID=PR.DEP_ID OR AUTH.BRANCH_TYPE<>'HS'))
|
160
|
OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID)
|
161
|
OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DMMS AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DMMS_ID AND A.PROCESS_ID='DMMS'))
|
162
|
OR EXISTS(SELECT AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND EXISTS (SELECT * FROM dbo.TR_REQUEST_DOC A WHERE A.REQ_ID=@p_REQ_ID AND A.DMMS_ID=AUTH.DVDM_ID AND A.PROCESS_ID='DMMS'))
|
163
|
OR EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE PL_REQUEST_PROCESS_CHILD.PROCESS_ID=PR.ID AND TLNAME=@p_USER_LOGIN AND TYPE_JOB='KS' AND STATUS_JOB='C')
|
164
|
OR ( (PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID IS NULL) )
|
165
|
)))
|
166
|
BEGIN
|
167
|
ROLLBACK TRANSACTION
|
168
|
SELECT '-1' as Result, '' ErrorDesc
|
169
|
RETURN '-1'
|
170
|
END
|
171
|
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
|
172
|
BEGIN
|
173
|
ROLLBACK TRANSACTION
|
174
|
SELECT '-1' as Result, '' ErrorDesc
|
175
|
RETURN '-1'
|
176
|
END
|
177
|
IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
|
178
|
BEGIN
|
179
|
ROLLBACK TRANSACTION
|
180
|
SELECT '-1' as Result, '' ErrorDesc
|
181
|
RETURN '-1'
|
182
|
END
|
183
|
END
|
184
|
COMMIT TRANSACTION
|
185
|
SELECT '0' as Result, '' ErrorDesc
|
186
|
RETURN '0'
|
187
|
|
188
|
ABORT:
|
189
|
BEGIN
|
190
|
ROLLBACK TRANSACTION
|
191
|
SELECT '-1' as Result, '' ErrorDesc
|
192
|
RETURN '-1'
|
193
|
End
|
194
|
|
195
|
|
196
|
|
197
|
|
198
|
|
199
|
|