Project

General

Profile

TR_REQUEST_JOB_FORM_PROCESS_Updv2.txt

Luc Tran Van, 12/31/2022 02:47 PM

 
1

    
2
ALTER PROCEDURE dbo.TR_REQUEST_JOB_FORM_PROCESS_Upd
3
@p_REQ_ID varchar(15) = NULL,
4
@p_TYPE_PROCESS varchar(15) = NULL,
5
@p_MAKERID varchar(100)= NULL,
6
@p_AUTH_STATUS VARCHAR(1) = NULL,
7
@p_CHECKER_ID VARCHAR(100)  = NULL,
8
@p_APPROVE_DT VARCHAR(50) = NULL,
9
@p_NOTES NVARCHAR(500)= NULL
10
AS
11
BEGIN
12

    
13
DECLARE @NOTIFATION NVARCHAR(200) = NULL,
14
		@NOTIFY_TO_USER NVARCHAR(100) = NULL,
15
		@EMAIL_CONTENT NVARCHAR(500) = NULL,
16
		@TYPEMAIL VARCHAR(20),
17
		@ROLE VARCHAR(20)= NULL,
18
		@BRANCHID VARCHAR(20)= NULL,
19
		@PROCESS_CURR VARCHAR(20)= NULL,
20
		@PROCESS_NEXT VARCHAR(20)= NULL,
21
		@BRANCH_NEXT VARCHAR(20)=NULL,
22
		@DEP_NEXT VARCHAR(20) = NULL,
23
		@DEP_ID VARCHAR(20) = NULL,
24
		@REQ_CODE VARCHAR(20) = NULL,
25
		@BRANCH_ID VARCHAR(20) = NULL,
26
		@DEPT_ID VARCHAR(20)	= NULL
27

    
28

    
29
DECLARE @p_LOG_ID VARCHAR(20),@COMPLETE BIT,@PROCESS_PARENT VARCHAR(20),@PROCESS_DES NVARCHAR(500),@EMP_ID NVARCHAR(500),@MAKER_ID VARCHAR(15),@STATUS VARCHAR(15)
30
DECLARE @REQ_TYPE_BOOKING_AIR VARCHAR(15), @REQ_TYPE_BOOKING_HOTEL VARCHAR(15),@IS_SIGN BIT 
31
DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20),@BRANCH_CREATE VARCHAR(20)
32

    
33

    
34
SELECT @BRANCH_ID=tu.TLSUBBRID,@DEPT_ID=tu.DEP_ID,@EMP_ID =tmp.EMP_ID,@MAKER_ID = tmp.MAKER_ID, @REQ_TYPE_BOOKING_AIR=tmp.REQ_TYPE_BOOKING_AIR,@REQ_TYPE_BOOKING_HOTEL=tmp.REQ_TYPE_BOOKING_HOTEL,@BRANCH_CREATE=B.TLSUBBRID
35
FROM (SELECT MAKER_ID,EMP_ID,REQ_TYPE_BOOKING_AIR,REQ_TYPE_BOOKING_HOTEL FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID) tmp
36
JOIN TL_USER tu ON tmp.EMP_ID = tu.TLNANME
37
LEFT JOIN dbo.TL_USER B ON tmp.MAKER_ID= B.TLNANME
38

    
39
SET @REQ_CODE=(SELECT REQ_CODE FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID )
40
SET @PROCESS_CURR=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' )
41
SET @COMPLETE=0
42
--SET
43
BEGIN TRANSACTION
44
	IF(@p_TYPE_PROCESS='NEW')
45
	BEGIN
46
			SET @TYPEMAIL ='SIGN'
47
      SET @STATUS = 'SIGN'
48
			DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS <> 'P'
49
      -----------------TH gửi phê duyệt sẽ by pass TDV phê duyệt-----------
50
      IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID))
51
      BEGIN
52
    			  SELECT @REQ_TYPE_BOOKING_AIR=REQ_TYPE_BOOKING_AIR,@REQ_TYPE_BOOKING_HOTEL=REQ_TYPE_BOOKING_HOTEL FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID
53
				    
54
    				IF(@REQ_TYPE_BOOKING_AIR='AIR_B')
55
    				BEGIN
56
    					SET @TYPEMAIL='HO_APP'
57
						SET @STATUS = 'APPNEW'
58
    					INSERT INTO dbo.PL_REQUEST_PROCESS
59
    					(
60
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
61
    					)
62
    					VALUES
63
    					(   
64
    						@p_REQ_ID,'HO_APP','C','NVDV',@BRANCH_CREATE,'',NULL,'APPNEW','N','','',N'Chờ Hành chính HO xử lý',NULL,''
65
    					)
66
    
67
    					INSERT INTO dbo.PL_REQUEST_PROCESS
68
    					(
69
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
70
    					)
71
    					VALUES
72
    					(   
73
    						@p_REQ_ID,'MAKER_CONF','U',@MAKER_ID,'', '', NULL,'HO_APP','N','','',N'Chờ người tạo xác nhận',NULL,''
74
    					)
75
    					INSERT INTO dbo.PL_REQUEST_PROCESS
76
    					(
77
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
78
    					)
79
    					VALUES
80
    					(   
81
    						@p_REQ_ID,'HCHO_XL','U','NVDV',@BRANCH_CREATE,'',NULL,'MAKER_CONF','N','','', N'Chờ Hành chính HO xử lý',NULL,'' 
82
    					)
83
    					INSERT INTO dbo.PL_REQUEST_PROCESS
