Project

General

Profile

TR_REQUEST_JOB_FORM_PROCESS_Upd.txt

Luc Tran Van, 03/23/2023 09:26 AM

 
1
USE gAMSPro_BVB_v3_FINAL
2
GO
3

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

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

    
30

    
31
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)
32
DECLARE @REQ_TYPE_BOOKING_AIR VARCHAR(15), @REQ_TYPE_BOOKING_HOTEL VARCHAR(15),@IS_SIGN BIT 
33
DECLARE @BRANCH_SIGN_ID VARCHAR(20),@DEP_SIGN_ID VARCHAR(20),@BRANCH_SIGN_TYPE VARCHAR(10),@ROLE_SIGN VARCHAR(20),@BRANCH_CREATE VARCHAR(20)
34

    
35

    
36
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
37
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
38
JOIN TL_USER tu ON tmp.EMP_ID = tu.TLNANME
39
LEFT JOIN dbo.TL_USER B ON tmp.MAKER_ID= B.TLNANME
40

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

    
235
    SET @COMPLETE = 1
236
		IF @@ERROR <> 0 GOTO ABORT
237
	END
238
	ELSE IF(@p_TYPE_PROCESS='SEND')
239
	BEGIN
240
		IF(@PROCESS_CURR='SIGN')
241
		BEGIN
242
      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))
243
			BEGIN
244
				ROLLBACK TRANSACTION
245
				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 
246
				RETURN '-1'
247
			END 
248
			DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='R'
249
			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'
250
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='SIGN'
251
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
252
			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'
253
			UPDATE TR_REQUEST_JOB_FORM SET AUTH_STATUS = 'U', SIGN_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103), PROCESS_ID='SIGN'
254
			WHERE REQ_ID = @p_REQ_ID
255
			IF @@ERROR <> 0 GOTO ABORT
256
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
257
			VALUES(@p_REQ_ID, 'SIGN',@p_CHECKER_ID, CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_NOTES, 
258
			N' Cấp trung gian xác nhận PYC công tác')
259
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
260
					N' đã được xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt'
261
			
262
			SET @COMPLETE = 1
263
			SET @TYPEMAIL ='SIGN'
264
			
265
		END
266
		IF(@PROCESS_CURR='HO_APP')
267
		BEGIN
268
			IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE')
269
			BEGIN
270
				ROLLBACK TRANSACTION
271
				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 
272
				RETURN '-1'
273
			END 
274

    
275
			--kiểm tra đn có phải nvdv
276
			IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV')
277
			BEGIN
278
				ROLLBACK TRANSACTION
279
				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 
280
				RETURN '-1'
281
			END 
282
			
283
			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ý'
284
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HO_APP'
285
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
286
			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'
287
			IF(@PROCESS_NEXT='APPROVE')
288
			BEGIN
289
				SET @TYPEMAIL='APPROVE'
290
				UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='APPROVE', AUTH_STATUS='A'
291
				WHERE REQ_ID = @p_REQ_ID
292
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
293
					N' đã được xác nhận thành công. PYC công tác đã được hoàn thành'
294
			END	
295
			ELSE
296
			BEGIN
297
				SET @TYPEMAIL='SENDEMP'
298
				UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='HO_APP'
299
				WHERE REQ_ID = @p_REQ_ID
300
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
301
					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'
302
			END
303
			IF @@ERROR <> 0 GOTO ABORT
304
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
305
			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', 
306
			N' Hành Chính HO xử lý PYC công tác')
307
			SET @COMPLETE=1
308
		
309
		END
310
		ELSE IF(@PROCESS_CURR='MAKER_CONF')
311
		BEGIN
312
			IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE')
313
			BEGIN
314
				ROLLBACK TRANSACTION
315
				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 
316
				RETURN '-1'
317
			END 
318

    
319
			--kiểm tra đn có phải người tạo or người sử dụng
320
			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))
321
			BEGIN
322
				ROLLBACK TRANSACTION
323
				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 
324
				RETURN '-1'
325
			END 
326

    
327
			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'
328
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='MAKER_CONF'
329
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
330
			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'
331
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='MAKER_CONF'
332
			WHERE REQ_ID = @p_REQ_ID
