Project

General

Profile

PL_REQ_PROCESS_CHILD_App.txt

Luc Tran Van, 01/05/2023 10:51 AM

 
1
ALTER PROCEDURE dbo.PL_REQ_PROCESS_CHILD_App
2
@p_REQ_ID VARCHAR(20),
3
@p_PROCESS_ID VARCHAR(20),
4
@p_TLNAME VARCHAR(20),
5
@p_MAKER_ID VARCHAR(20),
6
@p_TYPE_JOB VARCHAR(20),
7
@p_PROCESS_DES NVARCHAR(MAX),
8
@p_REF_ID INT,
9
@p_IS_AUTHORITY bit,
10
@p_ListTransfer XML
11
AS
12
BEGIN TRANSACTION
13
DECLARE @IS_AUTH_HDQT_NOTES NVARCHAR(6), @IS_AUTHORITY_HDQT VARCHAR(1),@IS_NEXT_HDQT BIT
14
SET @IS_AUTHORITY_HDQT='N'
15
IF(RIGHT(@p_PROCESS_DES,7)=N'KTMHĐQT')
16
BEGIN
17
	SET @IS_AUTHORITY_HDQT='Y'
18
	SET @IS_AUTH_HDQT_NOTES=N''
19
	SET @p_PROCESS_DES = LEFT(@p_PROCESS_DES, LEN(@p_PROCESS_DES)-7)
20
END
21
IF(RIGHT(@p_PROCESS_DES,6)=N'TMHĐQT')
22
BEGIN
23
	SET @IS_AUTHORITY_HDQT='Y'
24
	SET @IS_AUTH_HDQT_NOTES=N'TMHĐQT'
25
	SET @p_PROCESS_DES = LEFT(@p_PROCESS_DES, LEN(@p_PROCESS_DES)-6)
26
END
27
--- LUCTV 20102022: NEU TO TRINH DIEU CHUYEN <=10 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
28
DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0)
29
SET @TOTAL_AMT_TRANSFER =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID)
30
---END LUCTV
31
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
32
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'))
33
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
34
BEGIN
35
	ROLLBACK TRANSACTION
36
	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
37
	RETURN -1
38
END
39
--- LUCTV 13042021 KIEM TRA NEU LA CAP TKTGD : CO THE DUYET BAT CU LUC NAO, KO CAN PHAI THONG QUA DIEU PHOI
40
DECLARE @ROLE_USER_VP VARCHAR(15)
41
-- KHAI BAO THEM ROLE NHAN UY QUYEN
42
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
43
SET @ROLE_USER_VP = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_MAKER_ID)
44
INSERT INTO @TABLE_ROLE SELECT @ROLE_USER_VP
45
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_USER_VP AND 
46
(CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL))
47
--- LUCTV 28.11.2022 KIEM TRA NEU TO TRINH DANG CHO CAC CAP BAN LANH DAO SE KHONG DUOC DUYET
48
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('GDK_TT') AND REQ_ID =@p_REQ_ID))
49
BEGIN
50
	ROLLBACK TRANSACTION
51
	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 đợi Giám đốc khối phê duyệt. Vui lòng thao tác tại màn hình Phê duyệt tờ trình chủ trương!' ErrorDesc
52
	RETURN '-1'
53
END
54
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('PTGDK_TT') AND REQ_ID =@p_REQ_ID))
55
BEGIN
56
	ROLLBACK TRANSACTION
57
	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 đợi Phó tổng giám đốc khối phê duyệt. Vui lòng thao tác tại màn hình Phê duyệt tờ trình chủ trương!' ErrorDesc
58
	RETURN '-1'
59
END
60
--- END LUCTV 28.11.2022
61
 --KIEM TRA NEU DANG CHO TKTGD
62
IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TKTGD' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1))
63
BEGIN
64
	IF(@ROLE_USER_VP IN (@ROLE_USER_VP))
65
	BEGIN
66
		SET @p_REF_ID =(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TKTGD' AND STATUS ='C')
67
		IF @p_REF_ID IS NULL OR @p_REF_ID =''
68
		BEGIN
69
			ROLLBACK TRANSACTION  
70
			SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của Văn Phòng Thư Ký TGĐ. Vui lòng đợi quy trình!' ErrorDesc  
71
			RETURN -1 
72
		END
73
		ELSE
74
		BEGIN
75
			UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Thư Ký TGĐ đã duyệt' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
76
			-- LAY REF ID CUA TGD
77
			SET @p_REF_ID = (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TGD')
78
			UPDATE PL_REQUEST_PROCESS SET STATUS ='C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
79
			UPDATE PL_REQUEST_DOC SET PROCESS_ID ='TGD' WHERE REQ_ID =@p_REQ_ID
80
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_ID
81
			--IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE ISNULL(TK_TGD_NOTES,'') ='' AND REQ_ID =@p_REQ_ID))
82
			--BEGIN
83
			--	UPDATE PL_REQUEST_DOC SET TK_TGD_NOTES =@p_PROCESS_DES WHERE REQ_ID =@p_REQ_ID
84
			--END
85
			UPDATE PL_REQUEST_DOC SET TK_TGD_NOTES =@p_PROCESS_DES WHERE REQ_ID =@p_REQ_ID
86
			--- INSERT VAO LOG
87
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,
88
			N'Thư Ký TGD đã phê duyệt')
89
			------
90
			COMMIT TRANSACTION
91
			SELECT 0 as Result, 
92
				N'Thư ký TGĐ đã phê duyệt thành công' ErrorDesc
93
			RETURN 0
94
		END
95
	END
96
END
97
ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TKHDQT' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1))
98
BEGIN
99
	IF(@ROLE_USER_VP IN (@ROLE_USER_VP))
100
	BEGIN
