Project

General

Profile

TR_REQUEST_CAR_SendApp.txt

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

 
1

    
2
ALTER PROCEDURE dbo.TR_REQUEST_CAR_SendApp
3
	@p_REQ_ID VARCHAR(15) = NULL,
4
	@p_USER_LOGIN VARCHAR(15)=NULL,
5
	@p_SEND_APPR_DT VARCHAR(20) = NULL
6
AS
7
BEGIN TRANSACTION 
8
	
9
	DECLARE @p_MESSAGE NVARCHAR(500),@p_Pro_ID VARCHAR(20), @p_Process_ID NVARCHAR(15),@p_REQ_CODE VARCHAR(20)
10
	SELECT @p_Pro_ID= PROCESS_ID,@p_REQ_CODE=REQ_CODE FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID
11

    
12

    
13
    
14

    
15
	
16
	IF(@p_Pro_ID IN('INSERT','REJECT'))
17
		BEGIN
18
            UPDATE A SET A.MAKER_PHONE=B.EMP_PHONE,A.MAKER_ID=B.EMP_ID
19
            FROM TR_REQUEST_CAR A
20
            LEFT JOIN (SELECT * FROM  TR_REQUEST_JOB_FORM WHERE REQ_CAR_ID=@p_REQ_ID) B ON A.REQ_ID = B.REQ_CAR_ID
21
            WHERE a.REQ_ID=@p_REQ_ID
22

    
23
			IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS='R'))
24
			BEGIN
25
				ROLLBACK TRANSACTION
26
				SELECT '-1' Result, N'Phiếu yêu cầu xe số: '+@p_REQ_CODE+
27
				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
28
				RETURN '-1'
29
			END
30
			UPDATE PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE'
31
			DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='R'
32
			IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND IS_SEND_APPR='Y'))
33
				BEGIN
34
					ROLLBACK TRANSACTION
35
					SELECT '-1' Result,'' REQ_CODE, '' REQ_ID, N'Phiếu yêu cầu xe đã được gửi phê duyệt trước đó' ErrorDesc 
36
					RETURN '-1'
37
			END
38
			UPDATE TR_REQUEST_CAR SET IS_SEND_APPR = 'Y', SEND_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103),SENDER_ID=@p_USER_LOGIN,AUTH_STATUS='U',PROCESS_ID='APPNEW'
39
			WHERE REQ_ID = @p_REQ_ID
40
			IF @@ERROR <> 0 GOTO ABORT
41

    
42
			DECLARE @p_IS_SEND_APPR VARCHAR(15) = 'Y'
43
			DECLARE @DEP_CREATE VARCHAR(15), @BRANCH_CREATE VARCHAR(15)
44
			SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_ID
45
			SET @p_Process_ID='SEND'	
46
			-----------------Gửi phê duyệt lên trưởng DV------
47
				SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+
48
					N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt'
49
			------Insert vào bảng lịch sử xử lý-------------
50
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
51
				VALUES(@p_REQ_ID, 'SEND', @p_USER_LOGIN, GETDATE(), 
52
						N'Người tạo gửi phê duyệt thành công', N' Người tạo gửi phê duyệt')
53
			IF @@ERROR <> 0 GOTO ABORT
54
			INSERT INTO dbo.PL_REQUEST_PROCESS
55
			(REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT,
56
				PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD)
57
			VALUES
58
			(   @p_REQ_ID,'APPNEW', 'C','GDDV', @BRANCH_CREATE,IIF(@BRANCH_CREATE='DV0001',@DEP_CREATE,''),'',NULL,NULL,'N','', '',
59
				N'Chờ trưởng đơn vị phê duyệt',NULL
60
			)
61
		END
62
--	ELSE IF(@p_Pro_ID ='CV_SEND' AND EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN))
63
--		BEGIN
64
--			SET @p_MESSAGE = N'PYC xe số: ' +ISNULL(@p_REQ_CODE,'')+
65
--					N' đã được gửi xác nhận thông tin thành công. Vui lòng đợi người tạo xác nhận'
66
--			UPDATE TR_REQUEST_CAR 
67
--			SET PROCESS_ID='MAKER_APP'
68
--			WHERE REQ_ID = @p_REQ_ID
69
--			SET @p_Process_ID='MAKER_APP'
70
--			IF @@ERROR <> 0 GOTO ABORT
71
--			
72
--            UPDATE PL_REQUEST_PROCESS SET CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),IS_HAS_CHILD='1',NOTES=N'Đã điều phối nhân viên lái xe' WHERE ID=@PRO_ID
73
--           
74
--			INSERT INTO dbo.PL_REQUEST_PROCESS
75
--			(
76
--				REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT,
77
--				PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD
78
--			)
79
--			VALUES	
80
--			(   
81
--				@p_REQ_ID,'MAKER_APP', 'C','','',CONVERT(DATETIME,GETDATE(),103),'','','', '',
82
--				N'Chờ người tạo xác nhận thông tin','0' 
83
--			)
84
--			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
85
--				VALUES(@p_REQ_ID, 'CV_SEND', @p_USER_LOGIN, GETDATE(), 
86
--						N'Chuyên viên điều động xe gửi xác nhận chi phí thành công', N' Chuyên viên điều động xe chuyển phiếu cho người tạo')
87
--		END
88
	ELSE IF(@p_Pro_ID IN('CVREJUPD','COSTREJECT','CV_XL'))
