1
|
|
2
|
ALTER PROCEDURE [dbo].[PL_REQUEST_PROCESS_App]
|
3
|
@p_REQ_ID VARCHAR(15) = NULL,
|
4
|
@p_AUTH_STATUS VARCHAR(1) = NULL,
|
5
|
@p_CHECKER_ID varchar(15) = NULL,
|
6
|
@p_APPROVE_DT VARCHAR(20) = NULL,
|
7
|
@p_ROLE_LOGIN VARCHAR(50) = NULL,
|
8
|
@p_BRANCH_LOGIN VARCHAR(15),
|
9
|
@p_PROCESS_DESC NVARCHAR(MAX),
|
10
|
@p_IS_AUTHORITY BIT = 0
|
11
|
AS
|
12
|
--SET @p_APPROVE_DT= CAST(@p_APPROVE_DT AS DATE)
|
13
|
--Validation is here
|
14
|
DECLARE @ERRORSYS NVARCHAR(15) = ''
|
15
|
IF ( NOT EXISTS ( SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
|
16
|
SET @ERRORSYS = 'REQ-00002'
|
17
|
IF @ERRORSYS <> ''
|
18
|
BEGIN
|
19
|
--ROLLBACK TRANSACTION
|
20
|
SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
|
21
|
RETURN '0'
|
22
|
END
|
23
|
-- LUCTV 06 - 05 - 2021 BO SUNG UY QUYEN KIEM NHIEM
|
24
|
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
|
25
|
INSERT INTO @TABLE_ROLE SELECT (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
26
|
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
27
|
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
|
28
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
|
29
|
-- KHAI BAO UY QUYEN DON VI DAU MOI
|
30
|
DECLARE @AUTHOR_DVDM TABLE
|
31
|
(
|
32
|
ROLE_ID VARCHAR(100),
|
33
|
BRANCH_ID VARCHAR(20),
|
34
|
DEP_ID VARCHAR(20),
|
35
|
DVDM_ID VARCHAR(20)
|
36
|
)
|
37
|
|
38
|
|
39
|
INSERT INTO @AUTHOR_DVDM
|
40
|
(
|
41
|
ROLE_ID,
|
42
|
BRANCH_ID,
|
43
|
DEP_ID,
|
44
|
DVDM_ID
|
45
|
)
|
46
|
SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
|
47
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
|
48
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
49
|
WHERE TU.TLNANME=@p_CHECKER_ID
|
50
|
UNION ALL
|
51
|
SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU
|
52
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
|
53
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
54
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
55
|
WHERE TU.TLNANME=@p_CHECKER_ID
|
56
|
UNION ALL
|
57
|
SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
|
58
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
|
59
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
60
|
WHERE TU.TLNAME=@p_CHECKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
61
|
UNION ALL
|
62
|
SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU
|
63
|
LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
|
64
|
LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
|
65
|
LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
|
66
|
WHERE TU.TLNAME=@p_CHECKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
|
67
|
|
68
|
-- END
|
69
|
BEGIN TRANSACTION
|
70
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
|
71
|
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
|
72
|
BEGIN
|
73
|
ROLLBACK TRANSACTION
|
74
|
SELECT '-1' as Result,N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc
|
75
|
RETURN '-1'
|
76
|
END
|
77
|
--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
|
78
|
--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
|
79
|
|
80
|
DECLARE
|
81
|
@Result VARCHAR(5),
|
82
|
@PROCESS_CURR VARCHAR(10),
|
83
|
@STEP_CURR INT,
|
84
|
@STEP_NEXT INT,
|
85
|
@PROCESS_NEXT VARCHAR(10),
|
86
|
@ROLE_USER_NOTIFI VARCHAR(50),
|
87
|
@DEP_ID VARCHAR(15),
|
88
|
@IS_LEAF VARCHAR(1),
|
89
|
@NOTES NVARCHAR(500),
|
90
|
@IS_NEXT BIT,@ROLE_USER VARCHAR(20),@ROLE_NEXT VARCHAR(20),@LIMTT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@PROCESS_ID_NEXT VARCHAR(20),
|
91
|
@IS_NEXT_CDT BIT,
|
92
|
@TOTAL_AMT DECIMAL(18,2),
|
93
|
@STEP_PARENT VARCHAR(20),
|
94
|
@NOTES_CDT VARCHAR(20),
|
95
|
@ROLE_CDT VARCHAR(20),
|
96
|
@DVDM_CDT VARCHAR(20),
|
97
|
@LIMIT_VALUE_CDT DECIMAL(18,2),
|
98
|
@DVDM_ID_TT VARCHAR(20),
|
99
|
@TOTAL_AMT_GD DECIMAL(18,2),
|
100
|
@BRANCH_CREATE VARCHAR(15),
|
101
|
@BRANCH_CREATE_TYPE VARCHAR(15),
|
102
|
@DEP_CREATE VARCHAR(15),
|
103
|
@BRANCH_PARENT VARCHAR(15)
|
104
|
DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20),@ROLE_ID VARCHAR(20),@DVDM_ID_CDT VARCHAR(20)
|
105
|
|
106
|
SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
|
107
|
|
108
|
SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
|
109
|
SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
|
110
|
|
111
|
DECLARE @DATA_DVDM TABLE
|
112
|
(
|
113
|
DVDM_ID VARCHAR(20),
|
114
|
TOTAL_AMT DECIMAL(12, 0),
|
115
|
IS_PTGD BIT
|
116
|
);
|
117
|
|
118
|
SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
|
119
|
DECLARE @DVDM_ID TABLE (
|
120
|
DVDM_ID VARCHAR(15)
|
121
|
)
|
122
|
DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500)
|
123
|
IF(@PROCESS_CURR LIKE '%_DC')
|
124
|
BEGIN
|
125
|
SELECT @ERROR=ERROR,
|
126
|
@EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
|
127
|
IF(@ERROR=1)
|
128
|
BEGIN
|
129
|
ROLLBACK TRANSACTION;
|
130
|
SELECT '-1' Result,
|
131
|
@EROOR_DES ErrorDesc
|
132
|
|
133
|
RETURN '0';
|
134
|
END
|
135
|
END
|
136
|
SELECT @ERROR=ERROR,
|
137
|
@EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDTT','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
|
138
|
IF(@ERROR=1)
|
139
|
BEGIN
|
140
|
ROLLBACK TRANSACTION;
|
141
|
SELECT '-1' Result,
|
142
|
@EROOR_DES ErrorDesc
|
143
|
|
144
|
RETURN '0';
|
145
|
END
|
146
|
INSERT INTO @DATA_DVDM
|
147
|
SELECT KHOI_ID,
|
148
|
SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
|
149
|
FROM dbo.PL_REQUEST_DOC_DT DT
|
150
|
LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
|
151
|
WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
|
152
|
GROUP BY KHOI_ID,DM.IS_PTGD;
|
153
|
SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
|
154
|
INSERT INTO @DVDM_ID
|
155
|
SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@p_BRANCH_LOGIN) GROUP BY DVDM_ID
|
156
|
|
157
|
|
158
|
|
159
|
IF(NOT EXISTS (SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS WHERE STATUS='C' AND PROCESS_ID=@PROCESS_CURR AND
|
160
|
REQ_ID=@p_REQ_ID AND (EXISTS(SELECT ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=ROLE_USER AND ( AUTH.DVDM_ID = PL_REQUEST_PROCESS.DVDM_ID OR PL_REQUEST_PROCESS.DVDM_ID ='' OR PL_REQUEST_PROCESS.DVDM_ID IS NULL)))))
|
161
|
BEGIN
|
162
|
ROLLBACK TRANSACTION
|
163
|
SELECT '1' as Result , N'Bạn không nằm trong nhóm quyền được phê duyệt tờ trình này' AS ROLE_NOTIFI, '' ErrorDesc
|
164
|
RETURN '1'
|
165
|
END
|
166
|
|
167
|
|
168
|
|
169
|
UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='P',NOTES=@NOTES+N' đã phê duyệt',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME,@p_APPROVE_DT,103) WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
|
170
|
AND (EXISTS(SELECT ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=ROLE_USER AND ( AUTH.DVDM_ID = PL_REQUEST_PROCESS.DVDM_ID OR PL_REQUEST_PROCESS.DVDM_ID ='' OR PL_REQUEST_PROCESS.DVDM_ID IS NULL)))
|
171
|
IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
|
172
|
BEGIN
|
173
|
UPDATE dbo.PL_REQUEST_DOC_DT SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME,@p_APPROVE_DT,103) WHERE REQ_ID=@p_REQ_ID AND
|
174
|
( KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT' OR @p_ROLE_LOGIN='GDDV' OR
|
175
|
@p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') )
|
176
|
END
|
177
|
IF(@PROCESS_CURR LIKE '%_DC')
|
178
|
BEGIN
|
179
|
UPDATE dbo.PL_REQUEST_TRANSFER SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME,@p_APPROVE_DT,103) WHERE REQ_DOC_ID=@p_REQ_ID AND ( FR_KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT' OR @p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV' ) )
|
180
|
END
|
181
|
|
182
|
|
183
|
INSERT INTO dbo.PL_PROCESS
|
184
|
(
|
185
|
REQ_ID,
|
186
|
PROCESS_ID,
|
187
|
CHECKER_ID,
|
188
|
APPROVE_DT,
|
189
|
PROCESS_DESC,NOTES
|
190
|
)
|
191
|
VALUES
|
192
|
( @p_REQ_ID, -- REQ_ID - varchar(15)
|
193
|
@PROCESS_CURR, -- PROCESS_ID - varchar(10)
|
194
|
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
|
195
|
GETDATE(), -- APPROVE_DT - datetime
|
196
|
@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt' -- PROCESS_DESC - nvarchar(1000)
|
197
|
)
|
198
|
|
199
|
|
200
|
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
|
201
|
|
202
|
SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
|
203
|
|
204
|
|
205
|
SET @Result='1'
|
206
|
IF(NOT EXISTS(SELECT PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR AND [STATUS] <> 'P'))
|
207
|
BEGIN
|
208
|
--- LUCTV 18.10.22 KIEM TRA NEU WORKFLOW CO PTGD KHOI HO TRO THI REMOVE KHOI QUY TRINH
|
209
|
IF((SELECT COUNT(*) FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT')=1)
|
210
|
BEGIN
|
211
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'))
|
212
|
BEGIN
|
213
|
DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'
|
214
|
UPDATE PL_REQUEST_PROCESS SET PARENT_PROCESS_ID =@PROCESS_CURR WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID ='PTGDK_TT'
|
215
|
SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
|
216
|
END
|
217
|
END
|
218
|
ELSE
|
219
|
BEGIN
|
220
|
IF((SELECT COUNT(*) FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT')=1)
|
221
|
BEGIN
|
222
|
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'))
|
223
|
BEGIN
|
224
|
DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'
|
225
|
SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
|
226
|
END
|
227
|
END
|
228
|
END
|
229
|
--- END LUCTV 18.10.22
|
230
|
UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
|
231
|
UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
|
232
|
SET @IS_LEAF=(SELECT TOP 1 IS_LEAF FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
|
233
|
|
234
|
IF (@p_ROLE_LOGIN = 'HDQT') UPDATE dbo.PL_REQUEST_DOC SET IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID = @p_REQ_ID
|
235
|
IF (@p_ROLE_LOGIN = 'TGD') UPDATE dbo.PL_REQUEST_DOC SET TGD_NOTES = @p_PROCESS_DESC WHERE REQ_ID = @p_REQ_ID
|
236
|
|
237
|
IF(@IS_LEAF='Y')
|
238
|
BEGIN
|
239
|
print 'haha'
|
240
|
EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID
|
241
|
EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
|
242
|
|
243
|
SET @Result='0'
|
244
|
END
|
245
|
END
|
246
|
IF @@Error <> 0 GOTO ABORT
|
247
|
|
248
|
COMMIT TRANSACTION
|
249
|
-- BAY GIỜ KHÔNG CẦN PHÂN CHIA XÁC NHẬN - DUYỆT NỮA. KHI CẤP LÃNH ĐẠO (GĐK, PTGĐ, TGĐ) BẤM VÀO NÚT DUYỆT THÌ THÔNG BÁO DUYỆT THÀNH CÔNG. KHÔNG CẦN QUAN TÂM CẤP CUỐI CÙNG
|
250
|
SELECT '0' as Result , @ROLE_USER AS ROLE_NOTIFI, '' ErrorDesc
|
251
|
RETURN '0'
|
252
|
ABORT:
|
253
|
BEGIN
|
254
|
|
255
|
ROLLBACK TRANSACTION
|
256
|
SELECT '-1' as Result, '' ROLE_NOTIFI , ERROR_MESSAGE() ErrorDesc
|
257
|
RETURN '-1'
|
258
|
End
|