101
		SET @p_REF_ID =(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TKHDQT' AND STATUS ='C')
102
		IF @p_REF_ID IS NULL OR @p_REF_ID =''
103
		BEGIN
104
			ROLLBACK TRANSACTION  
105
			SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của Văn Phòng Thư Ký HĐQT. Vui lòng đợi quy trình!' ErrorDesc  
106
			RETURN -1 
107
		END
108
		ELSE
109
		BEGIN
110
			UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Văn phòng HĐQT đã duyệt' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
111
			-- LAY REF ID CUA TGD
112
			SET @p_REF_ID = (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='HDQT')
113
			UPDATE PL_REQUEST_PROCESS SET STATUS ='C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
114
			UPDATE PL_REQUEST_DOC SET PROCESS_ID ='HDQT' WHERE REQ_ID =@p_REQ_ID
115
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_ID
116
			IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE ISNULL(TK_HDQT_NOTES,'') ='' AND REQ_ID =@p_REQ_ID))
117
			BEGIN
118
				UPDATE PL_REQUEST_DOC SET TK_HDQT_NOTES =@p_PROCESS_DES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES WHERE REQ_ID =@p_REQ_ID
119
			END
120
			UPDATE PL_REQUEST_DOC SET  OTHER_NOTES =@IS_AUTH_HDQT_NOTES, IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID =@p_REQ_ID
121
			--- INSERT VAO LOG
122
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) 
123
			VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Văn phòng HĐQT đã phê duyệt')
124
			------
125
			COMMIT TRANSACTION
126
			SELECT 0 as Result, N'Văn phòng HĐQT đã phê duyệt thành công' ErrorDesc
127
			RETURN 0
128
		END
129
	END
130
END
131
ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) IN ('DVCM','DVDM_DC') AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C'))
132
BEGIN
133
	IF (NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID IN ('DVCM','DVDM_DC') AND STATUS ='C' AND ID = @p_REF_ID))
134
	BEGIN
135
		ROLLBACK TRANSACTION  
136
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của đơn vị chuyên môn. Vui lòng đợi quy trình!' ErrorDesc  
137
		RETURN -1 
138
	END
139
	ELSE
140
	BEGIN
141
		---------BAODNQ 23/6/2022 : Update trạng thái duyệt khi trưởng DVCM duyệt-------------
142
		DECLARE @p_BRANCH_LOGIN_ID VARCHAR(15), @p_DEP_LOGIN_ID VARCHAR(15)
143
		SET @p_BRANCH_LOGIN_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
144
		SET @p_DEP_LOGIN_ID = (SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
145
		
146
		UPDATE dbo.PL_REQUEST_COSTCENTER SET 
147
      NOTES = @p_PROCESS_DES,
148
			AUTH_STATUS='A',
149
			APPROVE_DT=GETDATE(),
150
			CHECKER_ID=@p_MAKER_ID
151
		WHERE REQ_ID=@p_REQ_ID 
152
		AND COST_ID IN(
153
			SELECT PC.DVDM_ID FROM PL_COSTCENTER PC
154
			LEFT JOIN PL_COSTCENTER_DT PCD ON PC.COST_ID = PCD.COST_ID
155
			WHERE PCD.BRANCH_ID = @p_BRANCH_LOGIN_ID 
156
			AND (PCD.DEP_ID = @p_DEP_LOGIN_ID OR PCD.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME = @p_MAKER_ID))
157
		) 
158
		-----------------------END BAODNQ-------------
159
		UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Đơn vị chuyên môn đã xác nhận' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID AND PROCESS_ID ='DVCM'
160
		UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Đơn vị đầu mối quản lý ngân sách cho - nhận đã xác nhận' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID AND PROCESS_ID ='DVDM_DC'
161

    
162
		IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVCM')
163
					AND (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='DVCM')))
164
		BEGIN
165
			
166
			UPDATE dbo.PL_REQUEST_PROCESS SET STATUS = 'C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVCM'
167
			UPDATE PL_REQUEST_DOC SET PROCESS_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVCM') WHERE REQ_ID =@p_REQ_ID
168
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) 
169
			VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Đơn vị chuyên môn đã phê duyệt')
170
			COMMIT TRANSACTION
171
			SELECT 0 as Result, N'Trưởng đơn vị chuyên môn đã phê duyệt thành công KKK' ErrorDesc
172
			RETURN 0
173
		END
174
		ELSE IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVDM_DC')
175
			AND (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='DVDM_DC')))
176
		BEGIN
177
			UPDATE dbo.PL_REQUEST_PROCESS SET STATUS = 'C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVDM_DC'
178
			UPDATE PL_REQUEST_DOC SET PROCESS_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVDM_DC') WHERE REQ_ID =@p_REQ_ID
179
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) 
180
			VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Đơn vị đầu mối quản lý ngân sách cho - nhận đã phê duyệt')
181
			COMMIT TRANSACTION
182
			SELECT 0 as Result, N'Trưởng đơn vị đầu mối quản lý ngân sách đã phê duyệt thành công' ErrorDesc
183
			RETURN 0
184
		END
185
	END
186
END
187
ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TC'
188
AND EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS = 'C' AND SUB_PROCESS_ID IS NOT NULL AND SUB_PROCESS_ID LIKE '%DVDC%'))
189
BEGIN
190
  IF (EXISTS(SELECT ID FROM PL_REQUEST_PROCESS_CHILD prpc WHERE prpc.REQ_ID = @p_REQ_ID AND prpc.PROCESS_ID = @p_REF_ID
191
    AND prpc.STATUS_JOB = 'C' AND (prpc.TYPE_JOB = 'XL' OR prpc.TYPE_JOB = 'KS')))
192
  BEGIN
193
		ROLLBACK TRANSACTION  