89
		BEGIN
90
			DECLARE @p_USER NVARCHAR(50)
91

    
92
			IF(EXISTS(SELECT * FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND (USER_UPDATE IS NULL OR USER_UPDATE ='')))
93
			BEGIN
94
				ROLLBACK TRANSACTION
95
				SELECT '-1' Result, N'Chuyển phiếu thất bại! Bạn cần chọn người nhập thông tin chuyến về' ErrorDesc
96
				RETURN '-1'
97
			END
98

    
99
			
100
			
101
			UPDATE TR_REQUEST_CAR 
102
			SET PROCESS_ID='CV_SEND'
103
			WHERE REQ_ID = @p_REQ_ID
104
			IF @@ERROR <> 0 GOTO ABORT
105

    
106
			SELECT @p_USER=B.TLFullName FROM dbo.TR_REQUEST_CAR A JOIN dbo.TL_USER B ON A.USER_UPDATE=B.TLNANME WHERE REQ_ID=@p_REQ_ID
107
			
108
			SET @p_Process_ID='CV_SEND'
109

    
110
			INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
111
				VALUES(@p_REQ_ID, 'CV_XL', @p_USER_LOGIN, GETDATE(), 
112
						N'Chuyên viên điều phối xử lý', N' Nhân viên tiếp nhận '+@p_USER)
113
			DECLARE @PRO_ID VARCHAR(20),@USER VARCHAR(50)
114
			SELECT @USER=USER_UPDATE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID
115
			SELECT @PRO_ID=ID FROM PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL'
116
			UPDATE PL_REQUEST_PROCESS SET CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),IS_HAS_CHILD='1',NOTES=N'Đã điều phối nhân viên lái xe' WHERE ID=@PRO_ID
117
			DELETE PL_REQUEST_PROCESS_CHILD Where REQ_ID=@p_REQ_ID
118
			INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
119
			(
120
				REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS
121
			)
122
			VALUES
123
			(   
124
				@p_REQ_ID,@PRO_ID,@p_USER_LOGIN,'CV',1,'P','1'
125
			)
126
			
127
			INSERT INTO dbo.PL_REQUEST_PROCESS_CHILD
128
			(
129
				REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS
130
			)
131
			VALUES
132
			(   
133
				@p_REQ_ID,@PRO_ID,@USER,'XL',2,'C','1'  
134
			)
135

    
136
            SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+
137
					N' đã được gửi đến tài xế thành công'
138

    
139

    
140
		END
141

    
142
	ELSE IF(@p_Pro_ID ='CV_SEND')
143
		BEGIN
144
--			DECLARE @N_PLATE VARCHAR(20), @CREATE_DT DATETIME
145
--			DECLARE @LSTREQCAR TABLE(REQ_ID VARCHAR(20),REQ_CODE VARCHAR(20),PROCESS_ID VARCHAR(15),CREATE_DT DATETIME)
146
--			SELECT @N_PLATE=N_PLATE,@CREATE_DT=CREATE_DT FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID
147
--			INSERT INTO @LSTREQCAR 
148
--			SELECT REQ_ID,REQ_CODE,PROCESS_ID,CREATE_DT
149
--			FROM dbo.TR_REQUEST_CAR 
150
--			WHERE N_PLATE= @N_PLATE AND DATEDIFF(second,CREATE_DT , @CREATE_DT)>0 AND REQ_ID<>@p_REQ_ID AND AUTH_STATUS='U'
151
--			ORDER BY CREATE_DT DESC
152
			
