Project

General

Profile

1.4 PL REQUEST PROCESS APPR.txt

Luc Tran Van, 11/28/2022 10:25 PM

 
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 VARCHAR(20) = NULL,
6
	@p_ROLE_LOGIN VARCHAR(50) = NULL,
7
	@p_BRANCH_LOGIN VARCHAR(15),
8
	@p_PROCESS_DESC NVARCHAR(MAX),
9
	@p_IS_AUTHORITY BIT = 0
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
-- KHAI BAO UY QUYEN DON VI DAU MOI
29
			DECLARE @AUTHOR_DVDM TABLE
30
		(
31
		ROLE_ID VARCHAR(100),
32
		BRANCH_ID VARCHAR(20),
33
		DEP_ID VARCHAR(20),
34
		DVDM_ID VARCHAR(20)
35
		)
36

    
37

    
38
	INSERT INTO @AUTHOR_DVDM
39
	(
40
	    ROLE_ID,
41
	    BRANCH_ID,
42
	    DEP_ID,
43
	    DVDM_ID
44
	)
45
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
46
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
47
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
48
	WHERE TU.TLNANME=@p_CHECKER_ID
49
	UNION ALL
50
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
51
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
52
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
53
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
54
	WHERE TU.TLNANME=@p_CHECKER_ID
55
	UNION ALL
56
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
57
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
58
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
59
	WHERE TU.TLNAME=@p_CHECKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
60
	UNION ALL
61
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
62
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
63
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
64
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
65
	WHERE TU.TLNAME=@p_CHECKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
66

    
67
-- END
68
BEGIN TRANSACTION
69
		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'))
70
		OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
71
		BEGIN
72
			ROLLBACK TRANSACTION
73
			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
74
			RETURN '-1'
75
		END
76
		IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID IN ('DVCM','TC','DVDC','KT')))
77
		BEGIN
78
			ROLLBACK TRANSACTION
79
			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 chờ các đơn vị phụ trách chuyên môn xử lý. Anh Chị Banh Lãnh Đạo chỉ phê duyệt khi tờ trình đang chờ Giám đốc khối / Phó tổng giám đốc/ Tổng giám đốc và Chủ Tịch HĐQT!' ErrorDesc
80
			RETURN '-1'
81
		END
82
	--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
83
	--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
84

    
85
	 DECLARE
86
	@Result VARCHAR(5),
87
	@PROCESS_CURR VARCHAR(10),
88
	@STEP_CURR INT,
89
	@STEP_NEXT INT,
90
	@PROCESS_NEXT VARCHAR(10),
91
	@ROLE_USER_NOTIFI VARCHAR(50),
92
	@DEP_ID VARCHAR(15),
93
	@IS_LEAF VARCHAR(1),
94
	@NOTES NVARCHAR(500),
95
	@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),
96
	@IS_NEXT_CDT BIT,
97
	@TOTAL_AMT DECIMAL(18,2),
98
	@STEP_PARENT VARCHAR(20),
99
	@NOTES_CDT VARCHAR(20),
100
	@ROLE_CDT VARCHAR(20),
101
	@DVDM_CDT VARCHAR(20),
102
	@LIMIT_VALUE_CDT DECIMAL(18,2),
103
	@DVDM_ID_TT VARCHAR(20),
104
	@TOTAL_AMT_GD DECIMAL(18,2),
105
	@BRANCH_CREATE VARCHAR(15),
106
	@BRANCH_CREATE_TYPE VARCHAR(15),
107
	@DEP_CREATE VARCHAR(15),
108
	@BRANCH_PARENT VARCHAR(15)
109
	DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20),@ROLE_ID VARCHAR(20),@DVDM_ID_CDT VARCHAR(20)
110

    
111
	SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
112

    
113
	SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
114
	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)
115

    
116
	DECLARE @DATA_DVDM TABLE
117
(
118
    DVDM_ID VARCHAR(20),
119
    TOTAL_AMT DECIMAL(12, 0),
120
	IS_PTGD BIT
121
);
122
		
123
		SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
124
	DECLARE @DVDM_ID TABLE (
125
		DVDM_ID VARCHAR(15)
126
	)
127
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
128
IF(@PROCESS_CURR LIKE '%_DC')
129
BEGIN
130
	SELECT @ERROR=ERROR,
131
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
132
		IF(@ERROR=1)