194
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
195
		RETURN -1
196
  END
197
  EXEC PL_REQUEST_DOC_PROCESS_Upd @p_REQ_ID = @p_REQ_ID,@p_MAKER_ID = @p_MAKER_ID,@p_BRANCH_ID = '',@p_TC_NOTES = N'',@p_KT_NOTES = N'',
198
  @p_TK_TGD_NOTES = N'',@p_TK_HDQT_NOTES = N'',@p_ORTHER_NOTES = N'',@p_ListCostCenter = NULL,@p_ListTransfer = @p_ListTransfer,@p_IS_AUTHORITY = 0
199
END
200
ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='DVDC' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1))
201
BEGIN
202
  IF (EXISTS(SELECT ID FROM PL_REQUEST_PROCESS_CHILD prpc WHERE prpc.REQ_ID = @p_REQ_ID AND prpc.PROCESS_ID = @p_REF_ID
203
    AND prpc.STATUS_JOB = 'C' AND (prpc.TYPE_JOB = 'XL'))) --- LUCTV 30.12.2022 TAM THOI KHONG XET TYPE JOB KS
204
  BEGIN
205
		ROLLBACK TRANSACTION  
206
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
207
		RETURN -1
208
  END
209
  EXEC PL_REQUEST_DOC_PROCESS_Upd @p_REQ_ID = @p_REQ_ID,@p_MAKER_ID = @p_MAKER_ID,@p_BRANCH_ID = '',@p_TC_NOTES = N'',@p_KT_NOTES = N'',
210
  @p_TK_TGD_NOTES = N'',@p_TK_HDQT_NOTES = N'',@p_ORTHER_NOTES = N'',@p_ListCostCenter = NULL,@p_ListTransfer = @p_ListTransfer,@p_IS_AUTHORITY = 0
211
END
212
 --END CODE LUCTV 13 04 2021
213

    
214
-- VALIDATE
215
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS  WHERE REQ_ID=@p_REQ_ID AND IS_HAS_CHILD=1 AND STATUS='C' AND PROCESS_ID NOT IN ('TKTGD','TKHDQT','DVCM','DVDM_DC','TC','DVDC')))
216
BEGIN
217
	IF(EXISTS(
218
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
219
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
220
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID))
221
	BEGIN
222
		ROLLBACK TRANSACTION  
223
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
224
		RETURN -1
225
	END
226

    
227
	IF(NOT EXISTS(
228
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
229
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
230
	WHERE  (PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID)
231
    OR (PR.REQ_ID=@p_REQ_ID AND PR.PROCESS_ID='TC' AND (PR.SUB_PROCESS_ID IS NULL OR PR.SUB_PROCESS_ID NOT LIKE '%DVDC%') AND PRC.PROCESS_ID =@p_REF_ID)))
232
	BEGIN
233
		ROLLBACK TRANSACTION  
234
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng thực hiện điều phối hoặc đợi viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
235
		RETURN -1 
236
	END
237
END
238
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
239
SELECT @ERROR=ERROR,
240
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD')
241
IF(@ERROR=1)
242
BEGIN
243
	 ROLLBACK TRANSACTION;
244
    SELECT -1  Result,
245
           @EROOR_DES ErrorDesc
246
   
247
    RETURN 0;
248
END
249

    
250
DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@STEP_PARENT VARCHAR(20)
251
DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500),
252
				@PROCESS_CURR VARCHAR(10),
253
				@STEP_CURR INT,
254
				@STEP_NEXT VARCHAR(20),
255
				@PROCESS_NEXT VARCHAR(10),
256
				@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
257

    
258
SELECT @BRANCH_ID=  TLSUBBRID,@DEP_ID=SECUR_CODE ,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID
259
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
260

    
261

    
262
		DECLARE
263
		@COST_ID_TABLE TABLE (
264
			COST_ID VARCHAR(15)
265
		)
266

    
267
		DECLARE @DVDM_ID_TABLE TABLE (
268
			DVDM_ID VARCHAR(15)
269
		)
270

    
271
		DECLARE @AUTHOR_DVDM TABLE
272
		(
273
		ROLE_ID VARCHAR(100),
274
		BRANCH_ID VARCHAR(20),
275
		DEP_ID VARCHAR(20),
276
		DVDM_ID VARCHAR(20)
277
		)
278

    
279

    
280
	INSERT INTO @AUTHOR_DVDM
281
	(
282
	    ROLE_ID,
283
	    BRANCH_ID,
284
	    DEP_ID,
285
	    DVDM_ID
286
	)
287
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
288
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
289
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
290
	WHERE TU.TLNANME=@p_MAKER_ID
291
	UNION ALL
292
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
293
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
294
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
295
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
296
	WHERE TU.TLNANME=@p_MAKER_ID
297
	UNION ALL
298
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
299
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
300
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
301
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
302
	UNION ALL
303
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
304
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
305
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
306
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
307
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
308
		INSERT INTO @COST_ID_TABLE
309
		SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
310

    
311
		INSERT INTO @DVDM_ID_TABLE
312
		SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID
313

    
314
		
315
		DECLARE @TYPE_JOB_CR VARCHAR(20)
316

    
317

    
318
		SET @TYPE_JOB_CR= (SELECT TOP 1 TYPE_JOB  FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB='C' AND TLNAME = @p_TLNAME)
319
    IF (ISNULL(@TYPE_JOB_CR,'') = '')
320
    BEGIN
321
    	ROLLBACK TRANSACTION
322
    	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' vừa được bạn phê duyệt xong. Vui lòng đợi cấp phê duyệt tiếp theo!' ErrorDesc
323
    	RETURN '-1'
324
    END
325
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
326
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
327
		--AND TLNAME=@p_TLNAME