84
    					(
85
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
86
    					)
87
    					VALUES
88
    					(   
89
    						@p_REQ_ID,'MAKER_APP','U',@MAKER_ID,'','',NULL,'HCHO_XL','N','','',N'Chờ người tạo phiếu xác nhận chuyến đi hoàn tất',NULL,'' 
90
    					)
91
						SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
92
					N' đã được gửi duyệt thành công. Vui lòng đợi nhân viên hành chính HO xử lý phiếu'
93
    			END
94
    			ELSE IF(@REQ_TYPE_BOOKING_HOTEL='HOTEL_B')
95
    			BEGIN
96
    				SET @TYPEMAIL='HO_APP'
97
					SET @STATUS = 'APPNEW'
98
    				INSERT INTO dbo.PL_REQUEST_PROCESS
99
    				(
100
    					REQ_ID, PROCESS_ID, STATUS,ROLE_USER,BRANCH_ID, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
101
    				)
102
    				VALUES
103
    				(   
104
    					@p_REQ_ID, 'HO_APP', 'C','NVDV', @BRANCH_CREATE, '',NULL, 'APPNEW','N','','',N'Chờ Hành chính HO xử lý',NULL,''         -- DEP_ID - varchar(20)
105
    				)
106
    				 INSERT INTO dbo.PL_REQUEST_PROCESS
107
    				(
108
    					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES
109
    				)
110
    				VALUES
111
    				(   
112
    					@p_REQ_ID,'APPROVE','U','','','',NULL,'HO_APP','Y',N'Hoàn tất'
113
    				)
114
					SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
115
					N' đã được gửi duyệt thành công. Vui lòng đợi nhân viên hành chính HO xử lý phiếu'
116
    			END
117
    			ELSE
118
    			BEGIN
119
					SET @STATUS = 'APPNEW'
120
    				SET @TYPEMAIL='APPROVE'
121
    				UPDATE TR_REQUEST_JOB_FORM 
122
    				SET AUTH_STATUS = 'A',PROCESS_ID='APPROVE',CHECKER_ID = @p_CHECKER_ID,
123
    					APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
124
    				WHERE REQ_ID = @p_REQ_ID
125
    
126
    				INSERT INTO dbo.PL_REQUEST_PROCESS
127
    				(
128
    					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES
129
    				)
130
    				VALUES
131
    				(   
132
    					@p_REQ_ID,'APPROVE','C','','','',NULL,'APPNEW','Y',N'Hoàn tất'
133
    				)
134
					SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
135
					N' đã hoàn tất'
136
    			END
137
				
138
				SET @COMPLETE = 1
139
    		END
140
        --TH Giám đốc khối tạo phiếu yêu cầu CT -> Không có PTGD, TGD duyệt trực tiếp
141
			ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK') AND NOT EXISTS(SELECT 1  FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),'PTGD')))
142
			BEGIN
143
					INSERT INTO dbo.PL_REQUEST_PROCESS
144
					(
145
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
146
					)
147
					VALUES
148
					(   
149
						@p_REQ_ID,'SIGN','C','TKTGD',NULL,NULL,NULL,'','N','','','',N'Chờ Thư ký tổng giám đốc phê duyệt',   NULL       -- IS_HAS_CHILD - bit
150
					 )
151
					INSERT INTO dbo.PL_REQUEST_PROCESS
152
					(
153
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
154
					)
155
					VALUES
156
					(   
157
						@p_REQ_ID,'APPNEW','U','TGD',NULL,NULL,'',NULL,'SIGN','N','','',	N'Chờ tổng giám đốc phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
158
					)
159
					UPDATE dbo.TR_REQUEST_JOB_FORM SET SIGN_USER='TKTGD' WHERE REQ_ID =@p_REQ_ID
160
				SET @TYPEMAIL='SEND'
161
				SET @STATUS = 'SEND'
162
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
163
					N' đã được gửi duyệt thành công. Vui lòng đợi thư ký tổng giám đốc vị phê duyệt'
164
				SET @COMPLETE = 1
165
			END
166
			-----------------TH gửi phê duyệt có cấp duyệt trung gian-----------
167
			ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL))
168
			BEGIN
169
				
170
				SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_REQ_ID)
171
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
172
					N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận'
173
				SET @IS_SIGN = 1
174
				INSERT INTO dbo.PL_REQUEST_PROCESS
175
				(
176
					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
177
				)
178
				VALUES
179
				(   
180
					@p_REQ_ID,'SIGN','C',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu',   NULL       -- IS_HAS_CHILD - bit
181
				)
182
        SET @TYPEMAIL='SEND'
183
        SET @STATUS = 'SEND'
184
			END
185
			IF(@COMPLETE <> 1)
186
			BEGIN
187
				IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK'))
188
				BEGIN
189
					INSERT INTO dbo.PL_REQUEST_PROCESS
190
					(
191
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
192
					)
193
					VALUES
194
					(   
195
						@p_REQ_ID,'APPNEW',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'PTGD',NULL,NULL,'',NULL,'SIGN','N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),N'Chờ phó tổng giám đốc phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
196
					)
197
				END
198
				ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV'))
199
				BEGIN
200
					INSERT INTO dbo.PL_REQUEST_PROCESS
201
					(
202
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
203
					)
204
					VALUES
205
					(   
206
						@p_REQ_ID,'APPNEW',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDK',NULL,NULL,'',NULL,'SIGN','N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),	N'Chờ giám đốc phê khối duyệt' ,NULL       -- IS_HAS_CHILD - bit
