1
|
ALTER PROCEDURE [dbo].[PL_REQUEST_PROCESS_App]
|
2
|
@p_REQ_ID VARCHAR(15) = NULL,
|
3
|
@p_AUTH_STATUS VARCHAR(1) = NULL,
|
4
|
@p_CHECKER_ID varchar(15) = NULL,
|
5
|
@p_APPROVE_DT DATETIME = NULL,
|
6
|
@p_ROLE_LOGIN VARCHAR(50) = NULL,
|
7
|
@p_BRANCH_LOGIN VARCHAR(15),
|
8
|
@p_PROCESS_DESC NVARCHAR(MAX)
|
9
|
|
10
|
AS
|
11
|
--SET @p_APPROVE_DT= CAST(@p_APPROVE_DT AS DATE)
|
12
|
--Validation is here
|
13
|
DECLARE @ERRORSYS NVARCHAR(15) = ''
|
14
|
IF ( NOT EXISTS ( SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
|
15
|
SET @ERRORSYS = 'REQ-00002'
|
16
|
IF @ERRORSYS <> ''
|
17
|
BEGIN
|
18
|
ROLLBACK TRANSACTION
|
19
|
SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
|
20
|
RETURN '0'
|
21
|
END
|
22
|
-- LUCTV 06 - 05 - 2021 BO SUNG UY QUYEN KIEM NHIEM
|
23
|
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
|
24
|
INSERT INTO @TABLE_ROLE SELECT (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_CHECKER_ID)
|
25
|
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)
|
26
|
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
|
27
|
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
|
28
|
-- END
|
29
|
BEGIN TRANSACTION
|
30
|
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'))
|
31
|
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
|
32
|
BEGIN
|
33
|
ROLLBACK TRANSACTION
|
34
|
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
|
35
|
RETURN '-1'
|
36
|
END
|
37
|
--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
|
38
|
--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
|
39
|
|
40
|
DECLARE
|
41
|
@Result VARCHAR(5),
|
42
|
@PROCESS_CURR VARCHAR(10),
|
43
|
@STEP_CURR INT,
|
44
|
@STEP_NEXT INT,
|
45
|
@PROCESS_NEXT VARCHAR(10),
|
46
|
@ROLE_USER_NOTIFI VARCHAR(50),
|
47
|
@DEP_ID VARCHAR(15),
|
48
|
@IS_LEAF VARCHAR(1),
|
49
|
@NOTES NVARCHAR(500),
|
50
|
@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),
|
51
|
@IS_NEXT_CDT BIT,
|
52
|
@TOTAL_AMT DECIMAL(18,2),
|
53
|
@STEP_PARENT VARCHAR(20),
|
54
|
@NOTES_CDT VARCHAR(20),
|
55
|
@ROLE_CDT VARCHAR(20),
|
56
|
@DVDM_CDT VARCHAR(20),
|
57
|
@LIMIT_VALUE_CDT DECIMAL(18,2),
|
58
|
@DVDM_ID_TT VARCHAR(20),
|
59
|
@TOTAL_AMT_GD DECIMAL(18,2),
|
60
|
@BRANCH_CREATE VARCHAR(15),
|
61
|
@BRANCH_CREATE_TYPE VARCHAR(15),
|
62
|
@DEP_CREATE VARCHAR(15),
|
63
|
@BRANCH_PARENT VARCHAR(15)
|
64
|
DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20),@ROLE_ID VARCHAR(20),@DVDM_ID_CDT VARCHAR(20)
|
65
|
|
66
|
SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
|
67
|
|
68
|
SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
|
69
|
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)
|
70
|
|
71
|
DECLARE @DATA_DVDM TABLE
|
72
|
(
|
73
|
DVDM_ID VARCHAR(20),
|
74
|
TOTAL_AMT DECIMAL(12, 0),
|
75
|
IS_PTGD BIT
|
76
|
);
|
77
|
|
78
|
SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
|
79
|
DECLARE @DVDM_ID TABLE (
|
80
|
DVDM_ID VARCHAR(15)
|
81
|
)
|
82
|
DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500)
|
83
|
IF(@PROCESS_CURR LIKE '%_DC')
|
84
|
BEGIN
|
85
|
SELECT @ERROR=ERROR,
|
86
|
@EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
|
87
|
IF(@ERROR=1)
|
88
|
BEGIN
|
89
|
ROLLBACK TRANSACTION;
|
90
|
SELECT '-1' Result,
|
91
|
@EROOR_DES ErrorDesc
|
92
|
|
93
|
RETURN '0';
|
94
|
END
|
95
|
END
|
96
|
SELECT @ERROR=ERROR,
|
97
|
@EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDTT','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
|
98
|
IF(@ERROR=1)
|
99
|
BEGIN
|
100
|
ROLLBACK TRANSACTION;
|
101
|
SELECT '-1' Result,
|
102
|
@EROOR_DES ErrorDesc
|
103
|
|
104
|
RETURN '0';
|
105
|
END
|
106
|
INSERT INTO @DATA_DVDM
|
107
|
SELECT KHOI_ID,
|
108
|
SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
|
109
|
FROM dbo.PL_REQUEST_DOC_DT DT
|
110
|
LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
|
111
|
WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
|
112
|
GROUP BY KHOI_ID,DM.IS_PTGD;
|
113
|
SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
|
114
|
INSERT INTO @DVDM_ID
|
115
|
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
|
116
|
|
117
|
IF(NOT EXISTS (SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS WHERE STATUS='C' AND PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND (ROLE_USER=@p_ROLE_LOGIN OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_LOGIN) )AND ( DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR DVDM_ID ='' OR DVDM_ID IS NULL)))
|
118
|
BEGIN
|
119
|
SELECT '1' as Result , '' AS ROLE_NOTIFI, '' ErrorDesc
|
120
|
RETURN '0'
|
121
|
END
|
122
|
UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='P',NOTES=@NOTES+N' đã phê duyệt',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND
|
123
|
(ROLE_USER=@p_ROLE_LOGIN OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_LOGIN) OR ROLE_USER IN ( SELECT ISNULL(ROLE_AUTH,'') FROM @TABLE_ROLE))
|
124
|
AND ( DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR DVDM_ID ='' OR DVDM_ID IS NULL)
|
125
|
IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
|
126
|
BEGIN
|
127
|
UPDATE dbo.PL_REQUEST_DOC_DT SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE REQ_ID=@p_REQ_ID AND
|
128
|
( 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
|
129
|
@p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') )
|
130
|
END
|
131
|
IF(@PROCESS_CURR LIKE '%_DC')
|
132
|
BEGIN
|
133
|
UPDATE dbo.PL_REQUEST_TRANSFER SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT 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' ) )
|
134
|
END
|
135
|
|
136
|
INSERT INTO dbo.PL_PROCESS
|
137
|
(
|
138
|
REQ_ID,
|
139
|
PROCESS_ID,
|
140
|
CHECKER_ID,
|
141
|
APPROVE_DT,
|
142
|
PROCESS_DESC,NOTES
|
143
|
)
|
144
|
VALUES
|
145
|
( @p_REQ_ID, -- REQ_ID - varchar(15)
|
146
|
@PROCESS_CURR, -- PROCESS_ID - varchar(10)
|
147
|
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)
|
148
|
GETDATE(), -- APPROVE_DT - datetime
|
149
|
@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt' -- PROCESS_DESC - nvarchar(1000)
|
150
|
)
|
151
|
|
152
|
|
153
|
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
|
154
|
|
155
|
SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
|
156
|
|
157
|
|
158
|
SET @Result='1'
|
159
|
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'))
|
160
|
BEGIN
|
161
|
|
162
|
UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
|
163
|
UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
|
164
|
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)
|
165
|
|
166
|
IF(@IS_LEAF='Y')
|
167
|
BEGIN
|
168
|
EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID
|
169
|
EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
|
170
|
|
171
|
SET @Result='0'
|
172
|
END
|
173
|
END
|
174
|
IF @@Error <> 0 GOTO ABORT
|
175
|
|
176
|
COMMIT TRANSACTION
|
177
|
-- 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
|
178
|
SELECT '0' as Result , @ROLE_USER AS ROLE_NOTIFI, '' ErrorDesc
|
179
|
RETURN '0'
|
180
|
ABORT:
|
181
|
BEGIN
|
182
|
|
183
|
ROLLBACK TRANSACTION
|
184
|
SELECT '-1' as Result, '' ROLE_NOTIFI , ERROR_MESSAGE() ErrorDesc
|
185
|
RETURN '-1'
|
186
|
End
|
187
|
|
188
|
|
189
|
|
190
|
|
191
|
|
192
|
|