133
		BEGIN
134
		 ROLLBACK TRANSACTION;
135
		SELECT '-1'  Result,
136
           @EROOR_DES ErrorDesc
137
   
138
    RETURN '0';
139
	END
140
END
141
SELECT @ERROR=ERROR,
142
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDTT','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
143
		IF(@ERROR=1)
144
		BEGIN
145
		 ROLLBACK TRANSACTION;
146
		SELECT '-1'  Result,
147
           @EROOR_DES ErrorDesc
148
   
149
    RETURN '0';
150
END
151
	INSERT INTO @DATA_DVDM
152
	SELECT KHOI_ID,
153
		   SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
154
	FROM dbo.PL_REQUEST_DOC_DT DT
155
	LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
156
	WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
157
	GROUP BY KHOI_ID,DM.IS_PTGD;
158
	SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
159
	INSERT INTO @DVDM_ID
160
	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
161
	
162
	
163
	
164
	IF(NOT EXISTS (SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS WHERE STATUS='C' AND  PROCESS_ID=@PROCESS_CURR AND 
165
	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)))))
166
	BEGIN
167
		ROLLBACK TRANSACTION
168
		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
169
		RETURN '1'
170
	END		
171

    
172

    
173

    
174
	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
175
	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)))
176
	IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
177
	BEGIN
178
		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 
179
		( 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 
180
		@p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') )
181
	END
182
	IF(@PROCESS_CURR LIKE '%_DC')
183
	BEGIN
184
		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' ) )
185
	END
186
	
187

    
188
	INSERT INTO dbo.PL_PROCESS
189
			(
190
				REQ_ID,
191
				PROCESS_ID,
192
				CHECKER_ID,
193
				APPROVE_DT,
194
				PROCESS_DESC,NOTES
195
			)
196
			VALUES
197
			(   @p_REQ_ID,        -- REQ_ID - varchar(15)
198
				@PROCESS_CURR,        -- PROCESS_ID - varchar(10)
199
				@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
200
				GETDATE(), -- APPROVE_DT - datetime
201
				@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
202
			)	
203
	
204

    
205
	SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
206

    
207
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
208

    
209
			
210
	SET @Result='1'
211
	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'))
212
	BEGIN	
213
			--- LUCTV 18.10.22 KIEM TRA NEU WORKFLOW CO PTGD KHOI HO TRO THI REMOVE KHOI QUY TRINH
214
			IF((SELECT COUNT(*) FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT')=1)
215
			BEGIN
216
				IF(EXISTS(SELECT *  FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'))
217
				BEGIN
218
					DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'
219
					UPDATE PL_REQUEST_PROCESS SET PARENT_PROCESS_ID =@PROCESS_CURR WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID ='PTGDK_TT'
220
					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)
221
				END
222
			END
223
			ELSE
224
			BEGIN
225
				IF((SELECT COUNT(*) FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT')=1)
226
			BEGIN
227
				IF(EXISTS(SELECT *  FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'))
228
				BEGIN
229
					DELETE FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='PTGDK_TT' AND DVDM_ID ='DM0000000000015'
230
					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)
231
				END
232
			END
233
			END
234
			--- END LUCTV 18.10.22
235
			UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
236
			UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
237
				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)
238
			
239
			IF (@p_ROLE_LOGIN = 'HDQT') UPDATE dbo.PL_REQUEST_DOC SET IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID = @p_REQ_ID
240
			IF (@p_ROLE_LOGIN = 'TGD') UPDATE dbo.PL_REQUEST_DOC SET TGD_NOTES = @p_PROCESS_DESC WHERE REQ_ID = @p_REQ_ID
241

    
242
			IF(@IS_LEAF='Y')
243
			BEGIN
244
					print 'haha'
245
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
246
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
247

    
248
				SET @Result='0'
249
			END
250
	END
251
	IF @@Error <> 0 GOTO ABORT
252
			
253
COMMIT TRANSACTION
254
-- 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
255
SELECT '0' as Result , @ROLE_USER AS  ROLE_NOTIFI, '' ErrorDesc
256
RETURN '0'
257
ABORT:
258
BEGIN
259
	
260
		ROLLBACK TRANSACTION
261
		SELECT '-1' as Result, '' ROLE_NOTIFI , ERROR_MESSAGE() ErrorDesc
262
		RETURN '-1'
263
End