207
					)
208
				END
209
				ELSE 
210
				BEGIN
211
					INSERT INTO dbo.PL_REQUEST_PROCESS
212
					(
213
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
214
					)
215
					VALUES
216
					(   
217
						@p_REQ_ID,'APPNEW',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDDV',@BRANCH_ID,CASE WHEN @BRANCH_ID='DV0001' THEN @DEPT_ID ELSE '' END,'',NULL,'SIGN','N','','',	N'Chờ trưởng phòng phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
218
					)
219
				END
220
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
221
					N' gửi duyệt thành công. Vui lòng đợi trưởng phòng phê duyệt'
222
			END
223
      UPDATE TR_REQUEST_JOB_FORM SET IS_SEND_APPR = 'Y', SEND_DT = CONVERT(DATETIME, GETDATE(), 103),AUTH_STATUS='U',PROCESS_ID=@STATUS,SENDER_ID=@p_CHECKER_ID
224
			WHERE REQ_ID = @p_REQ_ID
225
			IF @@ERROR <> 0 GOTO ABORT
226
		------Insert vào bảng lịch sử xử lý-------------
227
		INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
228
			VALUES(@p_REQ_ID, 'SEND', @p_CHECKER_ID, GETDATE(), 
229
					N'Người tạo gửi phê duyệt thành công', N' Người tạo gửi phê duyệt')
230

    
231
    SET @COMPLETE = 1
232
		IF @@ERROR <> 0 GOTO ABORT
233
	END
234
	ELSE IF(@p_TYPE_PROCESS='SEND')
235
	BEGIN
236
		IF(@PROCESS_CURR='SIGN')
237
		BEGIN
238
      IF NOT EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM trjf WHERE trjf.SIGN_USER=@p_CHECKER_ID OR EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) WHERE ROLE_ID =trjf.SIGN_USER))
239
			BEGIN
240
				ROLLBACK TRANSACTION
241
				SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải người phê duyệt trung gian' ErrorDesc 
242
				RETURN '-1'
243
			END 
244
			DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='R'
245
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Cấp phê duyệt trung gian đã xác nhận phiếu'
246
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='SIGN'
247
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
248
			SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C'
249
			UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'U', SIGN_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103), PROCESS_ID='SIGN'
250
			WHERE REQ_ID = @p_REQ_ID
251
			IF @@ERROR <> 0 GOTO ABORT
252
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
253
			VALUES(@p_REQ_ID, 'SIGN',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_NOTES, 
254
			N' Cấp trung gian xác nhận PYC công tác')
255
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
256
					N' đã được xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt'
257
			
258
			SET @COMPLETE = 1
259
			SET @TYPEMAIL ='SIGN'
260
			
261
		END
262
		IF(@PROCESS_CURR='HO_APP')
263
		BEGIN
264
			IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE')
265
			BEGIN
266
				ROLLBACK TRANSACTION
267
				SELECT '-1' Result, N'Xác nhận thất bại. Bạn chưa cập nhật thông tin cho phiếu' ErrorDesc 
268
				RETURN '-1'
269
			END 
270

    
271
			--kiểm tra đn có phải nvdv
272
			IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV')
273
			BEGIN
274
				ROLLBACK TRANSACTION
275
				SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải nhân viên đặt vé phòng hành chính' ErrorDesc 
276
				RETURN '-1'
277
			END 
278
			
279
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Hành chính HO đã xử lý'
280
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HO_APP'
281
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
282
			SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C'
283
			IF(@PROCESS_NEXT='APPROVE')
284
			BEGIN
285
				SET @TYPEMAIL='APPROVE'
286
				UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='APPROVE', AUTH_STATUS='A'
287
				WHERE REQ_ID = @p_REQ_ID
288
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
289
					N' đã được xác nhận thành công. PYC công tác đã được hoàn thành'
290
			END	
291
			ELSE
292
			BEGIN
293
				SET @TYPEMAIL='SENDEMP'
294
				UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='HO_APP'
295
				WHERE REQ_ID = @p_REQ_ID
296
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
297
					N' đã được xác nhận thành thành công. Vui lòng đợi người tạo chọn chuyến bay'
298
			END
299
			IF @@ERROR <> 0 GOTO ABORT
300
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
301
			VALUES(@p_REQ_ID, 'HO_APP',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Hành chính HO xử lý PYC công tác thành công', 
302
			N' Hành Chính HO xử lý PYC công tác')
303
			SET @COMPLETE=1
304
		
305
		END
306
		ELSE IF(@PROCESS_CURR='MAKER_CONF')
307
		BEGIN
308
			IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE')
309
			BEGIN
310
				ROLLBACK TRANSACTION
311
				SELECT '-1' Result, N'Trình phiếu thất bại! Bạn chưa cập nhật thông tin cho phiếu' ErrorDesc 
312
				RETURN '-1'
313
			END 
314

    
315
			--kiểm tra đn có phải người tạo or người sử dụng
316
			IF NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND (MAKER_ID=@p_CHECKER_ID OR EMP_ID=@p_CHECKER_ID))
317
			BEGIN
318
				ROLLBACK TRANSACTION
319
				SELECT '-1' Result, N'Trình phiếu thất bại! Bạn không phải người tạo hoặc người sử dụng phiếu này' ErrorDesc 
320
				RETURN '-1'
321
			END 
322

    
323
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Người tạo đã chọn vé thành công'
324
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='MAKER_CONF'
325
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
326
			SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C'
