Project

General

Profile

2.2.PL_REQUEST_DOC_Appr.txt

Luc Tran Van, 10/18/2022 01:35 AM

 
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