153
--			IF(EXISTS(SELECT 1 FROM @LSTREQCAR))
154
--			BEGIN
155
--				IF(EXISTS(SELECT 1 FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND')))
156
--				BEGIN
157
--					ROLLBACK TRANSACTION
158
--					SELECT '-1' Result, N'Vui lòng xử lý PYC xe số: '+
159
--					(SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND') ORDER BY CREATE_DT)+N' trước' ErrorDesc
160
--					RETURN '-1'
161
--				END
162
--				ELSE IF(EXISTS(SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE REQ_ID NOT IN (SELECT A.REQ_ID FROM @LSTREQCAR A JOIN CAR_DRIVE B ON B.REQ_CAR_ID=A.REQ_ID)))
163
--				BEGIN
164
--				ROLLBACK TRANSACTION
165
--					SELECT '-1' Result, N'Phiếu yêu cầu xe số : '+
166
--					(SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE REQ_ID NOT IN (SELECT A.REQ_ID FROM @LSTREQCAR A JOIN CAR_DRIVE B ON B.REQ_CAR_ID=A.REQ_ID))+N' không tồn tại trong thông tin vận hành. Vui lòng thêm mới' ErrorDesc
167
--					RETURN '-1'
168
--				END
169
--
170
--				ELSE IF(EXISTS(SELECT TOP(1)B.REQ_CODE FROM CAR_DRIVE A JOIN @LSTREQCAR B ON  A.REQ_CAR_ID = B.REQ_ID WHERE A.AUTH_STATUS='U'))
171
--				BEGIN
172
--				SELECT * FROM CAR_DRIVE A JOIN @LSTREQCAR B ON  A.REQ_CAR_ID = B.REQ_ID WHERE A.AUTH_STATUS='U'
173
--				ROLLBACK TRANSACTION
174
--					SELECT '-1' Result, N'Thông tin vận hành số có mã phiếu yêu cầu : '+
175
--					(SELECT TOP(1)B.REQ_CODE FROM CAR_DRIVE A JOIN @LSTREQCAR B ON  A.REQ_CAR_ID = B.REQ_ID WHERE A.AUTH_STATUS='U')+N' chưa được duyệt' ErrorDesc
176
--					RETURN '-1'
177
--				END
178
--			END
179
			IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND (MILRAGE_RETURN_TRIP IS NULL OR MILRAGE_RETURN_TRIP ='')))
180
			BEGIN
181
				ROLLBACK TRANSACTION
182
				SELECT '-1' Result, N'Thao tác thất bại! Bạn chưa nhập thông tin số KM hiện tại về' ErrorDesc
183
				RETURN '-1'
184
			END
185

    
186
			DECLARE @USER_UPD VARCHAR(20)
187
			SET @USER_UPD = (SELECT TOP(1) 1 FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN)
188
			DECLARE @ID VARCHAR(20)
189
      --Trường hợp chuyên viên thay tài xế cập nhật chuyển phiếu
190
			IF(EXISTS(SELECT TOP(1) 1 FROM dbo.TL_USER_GET_ROLES (@p_USER_LOGIN)fgubr WHERE fgubr.ROLE_ID='CVDDX'))
191
				BEGIN 
192
					UPDATE TR_REQUEST_CAR 
193
					SET PROCESS_ID='MAKER_APP'
194
					WHERE REQ_ID = @p_REQ_ID
195
					IF @@ERROR <> 0 GOTO ABORT
196

    
197
					SET @p_Process_ID='MAKER_APP' 
198

    
199
					UPDATE PL_PROCESS SET PROCESS_ID='USERUPD' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='USER_UPD'
200
					SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+ N' đã được gửi đến chuyên viên xử lý thành công. Chờ người tạo xác nhận chi phí'
201

    
202
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND STATUS_JOB='C' AND TYPE_JOB='XL'
203
					UPDATE PL_REQUEST_PROCESS
204
					SET STATUS='P',CHECKER_ID=@p_USER_LOGIN,APPROVE_DT=GETDATE(),NOTES=N'Chuyên viên điều động xe xử lý thành công'
205
					WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL'
206
					
207
					INSERT INTO dbo.PL_REQUEST_PROCESS
208
					(
209
						REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT,
210
						PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD
211
					)
212
					VALUES
213
					(   
214
						@p_REQ_ID,'MAKER_APP', 'C',(SELECT MAKER_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID), '','','',NULL,'CV_XL','N','', '',
215
						N'Chờ người tạo xác nhận chi phí',0
216
					)
217
					INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
218
						VALUES(@p_REQ_ID, 'CV_XL', @p_USER_LOGIN, GETDATE(), 
219
								N'Chuyên viên gửi xác nhận chi phí thành công', N' Chuyên viên gửi xác nhận chi phí')
220
				END
221
			ELSE
222
				BEGIN
223
					UPDATE TR_REQUEST_CAR 
224
					SET PROCESS_ID='USER_SEND'
225
					WHERE REQ_ID = @p_REQ_ID
226
					IF @@ERROR <> 0 GOTO ABORT
227

    
228
					UPDATE PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE'
229
					SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+ N' đã được gửi đến chuyên viên thành công'
230
					SELECT @ID=ID FROM PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL'
231
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE PROCESS_ID=@ID AND STATUS_JOB='C' AND TYPE_JOB='XL'
232
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE PROCESS_ID=@ID AND STATUS_JOB='P' AND TYPE_JOB='CV'
233
					SET @p_Process_ID='USER_SEND'
234
					INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
235
						VALUES(@p_REQ_ID, 'USER_SEND', @p_USER_LOGIN, GETDATE(), 
236
								N'Nhân viên lái xe chuyển phiếu chuyên viên điều động xe thành công', N' Nhân viên lái xe chuyển phiếu chuyên viên điều động xe')
237
				END
238
		END
239

    
240

    
241
COMMIT TRANSACTION
242
SELECT '0' AS Result, @p_REQ_ID REQ_ID ,@p_Process_ID PROCESS_ID,@p_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc
243
RETURN '0'
244

    
245
ABORT:
246
BEGIN
247
	ROLLBACK TRANSACTION
248
	SELECT '-1' AS Result, '' REQ_ID ,'' IS_SEND_APPR, '' ErrorDesc
249
	RETURN '-1'
250
END
251