327
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='MAKER_CONF'
328
			WHERE REQ_ID = @p_REQ_ID
329
			IF @@ERROR <> 0 GOTO ABORT
330
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
331
			VALUES(@p_REQ_ID, 'MAKER_CONF',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Người tạo phiếu chọn vé cho chuyến bay thành công', 
332
			N' Người tạo chọn vé cho chuyến bay')
333
			SET @COMPLETE = 1
334
			SET @TYPEMAIL='SENDNVDV'
335
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
336
					N' đã được trình phiếu cho hành chính HO thành công. Vui lòng đợi hành chính HO đặt vé'
337
		END
338
		ELSE IF(@PROCESS_CURR='HCHO_XL')
339
		BEGIN
340
			IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV')
341
			BEGIN
342
				ROLLBACK TRANSACTION
343
				SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải nhân viên đặt vé phòng hành chính' ErrorDesc 
344
				RETURN '-1'
345
			END 
346
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Hành chính HO đặt vé thành công'
347
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HCHO_XL'
348
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
349
			SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C'
350
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='HCHO_XL'
351
			WHERE REQ_ID = @p_REQ_ID
352
			IF @@ERROR <> 0 GOTO ABORT
353
			SET @COMPLETE= 1
354
			SET @TYPEMAIL='NOFI'
355
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
356
			VALUES(@p_REQ_ID, 'HCHO_XL',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Hành chính HO đặt vé thành công', 
357
			N' Hành chính HO đặt vé thành công')
358
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
359
					N' đã được gửi thông báo thành công'
360
		END
361
    ELSE IF(@PROCESS_CURR='TRAIN_UPD')
362
		BEGIN
363
			
364
			IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE')
365
			BEGIN
366
				ROLLBACK TRANSACTION
367
				SELECT '-1' Result, N'Bạn chưa cập nhật thông tin cho phiếu' ErrorDesc 
368
				RETURN '-1'
369
			END 
370

    
371
			--kiểm tra đn có phải người tạo or người sử dụng phiếu
372
			IF NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND (MAKER_ID=@p_CHECKER_ID OR EMP_ID=@p_CHECKER_ID))
373
			BEGIN
374
				ROLLBACK TRANSACTION
375
				SELECT '-1' Result, N'Gửi phiếu thất bại! Bạn không phải người tạo hoặc người sử dụng phiếu yêu cầu công tác này' ErrorDesc 
376
				RETURN '-1'
377
			END 
378

    
379
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Cập nhật thông tin thành công'
380
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='TRAIN_UPD'
381
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
382
      SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C'
383
			
384
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID= CASE WHEN @PROCESS_NEXT='SIGN'THEN 'SEND' WHEN @PROCESS_NEXT='HO_APP'THEN 'APPNEW' ELSE 'SIGN' END
385
			WHERE REQ_ID = @p_REQ_ID
386
			IF @@ERROR <> 0 GOTO ABORT
387
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
388
			VALUES(@p_REQ_ID, 'TRAIN_UPD',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Người tạo thay đổi lộ trình', 
389
			N' Người tạo thay đổi lộ trình thành công')
390
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
391
					N' đã được gửi duyệt thành công'
392
		END
393
		ELSE IF(@PROCESS_CURR='MAKER_APP')
394
		BEGIN
395
			IF NOT EXISTS(SELECT 1 FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND (MAKER_ID=@p_CHECKER_ID OR EMP_ID=@p_CHECKER_ID))
396
			BEGIN
397
				ROLLBACK TRANSACTION
398
				SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải người tạo hoặc người sử dụng phiếu này' ErrorDesc 
399
				RETURN '-1'
400
			END 
401
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Người tạo xác nhận hoàn thành chuyến công tác thành công'
402
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='MAKER_APP'
403
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
404
			SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C'
405
			
406
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='MAKER_APP'
407
			WHERE REQ_ID = @p_REQ_ID
408
			IF @@ERROR <> 0 GOTO ABORT
409
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
410
			VALUES(@p_REQ_ID, 'MAKER_APP',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), N'Người tạo xác nhận hoàn thành chuyến công tác', 
411
			N' Người tạo xác nhận hoàn tất chuyến đi')
412
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
413
					N' đã xác nhận hoàn tất chuyến công tác thành công'
414
			DECLARE @PROCESS_ID_OLD VARCHAR(10)
415
			IF(EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE PROCESS_ID='UPDATE' AND REQ_ID=@p_REQ_ID))
416
			BEGIN
417
				SET @PROCESS_ID_OLD ='HOAPP'
418
--				INSERT INTO dbo.PL_REQUEST_PROCESS
419
--				(
420
--					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
421
--				)
422
--				VALUES
423
--				(   
424
--					@p_REQ_ID,'TDV_APP','C','GDDV',@BRANCH_ID,@DEPT_ID,'',NULL,'MAKER_APP','N','', '',N'Chờ trưởng đơn vị xác nhận' ,NULL
425
--				)
426
        --------------------------------LUONG GUI DUYET TRUONG PHONG--------------------------------
427
         IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID))
428
          BEGIN
429
            UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='TDV_APP'WHERE REQ_ID = @p_REQ_ID
430
            INSERT INTO dbo.PL_REQUEST_PROCESS
431
    				(
432
    					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
433
    				)
434
    				VALUES