333
			IF @@ERROR <> 0 GOTO ABORT
334
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
335
			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', 
336
			N' Người tạo chọn vé cho chuyến bay')
337
			SET @COMPLETE = 1
338
			SET @TYPEMAIL='SENDNVDV'
339
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
340
					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é'
341
		END
342
		ELSE IF(@PROCESS_CURR='HCHO_XL')
343
		BEGIN
344
			IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV')
345
			BEGIN
346
				ROLLBACK TRANSACTION
347
				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 
348
				RETURN '-1'
349
			END 
350
			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'
351
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HCHO_XL'
352
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
353
			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'
354
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='HCHO_XL'
355
			WHERE REQ_ID = @p_REQ_ID
356
			IF @@ERROR <> 0 GOTO ABORT
357
			SET @COMPLETE= 1
358
			SET @TYPEMAIL='NOFI'
359
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
360
			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', 
361
			N' Hành chính HO đặt vé thành công')
362
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
363
					N' đã được gửi thông báo thành công'
364
		END
365
    ELSE IF(@PROCESS_CURR='TRAIN_UPD')
366
		BEGIN
367
			
368
			IF NOT EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID='UPDATE')
369
			BEGIN
370
				ROLLBACK TRANSACTION
371
				SELECT '-1' Result, N'Bạn chưa cập nhật thông tin cho phiếu' ErrorDesc 
372
				RETURN '-1'
373
			END 
374

    
375
			--kiểm tra đn có phải người tạo or người sử dụng phiếu
376
			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))
377
			BEGIN
378
				ROLLBACK TRANSACTION
379
				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 
380
				RETURN '-1'
381
			END 
382

    
383
			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'
384
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='TRAIN_UPD'
385
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
386
      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'
387
			
388
			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
389
			WHERE REQ_ID = @p_REQ_ID
390
			IF @@ERROR <> 0 GOTO ABORT
391
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
392
			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', 
393
			N' Người tạo thay đổi lộ trình thành công')
394
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
395
					N' đã được gửi duyệt thành công'
396
		END
397
		ELSE IF(@PROCESS_CURR='MAKER_APP')
398
		BEGIN
399
			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))
400
			BEGIN
401
				ROLLBACK TRANSACTION
402
				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 
403
				RETURN '-1'
404
			END 
405
			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'
406
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='MAKER_APP'
407
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
408
			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'
409
			
410
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='MAKER_APP'
411
			WHERE REQ_ID = @p_REQ_ID
412
			IF @@ERROR <> 0 GOTO ABORT
413
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
414
			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', 
415
			N' Người tạo xác nhận hoàn tất chuyến đi')
416
			SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
417
					N' đã xác nhận hoàn tất chuyến công tác thành công'
418
			DECLARE @PROCESS_ID_OLD VARCHAR(10)
419
			IF(EXISTS(SELECT 1 FROM dbo.PL_PROCESS WHERE PROCESS_ID='UPDATE' AND REQ_ID=@p_REQ_ID))
420
			BEGIN
421
				SET @PROCESS_ID_OLD ='HOAPP'
422
--				INSERT INTO dbo.PL_REQUEST_PROCESS
423
--				(
424
--					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
425
--				)
426
--				VALUES
427
--				(   
428
--					@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
429
--				)
430
        --------------------------------LUONG GUI DUYET TRUONG PHONG--------------------------------
431
         IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID))
432
          BEGIN
433
            UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='TDV_APP'WHERE REQ_ID = @p_REQ_ID
434
            INSERT INTO dbo.PL_REQUEST_PROCESS
435
    				(
436
    					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
437
    				)
438
    				VALUES
439
    				(   
440
    					@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
441
    				)
442
            SET @TYPEMAIL = 'HOAPP'
443
    				SET @COMPLETE = 1
444
        	END
445
            --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
446
    		 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')))
447
    			BEGIN
448
      					INSERT INTO dbo.PL_REQUEST_PROCESS
449
      					(
450
      						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
451
      					)
452
      					VALUES
453
      					(   
454
    						  @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
455
    					  )