328
		AND TYPE_JOB=@TYPE_JOB_CR
329
		SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@TYPE_JOB_CR)
330
		SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
331
			
332
		INSERT INTO dbo.PL_PROCESS
333
				(
334
					REQ_ID,
335
					PROCESS_ID,
336
					CHECKER_ID,
337
					APPROVE_DT,
338
					PROCESS_DESC,NOTES
339
				)
340
				VALUES
341
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
342
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
343
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
344
					GETDATE() , -- APPROVE_DT - datetime
345
					@p_PROCESS_DES ,
346
					ISNULL(@TYPE_JOB_NAME,N'Trưởng đơn vị chuyên môn')+ N' đã phê duyệt xong'       -- PROCESS_DESC - nvarchar(1000)
347
				)
348
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
349
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
350
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
351
		--AND TLNAME=@p_TLNAME 
352
		AND TYPE_JOB=@TYPE_JOB_CR
353
		ORDER BY LEVEL_JOB DESC),0)                  
354

    
355
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
356
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
357

    
358
    -- UPDATE STATUS, CHECKER FOR SUB_PROCESS
359
    IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS prp WHERE prp.REQ_ID = @p_REQ_ID AND prp.STATUS = 'C' AND prp.ID = @p_REF_ID AND prp.PROCESS_ID = 'DVDC' AND prp.SUB_PROCESS_ID LIKE '%DVCM%'))
360
    BEGIN
361
      UPDATE A SET A.AUTH_STATUS = 'A', CHECKER_ID = @p_MAKER_ID, A.APPROVE_DT = GETDATE()
362
      FROM PL_REQUEST_COSTCENTER A
363
      LEFT JOIN PL_COSTCENTER pc ON A.COST_ID = pc.DVDM_ID
364
      LEFT JOIN PL_COSTCENTER_DT pcd1 ON pc.COST_ID = pcd1.COST_ID
365
      LEFT JOIN PL_REQUEST_PROCESS prp ON pcd1.BRANCH_ID = prp.BRANCH_ID AND pcd1.DEP_ID = prp.DEP_ID
366
      WHERE A.REQ_ID = @p_REQ_ID AND prp.ID = @p_REF_ID
367
    END
368
    IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS prp WHERE prp.REQ_ID = @p_REQ_ID AND prp.STATUS = 'C' AND prp.ID = @p_REF_ID AND prp.PROCESS_ID = 'TC' AND prp.SUB_PROCESS_ID LIKE '%DVCM%'))
369
    BEGIN
370
      UPDATE A SET A.AUTH_STATUS = 'A', CHECKER_ID = @p_MAKER_ID, A.APPROVE_DT = GETDATE()
371
      FROM PL_REQUEST_COSTCENTER A
372
      LEFT JOIN PL_COSTCENTER pc ON A.COST_ID = pc.DVDM_ID
373
      LEFT JOIN PL_COSTCENTER_DT pcd1 ON pc.COST_ID = pcd1.COST_ID
374
      WHERE A.REQ_ID = @p_REQ_ID AND pcd1.BRANCH_ID = 'DV0001' AND pcd1.DEP_ID = 'DEP000000000023'
375
    END
376
    IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS prp WHERE prp.REQ_ID = @p_REQ_ID AND prp.STATUS = 'C' AND prp.ID = @p_REF_ID AND prp.PROCESS_ID = 'KT' AND prp.SUB_PROCESS_ID LIKE '%DVCM%'))
377
    BEGIN
378
      UPDATE A SET A.AUTH_STATUS = 'A', CHECKER_ID = @p_MAKER_ID, A.APPROVE_DT = GETDATE()
379
      FROM PL_REQUEST_COSTCENTER A
380
      WHERE A.REQ_ID = @p_REQ_ID AND A.DVMD_ID = 'DM0000000000006'
381
    END
382
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
383
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
384
		BEGIN
385
				SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
386
				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)
387
				IF(@PROCESS_CURR='TC' OR (@PROCESS_CURR ='DVDC' AND @p_TLNAME IN (SELECT TLNANME FROM TL_USER WHERE (DEP_ID ='DEP000000000023' OR SECUR_CODE ='DEP000000000023'))))
388
				BEGIN
389
						SELECT @ERROR=ERROR,
390
						   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
391
					IF(@ERROR=1)
392
					BEGIN
393
						 ROLLBACK TRANSACTION;
394
						SELECT -1  Result,
395
							   @EROOR_DES ErrorDesc
396
   
397
						RETURN -1;
398
					END
399
					---Duyệt TTCT
400

    
401
					DECLARE @LIMTT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID VARCHAR(20),@TOTAL_TRANSFER_CE DECIMAL(18,2),@TOTAL_TRANSFER_OE DECIMAL(18,2)
402
					-- BO SUNG QUAN LY GIAM DOC KHOI /PTGD KHOI QUAN LY NGAN SACH CHO - NHAN LUCTV 20.10.2022
403
					--	DECLARE @KHOI_ID_TF VARCHAR(20), @KHOI_ID_TO VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@IS_GDK BIT,@IS_PTGD BIT
404
					--	DECLARE @DATA_KHOI TABLE (  
405
					--	KHOI_ID VARCHAR(20),  
406
					--	TOTAL_AMT DECIMAL(18,2),  
407
					--	IS_NEXT BIT,  
408
					--	IS_GDK BIT,  
409
					--	IS_PTGD BIT  
410
					--	)  
411
					--	INSERT INTO @DATA_KHOI  
412
					--	(  
413
					--	KHOI_ID,  
414
					--	TOTAL_AMT,  
415
					--	IS_NEXT,  
416
					--	IS_GDK,  
417
					--	IS_PTGD  
418
					--	)  