435
    				(   
436
    					@p_REQ_ID,'HOAPP','C','NVDV',@BRANCH_CREATE,'','',NULL,'MAKER_APP','N','','',N'Chờ Hành chính xác nhận hoàn thành' ,NULL
437
    				)
438
            SET @TYPEMAIL = 'HOAPP'
439
    				SET @COMPLETE = 1
440
        	END
441
            --TH Giám đốc khối tạo phiếu yêu cầu CT -> Không có PTGD, TGD duyệt trực tiếp
442
    		 ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK') AND NOT EXISTS(SELECT 1  FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),'PTGD')))
443
    			BEGIN
444
      					INSERT INTO dbo.PL_REQUEST_PROCESS
445
      					(
446
      						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
447
      					)
448
      					VALUES
449
      					(   
450
    						  @p_REQ_ID,'SIGN_APP','C','TKTGD',NULL,NULL,NULL,'','TRAIN_UPD','','','',N'Chờ Thư ký tổng giám đốc phê duyệt',   NULL       -- IS_HAS_CHILD - bit
451
    					  )
452
      					INSERT INTO dbo.PL_REQUEST_PROCESS
453
      					(
454
      						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
455
      					)
456
      					VALUES
457
      					(   
458
      						@p_REQ_ID,'TDV_APP','U','TGD',NULL,NULL,'',NULL,'SIGN_APP','N','','',	N'Chờ tổng giám đốc phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
459
      					)
460
              	INSERT INTO dbo.PL_REQUEST_PROCESS
461
        				(
462
        					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
463
        				)
464
        				VALUES
465
        				(   
466
        					@p_REQ_ID,'HOAPP','U','NVDV',@BRANCH_CREATE,'','',NULL,'TDV_APP','N','','',N'Chờ Hành chính xác nhận hoàn thành' ,NULL
467
        				)
468
    					
469
              SET @TYPEMAIL='SIGN_APP'
470
      				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
471
      					N' đã được thay đổi thành công. Vui lòng đợi thư ký tổng giám đốc vị phê duyệt'
472
    				SET @COMPLETE = 1
473
    			END
474
    			-----------------TH gửi phê duyệt có cấp duyệt trung gian-----------
475
    		 ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL))
476
    			BEGIN
477
    				SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_REQ_ID)
478
    				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
479
    					N' đã chỉnh sửa và gửi yêu cầu hoàn tất. Vui lòng đợi cấp phê duyệt trung gian xác nhận'
480
    				SET @IS_SIGN = 1
481
    				INSERT INTO dbo.PL_REQUEST_PROCESS
482
    				(
483
    					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
484
    				)
485
    				VALUES
486
    				(   
487
    					@p_REQ_ID,'SIGN_APP','C',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'TRAIN_UPD','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu',   NULL       -- IS_HAS_CHILD - bit
488
    				)
489
            SET @TYPEMAIL='SIGN_APP'
490
            SET @IS_SIGN = 1
491
    			END
492
    		 IF(@COMPLETE <> 1)
493
    			BEGIN
494
    				IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK'))
495
    			  	BEGIN
496
    					INSERT INTO dbo.PL_REQUEST_PROCESS
497
    					(
498
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
499
    					)
500
    					VALUES
501
    					(   
502
    						@p_REQ_ID,'TDV_APP',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'PTGD',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN_APP' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),N'Chờ phó tổng giám đốc phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
503
    					)
504
    				  END
505
    				ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV'))
506
    			  	BEGIN
507
      					INSERT INTO dbo.PL_REQUEST_PROCESS
508
      					(
509
      						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
510
      					)
511
      					VALUES
512
      					(   
513
      						@p_REQ_ID,'TDV_APP',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDK',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN_APP' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),	N'Chờ giám đốc phê khối duyệt' ,NULL       -- IS_HAS_CHILD - bit
514
      					)
515
    				  END
516
    				ELSE 
517
      				BEGIN
518
      					INSERT INTO dbo.PL_REQUEST_PROCESS
519
      					(
520
      						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
521
      					)
522
      					VALUES
523
      					(   
524
      						@p_REQ_ID,'TDV_APP',CASE WHEN @IS_SIGN=1 THEN 'U' ELSE 'C' END,'GDDV',@BRANCH_ID,CASE WHEN @BRANCH_ID='DV0001' THEN @DEPT_ID ELSE '' END,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN_APP' ELSE 'TRAIN_UPD' END,'N','','',	N'Chờ trưởng phòng phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
525
      					)
526
                
527
      				END
528

    
529
            INSERT INTO dbo.PL_REQUEST_PROCESS
530
    				(
531
    					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
532
    				)
533
    				VALUES
534
    				(   
535
    					@p_REQ_ID,'HOAPP','U','NVDV',@BRANCH_CREATE,'','',NULL,'TDV_APP','N','','',N'Chờ Hành chính xác nhận hoàn thành' ,NULL
536
    				)
537
            SET @COMPLETE = 1
538
            IF(@TYPEMAIL IS NULL OR @TYPEMAIL ='')
539
            BEGIN
540
              SET @TYPEMAIL='TDV_APP'
541
      				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
542
      					N'  đã chỉnh sửa và gửi yêu cầu hoàn tất. Vui lòng đợi trưởng phòng phê duyệt'
543
            END
544
    			END
545
--      end
546
			
547
			END
548
			ELSE
549
			BEGIN
550
				SET @PROCESS_ID_OLD ='MAKER_APP'
551
				SET @TYPEMAIL ='APPROVE'
552
				UPDATE TR_REQUEST_JOB_FORM 
