Project

General

Profile

store_QLKH.txt

Luc Tran Van, 08/03/2022 09:39 AM

 
1
ALTER PROCEDURE dbo.TR_CHECK_ROLE_APPROVE
2
@TYPE VARCHAR(15) = NULL,
3
@p_REQ_ID	varchar(15) = NULL,
4
@p_USER_LOGIN varchar(15) = NULL
5
AS
6
BEGIN TRANSACTION
7
IF(@TYPE <> 'ADV_PAY')
8
BEGIN
9
	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')))
10
		BEGIN
11
			ROLLBACK TRANSACTION
12
			SELECT '0' as Result, '' ErrorDesc
13
			RETURN '0'
14
		END
15
END
16
-- KHAI BAO THEM ROLE NHAN UY QUYEN
17
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
18
DECLARE @ROLE_ID VARCHAR(50)
19
SET @ROLE_ID = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_USER_LOGIN)
20
INSERT INTO @TABLE_ROLE SELECT @ROLE_ID
21
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_ID AND TLNAME =@p_USER_LOGIN AND
22
(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))
23

    
24
	DECLARE @AUTHOR TABLE
25
	(
26
		ROLE_ID VARCHAR(20),
27
		BRANCH_ID VARCHAR(20),
28
		DEP_ID VARCHAR(20),
29
		BRANCH_TYPE VARCHAR(20)
30
	)
31
	DECLARE @AUTHOR_DVDM TABLE
32
	(
33
		ROLE_ID VARCHAR(20),
34
		BRANCH_ID VARCHAR(20),
35
		DEP_ID VARCHAR(20),
36
		DVDM_ID VARCHAR(20)
37
	)
38

    
39
	DECLARE @AUTHOR_DMMS TABLE
40
	(
41
		ROLE_ID VARCHAR(20),
42
		BRANCH_ID VARCHAR(20),
43
		DEP_ID VARCHAR(20),
44
		DMMS_ID VARCHAR(20)
45
	)
46

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

    
72
	INSERT INTO @AUTHOR_DVDM
73
	(
74
	    ROLE_ID,
75
	    BRANCH_ID,
76
	    DEP_ID,
77
	    DVDM_ID
78
	)
79
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
80
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
81
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
82
	WHERE TU.TLNANME=@p_USER_LOGIN
83
	UNION ALL
84
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
85
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
86
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
87
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
88
	WHERE TU.TLNANME=@p_USER_LOGIN
89
	UNION ALL
90
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
91
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
92
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
93
	WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
94
	UNION ALL
95
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
96
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
97
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
98
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
99
	WHERE TU.TLNAME=@p_USER_LOGIN AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
100

    
101
	INSERT INTO @AUTHOR_DMMS
102
	(
103
	    ROLE_ID,
104
	    BRANCH_ID,
105
	    DEP_ID,
106
		DMMS_ID
107
	)
108
	SELECT RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
109
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
110
	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')
111
	WHERE TLNANME=@p_USER_LOGIN
112
	UNION ALL
113
	SELECT TM.ROLE_NEW RoleName,TLSUBBRID,SECUR_CODE,MS.DMMS_ID FROM dbo.TL_USER TU
114
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
115
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TU.TLSUBBRID
116
	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')
117
	WHERE TLNANME=@p_USER_LOGIN
118
	UNION ALL
119
	SELECT TM1.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
120
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
121
	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')
122
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
123
	UNION ALL
124
	SELECT TM.ROLE_NEW RoleName,TM1.BRANCH_ID TLSUBBRID,TM1.DEP_ID SECUR_CODE,MS.DMMS_ID FROM dbo.TL_SYS_ROLE_MAPPING TM1
125
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TM1.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
126
	LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=TM1.BRANCH_ID
127
	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')
128
	WHERE TM1.TLNAME=@p_USER_LOGIN AND CAST(TM1.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
129

    
130
	IF(@TYPE='ADV_PAY')
131
	BEGIN
132
		IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='A' AND REQ_PAY_ID =@p_REQ_ID))
133
		BEGIN
134
			ROLLBACK TRANSACTION
135
			SELECT '-1' as Result, N'Phiếu đã duyệt xong. Vui lòng chờ các giao dịch tiếp theo để thực hiện phê duyệt' ErrorDesc
136
			RETURN '-1'
137
		END
138
		IF(EXISTS(SELECT  FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND  ROLE_USER IN (SELECT  FROM @TABLE_ROLE)) )
139
		BEGIN
140
			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)))
141
			BEGIN
142
				ROLLBACK TRANSACTION
143
				SELECT '-1' as Result, N'Bạn không có quyền phê duyệt' ErrorDesc
144
				RETURN '-1'
145
			END
146
		END
147
		--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND BRANCH_CREATE ='DV0001')
148
		--BEGIN
149
		--	IF(EXISTS(SELECT * FROM PL_PROCESS WHERE CHEC))
150
		--END
151
		--ELSE
152
		--BEGIN
153
		--	ROLLBACK TRANSACTION
154
		--	SELECT '-1' as Result, '' ErrorDesc
155
		--	RETURN '-1'
156
		--END
157
	END
158
	ELSE IF (@TYPE ='CORE')
159
	BEGIN
