Project

General

Profile

2.0 CONFIG PHE DUYET UY QUYEN KIEM NHIEM TO TRINH - CAP LANH DAO.txt

Luc Tran Van, 05/06/2021 10:13 AM

 
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