456
      					INSERT INTO dbo.PL_REQUEST_PROCESS
457
      					(
458
      						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
459
      					)
460
      					VALUES
461
      					(   
462
      						@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
463
      					)
464
              	INSERT INTO dbo.PL_REQUEST_PROCESS
465
        				(
466
        					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
467
        				)
468
        				VALUES
469
        				(   
470
        					@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
471
        				)
472
    					
473
              SET @TYPEMAIL='SIGN_APP'
474
      				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
475
      					N' đã được thay đổi thành công. Vui lòng đợi thư ký tổng giám đốc vị phê duyệt'
476
    				SET @COMPLETE = 1
477
    			END
478
    			-----------------TH gửi phê duyệt có cấp duyệt trung gian-----------
479
    		 ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL))
480
    			BEGIN
481
    				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)
482
    				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
483
    					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'
484
    				SET @IS_SIGN = 1
485
    				INSERT INTO dbo.PL_REQUEST_PROCESS
486
    				(
487
    					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
488
    				)
489
    				VALUES
490
    				(   
491
    					@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
492
    				)
493
            SET @TYPEMAIL='SIGN_APP'
494
            SET @IS_SIGN = 1
495
    			END
496
    		 IF(@COMPLETE <> 1)
497
    			BEGIN
498
    				IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK'))
499
    			  	BEGIN
500
    					INSERT INTO dbo.PL_REQUEST_PROCESS
501
    					(
502
    						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
503
    					)
504
    					VALUES
505
    					(   
506
    						@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
507
    					)
508
    				  END
509
    				ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV'))
510
    			  	BEGIN
511
      					INSERT INTO dbo.PL_REQUEST_PROCESS
512
      					(
513
      						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
514
      					)
515
      					VALUES
516
      					(   
517
      						@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
518
      					)
519
    				  END
520
    				ELSE 
521
      				BEGIN
522
      					INSERT INTO dbo.PL_REQUEST_PROCESS
523
      					(
524
      						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
525
      					)
526
      					VALUES
527
      					(   
528
      						@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
529
      					)
530
                
531
      				END
532

    
533
            INSERT INTO dbo.PL_REQUEST_PROCESS
534
    				(
535
    					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
536
    				)
537
    				VALUES
538
    				(   
539
    					@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
540
    				)
541
            SET @COMPLETE = 1
542
            IF(@TYPEMAIL IS NULL OR @TYPEMAIL ='')
543
            BEGIN
544
              SET @TYPEMAIL='TDV_APP'
545
      				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
546
      					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'
547
            END
548
    			END
549
--      end
550
			
551
			END
552
			ELSE
553
			BEGIN
554
				SET @PROCESS_ID_OLD ='MAKER_APP'
555
				SET @TYPEMAIL ='APPROVE'
556
				UPDATE TR_REQUEST_JOB_FORM 
557
				SET AUTH_STATUS = 'A',PROCESS_ID='APPROVE',CHECKER_ID = @p_CHECKER_ID,
558
					APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
559
				WHERE REQ_ID = @p_REQ_ID
560
			END
561
		
562
		INSERT INTO dbo.PL_REQUEST_PROCESS
563
		(
564
			REQ_ID,PROCESS_ID,STATUS,ROLE_USER,BRANCH_ID,CHECKER_ID,APPROVE_DT,PARENT_PROCESS_ID,IS_LEAF,NOTES
565
		)
566
		VALUES
567
		(   
568
			@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'
569
		)
570

    
571
		END
572
		ELSE IF(@PROCESS_CURR='HOAPP')
573
		BEGIN
574
			IF NOT EXISTS(SELECT 1 FROM [dbo].[TL_USER_GET_ROLES](@p_CHECKER_ID) WHERE ROLE_ID='NVDV')
575
			BEGIN
576
				ROLLBACK TRANSACTION
577
				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 
578
				RETURN '-1'
579
			END
580
			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'
581
			WHERE REQ_ID=@p_REQ_ID AND [STATUS]='C' AND PROCESS_ID='HOAPP'
582
			UPDATE PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS ='U'
583
			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'
584
			