553
				SET AUTH_STATUS = 'A',PROCESS_ID='APPROVE',CHECKER_ID = @p_CHECKER_ID,
554
					APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
555
				WHERE REQ_ID = @p_REQ_ID
556
			END
557
		
558
		INSERT INTO dbo.PL_REQUEST_PROCESS
559
		(
560
			REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES
561
		)
562
		VALUES
563
		(   
564
			@p_REQ_ID,'APPROVE', (CASE @PROCESS_ID_OLD  WHEN 'MAKER_APP' THEN 'C'ELSE 'U'END),'','','',NULL,@PROCESS_ID_OLD,'Y',N'Hoàn tất'
565
		)
566

    
567
		END
568
		ELSE IF(@PROCESS_CURR='HOAPP')
569
		BEGIN
570
			IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV')
571
			BEGIN
572
				ROLLBACK TRANSACTION
573
				SELECT '-1' Result, N'Xác nhận thất bại! Bạn không phải nhân viên đặt vé phòng hành chính' ErrorDesc 
574
				RETURN '-1'
575
			END
576
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT, 103),NOTES=N'Người tạo xác nhận hoàn thành chuyến công tác thành công'
577
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HOAPP'
578
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
579
			SELECT @PROCESS_NEXT=PROCESS_ID,@ROLE=ROLE_USER,@BRANCH_NEXT=BRANCH_ID,@DEP_NEXT=DEP_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C'
580
			
581
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='APPROVE',AUTH_STATUS='A',CHECKER_ID=@p_CHECKER_ID
582
			WHERE REQ_ID = @p_REQ_ID
583
			IF @@ERROR <> 0 GOTO ABORT
584

    
585
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
586
					N' đã xác nhận hoàn tất thành công'
587
			
588
			INSERT INTO dbo.PL_PROCESS
589
			(
590
				REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
591
			)
592
			VALUES
593
			(  
594
				@p_REQ_ID,'HOAPP',@p_CHECKER_ID,GETDATE(),@p_NOTES,N'Hành chính HO đã phê duyệt'       
595
			)
596
		END
597
	END
598
	ELSE IF(@p_TYPE_PROCESS='CANCEL')
599
	BEGIN
600
			UPDATE dbo.TR_REQUEST_JOB_FORM SET PROCESS_ID='CANCEL',AUTH_STATUS='D' WHERE REQ_ID=@p_REQ_ID
601
			IF @@Error <> 0 GOTO ABORT
602

    
603
			SET @COMPLETE=1
604
			SET @TYPEMAIL='CANCEL'
605

    
606
			IF(EXISTS (SELECT 1 FROM CM_REJECT_LOG WHERE TRN_ID = @p_REQ_ID))
607
			BEGIN
608
				UPDATE CM_REJECT_LOG SET IS_LATEST ='N' WHERE TRN_ID =@p_REQ_ID
609
			END
610
			EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
611
			IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