419
					--	SELECT FR_KHOI_ID,SUM(TOTAL_AMT),0,CD.IS_GDK,CD.IS_PTGD FROM dbo.PL_REQUEST_TRANSFER PT  
420
					--	LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PT.FR_KHOI_ID  
421
 
422
					--	WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID <>'' AND FR_KHOI_ID IS NOT NULL GROUP BY FR_KHOI_ID,CD.IS_GDK,CD.IS_PTGD  
423
					--	SET @STEP_PARENT='TC'  
424
 
425
					--	SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')  
426
 
427
					--	DECLARE lstDATA CURSOR FOR  
428
					--	SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI  
429
 
430
					--	OPEN lstDATA  
431
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
432
					--	WHILE @@FETCH_STATUS=0  
433
					--	BEGIN  
434
					--	SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF)  
435
 
436
					--	IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID_TF) AND @IS_GDK=1)  
437
					--	BEGIN  
438
					--	IF((@KHOI_ID_TF ='DM0000000000015' AND @TOTAL_AMT_TRANSFER  >10000000) OR @KHOI_ID_TF <> 'DM0000000000015')
439
					--	BEGIN
440
					--	INSERT INTO dbo.PL_REQUEST_PROCESS  
441
					--	(  
442
					--	REQ_ID,  
443
					--	PROCESS_ID,  
444
					--	STATUS,  
445
					--	ROLE_USER,  
446
					--	BRANCH_ID,  
447
					--	CHECKER_ID,  
448
					--	APPROVE_DT,  
449
					--	PARENT_PROCESS_ID,  
450
					--	IS_LEAF,  
451
					--	COST_ID,  
452
					--	DVDM_ID,  
453
					--	NOTES,IS_HAS_CHILD  
454
					--	)  
455
					--	VALUES  
456
					--	( @p_REQ_ID, -- REQ_ID - varchar(15)  
457
					--	'GDK_TT', -- PROCESS_ID - varchar(10)  
458
					--	'U', -- STATUS - varchar(5)  
459
					--	'GDK', -- ROLE_USER - varchar(50)  
460
					--	'', -- BRANCH_ID - varchar(15)  
461
					--	'', -- CHECKER_ID - varchar(15)  
462
					--	NULL, -- APPROVE_DT - datetime  
463
					--	@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
464
					--	'N', -- IS_LEAF - varchar(1)  
465
					--	'', -- COST_ID - varchar(15)  
466
					--	@KHOI_ID_TF ,  
467
					--	N'Chờ giám đốc khối quản lý ngân sách điều chuyển xác nhận',  
468
					--	0 -- DVDM_ID - varchar(15)  
469
					--	)  
470
					--	END
471
					--	END  
472
					--	--IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)  
473
					--	IF(@TOTAL_TRANSFER > @LIMTT_MAX )  
474
					--	UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF  
475
					--	IF(@IS_GDK=0)  
476
					--	UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF  
477
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
478
					--	END  
479
					--	CLOSE lstDATA  
480
					--	DEALLOCATE lstDATA  
481

    
482
					--	IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))  
483
					--	SET @STEP_PARENT='GDK_TT'  
484
					--	IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1)  
485
					--	OR EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID<>TO_KHOI_ID))  
486
					--	BEGIN  
487
					--	DECLARE lstDATA CURSOR FOR  
488
					--	SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI WHERE IS_NEXT=1  
489
 
490
					--	OPEN lstDATA  
491
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
492
					--	WHILE @@FETCH_STATUS=0  
493
					--	BEGIN  
494
					--	SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='PTGD' AND DVDM_ID=@KHOI_ID_TF)  
495
 
496
					--	IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF) AND @IS_PTGD=1)  
497
					--	BEGIN  
498
					--	INSERT INTO dbo.PL_REQUEST_PROCESS  
499
					--	(  
500
					--	REQ_ID,  
501
					--	PROCESS_ID,  
502
					--	STATUS,  
503
					--	ROLE_USER,  
504
					--	BRANCH_ID,  
505
					--	CHECKER_ID,  
506
					--	APPROVE_DT,  
507
					--	PARENT_PROCESS_ID,  
508
					--	IS_LEAF,  
509
					--	COST_ID,  
510
					--	DVDM_ID,  
511
					--	NOTES,IS_HAS_CHILD  
512
					--	)  
513
					--	VALUES  
514
					--	( @p_REQ_ID, -- REQ_ID - varchar(15)  
515
					--	'PTGDK_TT', -- PROCESS_ID - varchar(10)  
516
					--	'U', -- STATUS - varchar(5)  
517
					--	'PTGD', -- ROLE_USER - varchar(50)  
518
					--	'', -- BRANCH_ID - varchar(15)  
519
					--	'', -- CHECKER_ID - varchar(15)  
520
					--	NULL, -- APPROVE_DT - datetime  
521
					--	@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
522
					--	'N', -- IS_LEAF - varchar(1)  
523
					--	'', -- COST_ID - varchar(15)  
524
					--	@KHOI_ID_TF ,  
525
					--	N'Chờ Phó tổng giám đốc khối xác nhận',  
526
					--	0 -- DVDM_ID - varchar(15)  
527
					--	)  
528
					--	END  
529
					--	UPDATE @DATA_KHOI SET IS_NEXT=0 
530
					--	IF(@IS_GDK=0)  
531
					--	UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF  
532
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
533
					--	END  
534
					--	CLOSE lstDATA  
535
					--	DEALLOCATE lstDATA  
536
					--	END
537
					------- END LUCTV 20.10.2022
538
					SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='LIMIT_DCNS')
539
					SET @TOTAL_TRANSFER_CE=(SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_TRANSFER A LEFT JOIN CM_GOODS B ON A.FR_GOOD_ID = B.GD_ID WHERE A.REQ_DOC_ID=@p_REQ_ID AND B.GD_CODE LIKE '%CE%')