585
			UPDATE TR_REQUEST_JOB_FORM SET PROCESS_ID='APPROVE',AUTH_STATUS='A',CHECKER_ID=@p_CHECKER_ID
586
			WHERE REQ_ID = @p_REQ_ID
587
			IF @@ERROR <> 0 GOTO ABORT
588

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

    
607
			SET @COMPLETE=1
608
			SET @TYPEMAIL='CANCEL'
609

    
610
			IF(EXISTS (SELECT 1 FROM CM_REJECT_LOG WHERE TRN_ID = @p_REQ_ID))
611
			BEGIN
612
				UPDATE CM_REJECT_LOG SET IS_LATEST ='N' WHERE TRN_ID =@p_REQ_ID
613
			END
614
			EXEC SYS_CodeMasters_Gen 'CM_REJECT_LOG', @p_LOG_ID out
615
			IF @p_LOG_ID='' OR @p_LOG_ID IS NULL GOTO ABORT
616
			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))
617
			UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P' WHERE REQ_ID=@p_REQ_ID AND STATUS ='C' 
618
			DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS ='U'
619
			INSERT INTO dbo.PL_REQUEST_PROCESS
620
			(
621
			    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
622
			)
623
			VALUES
624
			(   
625
				@p_REQ_ID,'CANCEL','C','','','',GETDATE(),'','','','',N'',NULL,'', ''
626
			)
627
			-- insert log
628
			INSERT INTO dbo.PL_PROCESS
629
			(
630
				REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
631
			)
632
			VALUES
633
			(  
634
				@p_REQ_ID,'CANCEL',@p_CHECKER_ID,CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_NOTES,N'Hủy phiếu thành công'
635
			)
636
			DECLARE @REQ_CAR_ID VARCHAR(20)
637
			SELECT @REQ_CAR_ID=REQ_CAR_ID FROM dbo.TR_REQUEST_JOB_FORM WHERE REQ_ID=@p_REQ_ID
638
			IF(@REQ_CAR_ID IS NOT NULL)
639
			BEGIN
640
				UPDATE dbo.TR_REQUEST_CAR SET AUTH_STATUS='D' WHERE REQ_ID=@REQ_CAR_ID
641
			END
642
        SET @NOTIFATION =N'Phiếu yêu cầu công tác số: '+ @REQ_CODE+N' đã bị hủy'
643
	END
644
	ELSE IF(@p_TYPE_PROCESS='TRAIN_UPD')
645
	BEGIN
646
		INSERT INTO dbo.PL_PROCESS
647
		(
648
		    REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
649
		)
650
		VALUES
651
		(   
652
			@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'
653
		)
654
		UPDATE dbo.TR_REQUEST_JOB_FORM SET PROCESS_ID ='TRAIN_UPD' WHERE REQ_ID=@p_REQ_ID 
655
		/* declare variables */
656

    
657
		DECLARE
658
			@FROM_TRAIN		VARCHAR(15),
659
			@TO_TRAIN		VARCHAR(15),
660
			@VEHICLE_TYPE	VARCHAR(15),
661
			@CONSIGNMENT	VARCHAR(5)
662

    
663
		DECLARE @lstID TABLE(
664
			TRAIN_ID		VARCHAR(15)
665
		)
666

    
667
		DECLARE @lstRJT TABLE(
668
				FROM_TRAIN		VARCHAR(15),
669
				TO_TRAIN		VARCHAR(15),
670
				VEHICLE_TYPE	VARCHAR(15),
671
				CONSIGNMENT		VARCHAR(5)
672
			)
673

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

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

    
704
		
705
		INSERT INTO dbo.PL_REQUEST_PROCESS
706
		(
707
			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
708
		)
709
		VALUES
710
		(   
711
			@p_REQ_ID,'TRAIN_UPD','C',@MAKER_ID,'','','','HCHO_XL','N','','',N'Chờ người tạo thay đổi thông tin',NULL,''
712
		)
713
    --------------------------------LUONG GUI DUYET TRUONG PHONG--------------------------------
714
     IF(EXISTS(SELECT 1 FROM CM_ALLCODE WHERE CDTYPE='REQ' AND CDNAME='CT_PASS' AND CDVAL=@EMP_ID))