160
		IF(EXISTS(SELECT  FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A') OR  EXISTS(SELECT  FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT ='A'))
161
		BEGIN
162
			IF(EXISTS(SELECT * FROM PAY_ENTRIES_POST WHERE TRN_ID =@p_REQ_ID AND ISNULL(REF_NO,'') <> ''))
163
			BEGIN
164
				ROLLBACK TRANSACTION
165
				SELECT '6' as Result, N'Giao dịch được phê duyệt thành công trên AMS và hạch toán thành công vào hệ thống Core FC' ErrorDesc
166
				RETURN '6'
167
			END
168
			ELSE
169
			BEGIN
170
				ROLLBACK TRANSACTION
171
				SELECT '5' as Result, N'Giao dịch được phê duyệt thành công nhưng bắn vào Core FC thất bại. Vui lòng rà soát lại nội dung hạch toán (không được phép chứa kí tự & hoặc kí tự <)' ErrorDesc
172
				RETURN '5'
173
			END
174
		END
175
		ELSE
176
		BEGIN
177
			IF(EXISTS(SELECT  FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <> 'A') AND  EXISTS(SELECT  FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_ID AND AUTH_STATUS_KT <>'A'))
178
			BEGIN
179
				ROLLBACK TRANSACTION
180
				SELECT '7' as Result, '' ErrorDesc
181
				RETURN '7'
182
			END
183
		END
184
	END
185
	ELSE IF(@TYPE ='CON_LAYOUT')
186
	BEGIN
187

    
188
		-- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON
189
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND
190
		(@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD'))))
191
		BEGIN
192
			ROLLBACK TRANSACTION
193
			SELECT '0' as Result, '' ErrorDesc
194
			RETURN '0'
195
		END
196
		-- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON
197
		IF(EXISTS(SELECT  FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT  FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT'))))
198
		BEGIN
199
			ROLLBACK TRANSACTION
200
			SELECT '0' as Result, '' ErrorDesc
201
			RETURN '0'
202
		END
203
		IF(EXISTS(SELECT * FROM CON_LAYOUT_BLUEPRINT WHERE CON_LAYOUT_BLUEPRINT_ID = @p_REQ_ID AND PROCESS_ID ='APPROVE'))
204
		BEGIN
205

    
206
			ROLLBACK TRANSACTION
207
			SELECT '-1' as Result, '' ErrorDesc
208
			RETURN '-1'
209
		END
210
		IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND (
211
									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'))
212
									OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID)
213
									OR ( (PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID  IS NULL) )
214
									)))
215
		BEGIN
216
			print 'haha'
217
			ROLLBACK TRANSACTION
218
			SELECT '-1' as Result, '' ErrorDesc
219
			RETURN '-1'
220
		END
221
	END
222
	ELSE
223
	BEGIN
224
		-- NEU CAP DUYET LA VAN PHONG THU KI TGD THI CO THE DUYET LUON
225
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKTGD' AND
226
		(@ROLE_ID ='TKTGD' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKTGD'))))
227
		BEGIN
228
			ROLLBACK TRANSACTION
229
			SELECT '0' as Result, '' ErrorDesc
230
			RETURN '0'
231
		END
232
		-- NEU CAP DUYET LA VAN PHONG THU KI HDQT THI CO THE DUYET LUON
233
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='TKHDQT' AND
234
    (@ROLE_ID ='TKHDQT' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='TKHDQT'))))
235
		BEGIN
236
			ROLLBACK TRANSACTION
237
			SELECT '0' as Result, '' ErrorDesc
238
			RETURN '0'
239
		END
240
    -- NEU CAP DUYET LA DVCM THI CO THE DUYET LUON
241
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVCM' AND
242
    (@ROLE_ID ='GDDV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='GDDV'))))
243
		BEGIN
244
			ROLLBACK TRANSACTION
245
			SELECT '0' as Result, '' ErrorDesc
246
			RETURN '0'
247
		END
248
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='C' AND TLNAME =@p_USER_LOGIN))
249
		BEGIN
250
			ROLLBACK TRANSACTION
251
			SELECT '0' as Result, '' ErrorDesc
252
			RETURN '0'
253
		END
254
		IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS PR WHERE PR.REQ_ID =@p_REQ_ID AND STATUS ='C' AND (
255
									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'))
256
									OR EXISTS(SELECT  AUTH.ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=PR.ROLE_USER AND PR.DVDM_ID=AUTH.DVDM_ID)
257
									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'))
258
									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'))
259
									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')
260
									OR ( (PR.BRANCH_ID IS NULL OR PR.BRANCH_ID='') AND (PR.DVDM_ID ='' OR PR.DVDM_ID  IS NULL) )
261
									)))
262
		BEGIN
263
			ROLLBACK TRANSACTION
264
			SELECT '-1' as Result, '' ErrorDesc
265
			RETURN '-1'
266
		END
267
		IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
268
		BEGIN
269
			ROLLBACK TRANSACTION
270
			SELECT '-1' as Result, '' ErrorDesc
271
			RETURN '-1'
272
		END
273
		IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='APPROVE'))
274
		BEGIN
275
			ROLLBACK TRANSACTION
276
			SELECT '-1' as Result, '' ErrorDesc
277
			RETURN '-1'
278
		END
279

    
280
		-- GiaNT
281
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='P' AND PROCESS_ID ='KT' AND
282
		(@ROLE_ID ='KSV' OR EXISTS(SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH ='KSV'))))
283
		BEGIN
284
			ROLLBACK TRANSACTION
285
			SELECT '-1' as Result, '' ErrorDesc
286
			RETURN '-1'
287
		END
288
	END
289
	COMMIT TRANSACTION
290
	print 'haha'
291
	SELECT '0' as Result, '' ErrorDesc
292
	RETURN '0'
293

    
294
	ABORT:
295
	BEGIN
296
			ROLLBACK TRANSACTION
297
			SELECT '-1' as Result, '' ErrorDesc
298
			RETURN '-1'
299
	End
300

    
301

    
302

    
303

    
304

    
305

    
306

    
307
GO