612
			INSERT INTO [dbo].[CM_REJECT_LOG] VALUES (@p_LOG_ID,'HC',@p_REQ_ID,'TR_REQUEST_JOB_FORM',CONVERT(DATETIME,GETDATE(),103),'R',@p_NOTES,'N',@p_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
613
			UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P' WHERE REQ_ID=@p_REQ_ID AND STATUS ='C' 
614
			DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS ='U'
615
			INSERT INTO dbo.PL_REQUEST_PROCESS
616
			(
617
			    REQ_ID,PROCESS_ID,STATUS, ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID,SUB_PROCESS_ID
618
			)
619
			VALUES
620
			(   
621
				@p_REQ_ID,'CANCEL','C','','','',GETDATE(),'','','','',N'',NULL,'', ''
622
			)
623
			-- insert log
624
			INSERT INTO dbo.PL_PROCESS
625
			(
626
				REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
627
			)
628
			VALUES
629
			(  
630
				@p_REQ_ID,'CANCEL',@p_CHECKER_ID,CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_NOTES,N'Hủy phiếu thành công'
631
			)
632
			DECLARE @REQ_CAR_ID VARCHAR(20)
633
			SELECT @REQ_CAR_ID=REQ_CAR_ID FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID
634
			IF(@REQ_CAR_ID IS NOT NULL)
635
			BEGIN
636
				UPDATE dbo.TR_REQUEST_CAR SET AUTH_STATUS='D' WHERE REQ_ID=@REQ_CAR_ID
637
			END
638
        SET @NOTIFATION =N'Phiếu yêu cầu công tác số: '+ @REQ_CODE+N' đã bị hủy'
639
	END
640
	ELSE IF(@p_TYPE_PROCESS='TRAIN_UPD')
641
	BEGIN
642
		INSERT INTO dbo.PL_PROCESS
643
		(
644
		    REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
645
		)
646
		VALUES
647
		(   
648
			@p_REQ_ID,'TRAIN_UPD', @p_CHECKER_ID, GETDATE(),N'Người tạo thay đổi lộ trình thành công', N'Người tạo thay đổi lộ trình'
649
		)
650
		UPDATE dbo.TR_REQUEST_JOB_FORM SET PROCESS_ID ='TRAIN_UPD' WHERE REQ_ID=@p_REQ_ID 
651
		/* declare variables */
652

    
653
		DECLARE
654
			@FROM_TRAIN		VARCHAR(15),
655
			@TO_TRAIN		VARCHAR(15),
656
			@VEHICLE_TYPE	VARCHAR(15),
657
			@CONSIGNMENT	VARCHAR(5)
658

    
659
		DECLARE @lstID TABLE(
660
			TRAIN_ID		VARCHAR(15)
661
		)
662

    
663
		DECLARE @lstRJT TABLE(
664
				FROM_TRAIN		VARCHAR(15),
665
				TO_TRAIN		VARCHAR(15),
666
				VEHICLE_TYPE	VARCHAR(15),
667
				CONSIGNMENT		VARCHAR(5)
668
			)
669

    
670
		--Lưới Danh sách Lộ Trình
671
		INSERT INTO @lstRJT
672
		SELECT FROM_TRAIN,TO_TRAIN,VEHICLE_TYPE,CONSIGNMENT FROM dbo.TR_REQUEST_JOB_TRAIN WHERE REQ_ID=@p_REQ_ID AND IS_OLD=0
673

    
674
		DECLARE crTrain CURSOR FOR SELECT FROM_TRAIN,TO_TRAIN,VEHICLE_TYPE,CONSIGNMENT FROM @lstRJT
675
		
676
		OPEN crTrain
677
		
678
		FETCH NEXT FROM crTrain INTO @FROM_TRAIN,@TO_TRAIN,@VEHICLE_TYPE,@CONSIGNMENT
679
		
680
		WHILE @@FETCH_STATUS = 0
681
		BEGIN
682
			DECLARE @l_RJT_ID VARCHAR(15)
683
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_JOB_TRAIN', @l_RJT_ID OUT
684
            INSERT INTO @lstID VALUES (@l_RJT_ID)
685
			INSERT INTO dbo.TR_REQUEST_JOB_TRAIN
686
				(TRAIN_ID,REQ_ID,FROM_TRAIN,TO_TRAIN,VEHICLE_TYPE,CONSIGNMENT,IS_OLD)
687
			VALUES
688
				(@l_RJT_ID, @p_REQ_ID,@FROM_TRAIN,@TO_TRAIN,@VEHICLE_TYPE, @CONSIGNMENT,0)
689
		    FETCH NEXT FROM crTrain INTO @FROM_TRAIN,@TO_TRAIN,@VEHICLE_TYPE,@CONSIGNMENT
690
		IF @@ERROR <> 0 GOTO ABORT
691
		END
692
		CLOSE crTrain
693
		DEALLOCATE crTrain
694
		UPDATE TR_REQUEST_JOB_TRAIN	SET IS_OLD=1 WHERE REQ_ID=@p_REQ_ID AND TRAIN_ID NOT IN (SELECT TRAIN_ID FROM @lstID)
695
    UPDATE TR_REQ_JOB_FLY SET IS_OLD = 1 WHERE REQ_ID =@p_REQ_ID
696
    UPDATE TR_REQ_JOB_TRIP SET RECORD_STATUS='0' WHERE REQ_ID =@p_REQ_ID
697
    UPDATE TR_REQ_JOB_RETURN_TRIP SET RECORD_STATUS='0' WHERE REQ_ID =@p_REQ_ID
698
		DELETE PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND (STATUS='U' OR STATUS='C')
699

    
700
		
701
		INSERT INTO dbo.PL_REQUEST_PROCESS
702
		(
703
			REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
704
		)
705
		VALUES
706
		(   
707
			@p_REQ_ID,'TRAIN_UPD','C',@MAKER_ID,'','','','HCHO_XL','N','','',N'Chờ người tạo thay đổi thông tin',NULL,''
708
		)
709
    --------------------------------LUONG GUI DUYET TRUONG PHONG--------------------------------
710
     IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID))
711
      BEGIN
712
          	
713
    			  SELECT @REQ_TYPE_BOOKING_AIR=REQ_TYPE_BOOKING_AIR,@REQ_TYPE_BOOKING_HOTEL=REQ_TYPE_BOOKING_HOTEL FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID
714
					
715
    				IF(@REQ_TYPE_BOOKING_AIR='AIR_B')
716
    				BEGIN
717
    					SET @TYPEMAIL='SENDHO'
718
    					INSERT INTO dbo.PL_REQUEST_PROCESS
719
    					(
720
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
721
    					)
722
    					VALUES
723
    					(   
724
    						@p_REQ_ID,'HO_APP','U','NVDV',@BRANCH_CREATE,'',NULL,'TRAIN_UPD','N','','',N'Chờ Hành chính HO xử lý',NULL,''
725
    					)
726
    
727
    					INSERT INTO dbo.PL_REQUEST_PROCESS
728
    					(
729
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
730
    					)
731
    					VALUES
732
    					(   
733
    						@p_REQ_ID,'MAKER_CONF','U',@MAKER_ID,@BRANCH_CREATE, '', NULL,'HO_APP','N','','',N'Chờ người tạo xác nhận',NULL,''
734
    					)
735
    					INSERT INTO dbo.PL_REQUEST_PROCESS
736
    					(
737
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
738
    					)
739
    					VALUES
740
    					(   
741
    						@p_REQ_ID,'HCHO_XL','U','NVDV',@BRANCH_CREATE,'',NULL,'MAKER_CONF','N','','', N'Chờ Hành chính HO xử lý',NULL,'' 
742
    					)
743
    					INSERT INTO dbo.PL_REQUEST_PROCESS
744
    					(
745
    						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD,DEP_ID
746
    					)
747
    					VALUES
748
    					(   
749
    						@p_REQ_ID,'MAKER_APP','U',@MAKER_ID,@BRANCH_CREATE,'',NULL,'HCHO_XL','N','','',N'Chờ người tạo phiếu xác nhận chuyến đi hoàn tất',NULL,'' 
750
    					)