715
      BEGIN
716
          	
717
    			  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
718
					
719
    				IF(@REQ_TYPE_BOOKING_AIR='AIR_B')
720
    				BEGIN
721
    					SET @TYPEMAIL='SENDHO'
722
    					INSERT INTO dbo.PL_REQUEST_PROCESS
723
    					(
724
    						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
725
    					)
726
    					VALUES
727
    					(   
728
    						@p_REQ_ID,'HO_APP','U','NVDV',@BRANCH_CREATE,'',NULL,'TRAIN_UPD','N','','',N'Chờ Hành chính HO xử lý',NULL,''
729
    					)
730
    
731
    					INSERT INTO dbo.PL_REQUEST_PROCESS
732
    					(
733
    						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
734
    					)
735
    					VALUES
736
    					(   
737
    						@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,''
738
    					)
739
    					INSERT INTO dbo.PL_REQUEST_PROCESS
740
    					(
741
    						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
742
    					)
743
    					VALUES
744
    					(   
745
    						@p_REQ_ID,'HCHO_XL','U','NVDV',@BRANCH_CREATE,'',NULL,'MAKER_CONF','N','','', N'Chờ Hành chính HO xử lý',NULL,'' 
746
    					)
747
    					INSERT INTO dbo.PL_REQUEST_PROCESS
748
    					(
749
    						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
750
    					)
751
    					VALUES
752
    					(   
753
    						@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,'' 
754
    					)
755
    			END
756
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
757
					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'
758
				SET @COMPLETE = 1
759
    		END
760
        --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
761
			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')))
762
			BEGIN
763
					INSERT INTO dbo.PL_REQUEST_PROCESS
764
					(
765
						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
766
					)
767
					VALUES
768
					(   
769
						@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
770
					 )
771
					INSERT INTO dbo.PL_REQUEST_PROCESS
772
					(
773
						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
774
					)
775
					VALUES
776
					(   
777
						@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
778
					)
779
					UPDATE dbo.TR_REQUEST_JOB_FORM SET SIGN_USER='TKTGD' WHERE REQ_ID =@p_REQ_ID
780
          SET @TYPEMAIL='SEND'
781
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
782
					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'
783
				SET @COMPLETE = 1
784
			END
785
			-----------------TH gửi phê duyệt có cấp duyệt trung gian-----------
786
			ELSE IF(EXISTS(SELECT 1 FROM TR_REQUEST_JOB_FORM WHERE REQ_ID = @p_REQ_ID AND SIGN_USER IS NOT NULL))
787
			BEGIN
788
				
789
				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)
790
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
791
					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'
792
				SET @IS_SIGN = 1
793
				INSERT INTO dbo.PL_REQUEST_PROCESS
794
				(
795
					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
796
				)
797
				VALUES
798
				(   
799
					@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
800
				)
801
        SET @TYPEMAIL='SEND'
802
			END
803
			IF(@COMPLETE <> 1)
804
			BEGIN
805
				IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDK'))
806
				BEGIN
807
					INSERT INTO dbo.PL_REQUEST_PROCESS
808
					(
809
						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
810
					)
811
					VALUES
812
					(   
813
						@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
814
					)
815
				END
816
				ELSE IF(EXISTS(SELECT 1 FROM dbo.TL_USER_GET_ROLES(@EMP_ID)WHERE ROLE_ID ='GDDV'))
817
				BEGIN
818
					INSERT INTO dbo.PL_REQUEST_PROCESS
819
					(
820
						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
821
					)
822
					VALUES
823
					(   
824
						@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
825
					)
826
				END
827
				ELSE 
828
				BEGIN
829
					INSERT INTO dbo.PL_REQUEST_PROCESS
830
					(
831
						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
832
					)
833
					VALUES
834
					(   
835
						@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
836
					)
837
				END
838
				SET @NOTIFATION = N'PYC công tác số: ' +@REQ_CODE+
839
					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'
840
        SET @COMPLETE = 1
841
        SET @TYPEMAIL = 'TRAIN_UPD'
842
			END
843
	END
844

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

    
857

    
858

    
859

    
860

    
861

    
862

    
863

    
864
GO