540
					SET @TOTAL_TRANSFER_OE=(SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_TRANSFER A LEFT JOIN CM_GOODS B ON A.FR_GOOD_ID = B.GD_ID WHERE A.REQ_DOC_ID=@p_REQ_ID AND B.GD_CODE LIKE '%OE%')
541
					IF(@TOTAL_TRANSFER_CE > 200000000 OR @TOTAL_TRANSFER_OE > 100000000)
542
					BEGIN
543
					SET @STEP_PARENT='TC'
544
					SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='LIMIT_DCNS')
545
					SET @KHOI_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='LIMIT_DCNS')
546
					IF @KHOI_ID IS NULL OR @KHOI_ID =''
547
						SET @KHOI_ID ='DM0000000000017'
548
					IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID))
549
					BEGIN
550
						INSERT INTO dbo.PL_REQUEST_PROCESS
551
						(
552
							REQ_ID,
553
							PROCESS_ID,
554
							STATUS,
555
							ROLE_USER,
556
							BRANCH_ID,
557
							CHECKER_ID,
558
							APPROVE_DT,
559
							PARENT_PROCESS_ID,
560
							IS_LEAF,
561
							COST_ID,
562
							DVDM_ID,
563
							NOTES,IS_HAS_CHILD
564
						)
565
						VALUES
566
						(   @p_REQ_ID,        -- REQ_ID - varchar(15)
567
							'GDK_TT',        -- PROCESS_ID - varchar(10)
568
							'U',        -- STATUS - varchar(5)
569
							'GDK',        -- ROLE_USER - varchar(50)
570
							'',        -- BRANCH_ID - varchar(15)
571
							'',        -- CHECKER_ID - varchar(15)
572
							NULL, -- APPROVE_DT - datetime
573
							@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
574
							'N',        -- IS_LEAF - varchar(1)
575
							'',        -- COST_ID - varchar(15)
576
							@KHOI_ID ,
577
							N'Chờ giám đốc khối Tài Chính xác nhận',
578
							0        -- DVDM_ID - varchar(15)
579
							)
580
					--LUCTV 20211028 FIX LOI CAP NHAT NHUNG STEP CU KHAC GDK_TT DANG CO CHA LA TAI CHINH VE GDK_TT
581
					UPDATE PL_REQUEST_PROCESS SET PARENT_PROCESS_ID ='GDK_TT' WHERE PROCESS_ID <> 'GDK_TT' AND PARENT_PROCESS_ID ='TC' AND REQ_ID =@p_REQ_ID
582
					--END EDIT
583
					END
584
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
585
					SET @STEP_PARENT='GDK_TT'
586

    
587
					IF(@TOTAL_TRANSFER_CE > 500000000 OR @TOTAL_TRANSFER_OE > 300000000)
588
					BEGIN
589
											
590
							IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
591
							BEGIN
592
							-- LUCTV : CHEN THEM BUOC THU KI TGD
593
							INSERT INTO dbo.PL_REQUEST_PROCESS
594
							(
595
							REQ_ID,
596
							PROCESS_ID,
597
							STATUS,
598
							ROLE_USER,
599
							BRANCH_ID,
600
							CHECKER_ID,
601
							APPROVE_DT,
602
							PARENT_PROCESS_ID,
603
							IS_LEAF,
604
							COST_ID,
605
							DVDM_ID,
606
							NOTES,
607
							IS_HAS_CHILD
608
							)
609
							VALUES
610
							(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
611
							'TKTGD',                               -- PROCESS_ID - varchar(10)
612
							'U',                                 -- STATUS - varchar(5)
613
							'TKTGD',                               -- ROLE_USER - varchar(50)
614
							'',                                  -- BRANCH_ID - varchar(15)
615
							'',                                  -- CHECKER_ID - varchar(15)
616
							NULL,                                -- APPROVE_DT - datetime
617
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
618
							'N',                                 -- IS_LEAF - varchar(1)
619
							'',                                  -- COST_ID - varchar(15)
620
							'', N'Chờ Văn Phòng Thư Ký Tổng Giám Đốc xác nhận', 1 -- DVDM_ID - varchar(15)
621
							);
622
							SET @STEP_PARENT ='TKTGD'
623
							--END
624
							---------
625
							INSERT INTO dbo.PL_REQUEST_PROCESS
626
							(
627
							REQ_ID,
628
							PROCESS_ID,
629
							STATUS,
630
							ROLE_USER,
631
							BRANCH_ID,
632
							CHECKER_ID,
633
							APPROVE_DT,
634
							PARENT_PROCESS_ID,
635
							IS_LEAF,
636
							COST_ID,
637
							DVDM_ID,
638
							NOTES,
639
							IS_HAS_CHILD
640
							)
641
							VALUES
642
							(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
643
							'TGD',                               -- PROCESS_ID - varchar(10)
644
							'U',                                 -- STATUS - varchar(5)
645
							'TGD',                               -- ROLE_USER - varchar(50)
646
							'',                                  -- BRANCH_ID - varchar(15)
647
							'',                                  -- CHECKER_ID - varchar(15)
648
							NULL,                                -- APPROVE_DT - datetime
649
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
650
							--'TKTGD',
651
							'N',                                 -- IS_LEAF - varchar(1)
652
							'',                                  -- COST_ID - varchar(15)
653
							'', N'Chờ tổng giám phê duyệt điều chuyển', 0 -- DVDM_ID - varchar(15)
654
							);
655
							END
656

    
657
						SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND LIMIT_TYPE='LIMIT_DCNS')
658
						--- LUCTV 15.08.2022 KIEM TRA NEU TONG CHI PHI TO TRINH VƯƠT HAN MUC CUA TGD THI LÊN CHỦ TỊCH HĐQT