751
    			END
752
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
753
					N' đã được gửi duyệt thành công. Vui lòng đợi nhân viên hành chính HO xử lý phiếu'
754
				SET @COMPLETE = 1
755
    		END
756
        --TH Giám đốc khối tạo phiếu yêu cầu CT -> Không có PTGD, TGD duyệt trực tiếp
757
			ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK') AND NOT EXISTS(SELECT 1  FROM dbo.FN_GET_USER_MANAGER_BY_DVCM((SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID =@DEP_ID),'PTGD')))
758
			BEGIN
759
					INSERT INTO dbo.PL_REQUEST_PROCESS
760
					(
761
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
762
					)
763
					VALUES
764
					(   
765
						@p_REQ_ID,'SIGN','U','TKTGD',NULL,NULL,NULL,'','TRAIN_UPD','','','',N'Chờ Thư ký tổng giám đốc phê duyệt',   NULL       -- IS_HAS_CHILD - bit
766
					 )
767
					INSERT INTO dbo.PL_REQUEST_PROCESS
768
					(
769
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
770
					)
771
					VALUES
772
					(   
773
						@p_REQ_ID,'APPNEW','U','TGD',NULL,NULL,'',NULL,'SIGN','N','','',	N'Chờ tổng giám đốc phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
774
					)
775
					UPDATE dbo.TR_REQUEST_JOB_FORM SET SIGN_USER='TKTGD' WHERE REQ_ID =@p_REQ_ID
776
          SET @TYPEMAIL='SEND'
777
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
778
					N' đã được gửi duyệt thành công. Vui lòng đợi thư ký tổng giám đốc vị phê duyệt'
779
				SET @COMPLETE = 1
780
			END
781
			-----------------TH gửi phê duyệt có cấp duyệt trung gian-----------
782
			ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL))
783
			BEGIN
784
				
785
				SELECT @BRANCH_SIGN_ID=TLSUBBRID,@DEP_SIGN_ID=SECUR_CODE,@BRANCH_SIGN_TYPE=BRANCH_TYPE,@ROLE_SIGN=RoleName FROM dbo.TL_USER WHERE TLNANME =(SELECT SIGN_USER FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID =@p_REQ_ID)
786
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
787
					N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận'
788
				SET @IS_SIGN = 1
789
				INSERT INTO dbo.PL_REQUEST_PROCESS
790
				(
791
					REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
792
				)
793
				VALUES
794
				(   
795
					@p_REQ_ID,'SIGN','U',@ROLE_SIGN,@BRANCH_SIGN_ID,CASE WHEN @BRANCH_SIGN_TYPE='HS' THEN @DEP_SIGN_ID ELSE '' END,'',NULL,'TRAIN_UPD','N','','',N'Chờ cấp phê duyệt trung gian xác nhận phiếu',   NULL       -- IS_HAS_CHILD - bit
796
				)
797
        SET @TYPEMAIL='SEND'
798
			END
799
			IF(@COMPLETE <> 1)
800
			BEGIN
801
				IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK'))
802
				BEGIN
803
					INSERT INTO dbo.PL_REQUEST_PROCESS
804
					(
805
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
806
					)
807
					VALUES
808
					(   
809
						@p_REQ_ID,'APPNEW','U','PTGD',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),N'Chờ phó tổng giám đốc phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
810
					)
811
				END
812
				ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV'))
813
				BEGIN
814
					INSERT INTO dbo.PL_REQUEST_PROCESS
815
					(
816
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
817
					)
818
					VALUES
819
					(   
820
						@p_REQ_ID,'APPNEW','U','GDK',NULL,NULL,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN' ELSE 'TRAIN_UPD' END,'N','',(SELECT KHOI_ID FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEPT_ID),	N'Chờ giám đốc phê khối duyệt' ,NULL       -- IS_HAS_CHILD - bit
821
					)
822
				END
823
				ELSE 
824
				BEGIN
825
					INSERT INTO dbo.PL_REQUEST_PROCESS
826
					(
827
						REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,DEP_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,COST_ID,DVDM_ID,NOTES,IS_HAS_CHILD
828
					)
829
					VALUES
830
					(   
831
						@p_REQ_ID,'APPNEW','U','GDDV',@BRANCH_ID,CASE WHEN @BRANCH_ID='DV0001' THEN @DEPT_ID ELSE '' END,'',NULL,CASE WHEN @IS_SIGN=1 THEN 'SIGN' ELSE 'TRAIN_UPD' END,'N','','',	N'Chờ trưởng phòng phê duyệt' ,NULL       -- IS_HAS_CHILD - bit
832
					)
833
				END
834
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
835
					N' gửi yêu cầu đổi lịch trình thành công. Vui lòng đợi trưởng phòng phê duyệt'
836
        SET @COMPLETE = 1
837
        SET @TYPEMAIL = 'TRAIN_UPD'
838
			END
839
	END
840

    
841
	UPDATE dbo.PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE'
842
COMMIT TRANSACTION
843
SELECT '0' as Result, @NOTIFATION AS NOTIFATION, '' ErrorDesc, @TYPEMAIL AS TYPEMAIL, @COMPLETE COMPLETE
844
RETURN '0'
845
ABORT:
846
BEGIN
847
		ROLLBACK TRANSACTION
848
		SELECT '-1' AS RESULT
849
		RETURN '-1'
850
End
851
END
852