659
						--IF(ISNULL(@TOTAL_TRANSFER_CE,0) + ISNULL(@TOTAL_TRANSFER_OE,0)>@LIMTT_MAX)
660
						SET @IS_NEXT_HDQT =(SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD'))
661
	
662
						IF(@IS_NEXT_HDQT=1)
663
						BEGIN
664
						IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='HDQT'))
665
						BEGIN
666
						---- THEM THU KI HDQT
667
						SET @STEP_PARENT ='TGD'
668
						INSERT INTO dbo.PL_REQUEST_PROCESS
669
						(
670
							REQ_ID,
671
							PROCESS_ID,
672
							STATUS,
673
							ROLE_USER,
674
							BRANCH_ID,
675
							CHECKER_ID,
676
							APPROVE_DT,
677
							PARENT_PROCESS_ID,
678
							IS_LEAF,
679
							COST_ID,
680
							DVDM_ID,
681
							NOTES,
682
							IS_HAS_CHILD
683
						)
684
						VALUES
685
						(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
686
							'TKHDQT',                               -- PROCESS_ID - varchar(10)
687
							'U',                                 -- STATUS - varchar(5)
688
							'TKHDQT',                               -- ROLE_USER - varchar(50)
689
							'',                                  -- BRANCH_ID - varchar(15)
690
							'',                                  -- CHECKER_ID - varchar(15)
691
							NULL,                                -- APPROVE_DT - datetime
692
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
693
							'N',                                 -- IS_LEAF - varchar(1)
694
							'',                                  -- COST_ID - varchar(15)
695
							'', N'Chờ Văn Phòng HĐQT xác nhận', 1 -- DVDM_ID - varchar(15)
696
							);
697
						SET @STEP_PARENT = 'TKHDQT';
698
						---- END THU KY HDQT
699
						INSERT INTO dbo.PL_REQUEST_PROCESS
700
						(
701
							REQ_ID,
702
							PROCESS_ID,
703
							STATUS,
704
							ROLE_USER,
705
							BRANCH_ID,
706
							CHECKER_ID,
707
							APPROVE_DT,
708
							PARENT_PROCESS_ID,
709
							IS_LEAF,
710
							COST_ID,
711
							DVDM_ID,
712
							NOTES,
713
							IS_HAS_CHILD
714
						)
715
						VALUES
716
						(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
717
							'HDQT',                               -- PROCESS_ID - varchar(10)
718
							'U',                                 -- STATUS - varchar(5)
719
							'HDQT',                               -- ROLE_USER - varchar(50)
720
							'',                                  -- BRANCH_ID - varchar(15)
721
							'',                                  -- CHECKER_ID - varchar(15)
722
							NULL,                                -- APPROVE_DT - datetime
723
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
724
							'N',                                 -- IS_LEAF - varchar(1)
725
							'',                                  -- COST_ID - varchar(15)
726
							'', N'Chờ HDQT phê duyệt điều chuyển', 0 -- DVDM_ID - varchar(15)
727
							);
728
					SET @STEP_PARENT = 'HDQT';
729
					END
730
					-- END LUCTV 15.08.2022
731
					END
732
					END
733
					DECLARE @LAST_PROCESS VARCHAR(20)	
734
					SET @LAST_PROCESS=(
735
					SELECT TOP 1 PL.PROCESS_ID FROM dbo.PL_REQUEST_PROCESS PL 
736
					LEFT JOIN dbo.PL_CONFIG_PROCESS CP ON CP.PROCESS_ID=PL.PROCESS_ID
737
					WHERE REQ_ID=@p_REQ_ID
738
					GROUP BY PL.PROCESS_ID,CP.LEVEL_PROCESS 
739
					ORDER BY CP.LEVEL_PROCESS DESC)
740

    
741
					--UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@LAST_PROCESS WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
742
					--SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')  
743
						--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='KT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
744
						--BEGIN
745
						--	UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='KT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
746
						--END
747
						--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DVCM' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
748
						--BEGIN
749
						--	UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='DVCM' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
750
						--END
751
						--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DVDC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
752
						--BEGIN
753
						--	UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='DVDC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
754
						--END
755
						--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='DVDM_DC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
756
						--BEGIN
757
						--	UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='DVDM_DC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
758
						--END
759
						--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='TC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
760
						--BEGIN
761
						--	UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='TC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
762
						--END
763
						--IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='GDK_DC' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
764
						--BEGIN
765
						--	UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='GDK_DC' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
766
						--END
767
						---END LUCTV BO SUNG RULE UPDATE 08.11.2022
768
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='GDK_TT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
769
						BEGIN
770
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='GDK_TT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
771
						END
772
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='PTGDK_TT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
773
						BEGIN
774
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='PTGDK_TT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
775
						END
776
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='TGD' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
777
						BEGIN
778
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='TGD' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
779
						END
780
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='HDQT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
781
						BEGIN
782
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='HDQT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
783
						END
784
					END
785
					SET @NOTES = 'Tài chính'
786
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND 
787
					(ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID) OR ID =@p_REF_ID) 
788
					AND PROCESS_ID=@PROCESS_CURR
789
				  IF (EXISTS(SELECT prc.REQ_COST_ID FROM PL_REQUEST_COSTCENTER prc WHERE prc.COST_ID = 'DM0000000000048' AND prc.REQ_ID = @p_REQ_ID))
790
				  BEGIN
791
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS = 'A', NOTES = @p_PROCESS_DES, APPROVE_DT = GETDATE(), CHECKER_ID = @p_MAKER_ID WHERE REQ_ID = @p_REQ_ID AND COST_ID = 'DM0000000000048'
792
				  END
793

    
794
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
795

    
796
					SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
797

    
798
					UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
799

    
800
				END
801
				ELSE IF(@PROCESS_CURR='KT')
802
				BEGIN
803
						SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
804
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND PROCESS_ID=@PROCESS_CURR
805
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
806
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
807
				END
808
				ELSE IF(@PROCESS_CURR='DVCM' )
809
				BEGIN
810
					SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
811
					UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID 
812
					AND (COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM))
813
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() 
814
					WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))
815
					AND (DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR  COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM) OR ID =@p_REF_ID)
816
          AND PROCESS_ID=@PROCESS_CURR
817

    
818
					IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
819
					BEGIN
820
						
821
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
822
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
823
						
824
					END
825
		END
826
        ELSE
827
		BEGIN
828
        IF(@PROCESS_CURR = 'TKHDQT')
829
        BEGIN
830
          UPDATE PL_REQUEST_DOC SET IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID = @p_REQ_ID
831
        END
832
				SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
833
				UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS='A',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_DOC_ID=@p_REQ_ID AND 
834
				FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='')
835
				-- LUCTV: 2204 BO SUNG THEM DIEU KIEN SO SANH PROCESS_ID VOI REF ID
836
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() 
837
				WHERE REQ_ID=@p_REQ_ID AND ID =@p_REF_ID
838
				IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
839
				BEGIN
840
							UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
841
							UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
842
						
843
				END
844
				IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)))
845
					BEGIN
846
					IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A'))
847
					BEGIN
848
							IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
849
							BEGIN
850

    
851
							
852
									DECLARE 	@LIMIT_VALUE DECIMAL(18,0),
853
									@IS_NEXT BIT=0,@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100)
854
									DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2)	
855
						
856

    
857
									SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID)
858
						
859
									SET @NOTE=   (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
860
									IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='TC'))
861
									BEGIN
862
									DECLARE lstTransfer CURSOR FOR
863
									SELECT FR_DVDM_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND   FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>'' AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)
864
									AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND DVDM_ID=FR_DVDM_ID	)
865
									AND FR_DVDM_ID <>'DM0000000000048'  AND ( (FR_DVDM_ID  ='DM0000000000003' AND ISNULL(@TOTAL_AMT_TRANSFER,0) >=10000000) OR FR_DVDM_ID <> 'DM0000000000003')
866
									GROUP BY FR_DVDM_ID
867
									OPEN lstTransfer
868
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
869
									WHILE @@FETCH_STATUS = 0 
870
									BEGIN 
871
									IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER='GDDV' AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
872
									LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
873
									WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
874
									BEGIN
875
										INSERT INTO dbo.PL_REQUEST_PROCESS
876
										(
877
											REQ_ID,
878
											PROCESS_ID,
879
											STATUS,
880
											ROLE_USER,
881
											BRANCH_ID,
882
											CHECKER_ID,
883
											APPROVE_DT,
884
											PARENT_PROCESS_ID,
885
											IS_LEAF,
886
											COST_ID,
887
											DVDM_ID,
888
											NOTES,IS_HAS_CHILD
889
										)
890
										VALUES
891
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
892
											'DVDM_DC',        -- PROCESS_ID - varchar(10)
893
											'U',        -- STATUS - varchar(5)
894
											'GDDV',        -- ROLE_USER - varchar(50)
895
											'',        -- BRANCH_ID - varchar(15)
896
											'',        -- CHECKER_ID - varchar(15)
897
											NULL, -- APPROVE_DT - datetime
898
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
899
											'N',        -- IS_LEAF - varchar(1)
900
											'',        -- COST_ID - varchar(15)
901
											@DVDM_ID ,        -- DVDM_ID - varchar(15)
902
											--N'Chờ '+@NOTE+N' xác nhận ngân sách cho'
903
											N'Chờ đơn vị đầu mối quản lý ngân sách cho xác nhận'
904
											,1) -- LUCTV 20.10.22 DVDM_DC CHO CÓ TÍNH NĂNG ĐIỀU PHỐI
905
									END
906

    
907
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
908
									END
909
									CLOSE lstTransfer
910
									DEALLOCATE lstTransfer
911

    
912

    
913

    
914
								SET @STEP_NEXT='TC'
915
								IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
916
								BEGIN
917
										SET @STEP_PARENT='DVDM_DC'
918
										SET @STEP_NEXT	='DVDM_DC'
919
								END
920

    
921
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID
922
								SET @STEP_PARENT='TC'
923
	
924
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@STEP_NEXT AND REQ_ID=@p_REQ_ID
925
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
926
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@STEP_NEXT WHERE REQ_ID=@p_REQ_ID
927

    
928
								IF(@PROCESS_CURR='DVDM_DC' )
929
								BEGIN
930
										SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
931
										UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID 
932
										AND (COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM))
933
										UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() 
934
										WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))
935
										AND (DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR  COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM) OR ID =@p_REF_ID)
936

    
937
										IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
938
										BEGIN
939
						
940
													UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
941
													UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
942
						
943
										END
944
									END
945
								END
946
						END	
947
					END
948
				END		
949
			END
950
			-- NEU CAP DUYET CUA DVDM_DC
951
			IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE'))
952
			BEGIN
953
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
954
					--- LUCTV 8.11.2022 KIEM TRA NEU TO TRINH LA TO TRINH MUA SAM MOI PHAT SINH PYCMS
955
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
956
			END
957
		END	
958
		IF @@Error <> 0 GOTO ABORT
959
COMMIT TRANSACTION
960
SELECT 0 as Result, N'Phê duyệt thành công' ErrorDesc
961
RETURN 0
962
ABORT:
963
BEGIN
964
		ROLLBACK TRANSACTION
965
		SELECT -1 as Result, '' ErrorDesc
966
		RETURN -1
967
End