Project

General

Profile

TR_REQUEST_CAR_SendApp.txt

Luc Tran Van, 02/25/2023 01:14 PM

 
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
    UPDATE TR_REQUEST_CAR 
13
    SET MAKER_PHONE=(SELECT EMP_PHONE FROM TR_REQUEST_JOB_FORM WHERE REQ_CAR_ID=@p_REQ_ID)
14
    WHERE REQ_ID=@p_REQ_ID
15

    
16
	
17
	IF(@p_Pro_ID IN('INSERT','REJECT'))
18
		BEGIN
19
			IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS='R'))
20
			BEGIN
21
				ROLLBACK TRANSACTION
22
				SELECT '-1' Result, N'Phiếu yêu cầu xe số: '+@p_REQ_CODE+
23
				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
24
				RETURN '-1'
25
			END
26
			UPDATE PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE'
27
			DELETE dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='R'
28
			IF(EXISTS(SELECT 1 FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND IS_SEND_APPR='Y'))
29
				BEGIN
30
					ROLLBACK TRANSACTION
31
					SELECT '-1' Result,'' REQ_CODE, '' REQ_ID, N'Phiếu yêu cầu xe đã được gửi phê duyệt trước đó' ErrorDesc 
32
					RETURN '-1'
33
			END
34
			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'
35
			WHERE REQ_ID = @p_REQ_ID
36
			IF @@ERROR <> 0 GOTO ABORT
37

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

    
89
			IF(@p_USER IS NULL)
90
			BEGIN
91
				ROLLBACK TRANSACTION
92
				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
93
				RETURN '-1'
94
			END
95

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

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

    
105
			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
106
			
107
			SET @p_Process_ID='CV_SEND'
108

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

    
135
		END
136

    
137
	ELSE IF(@p_Pro_ID ='CV_SEND')
138
		BEGIN
139
--			DECLARE @N_PLATE VARCHAR(20), @CREATE_DT DATETIME
140
--			DECLARE @LSTREQCAR TABLE(REQ_ID VARCHAR(20),REQ_CODE VARCHAR(20),PROCESS_ID VARCHAR(15),CREATE_DT DATETIME)
141
--			SELECT @N_PLATE=N_PLATE,@CREATE_DT=CREATE_DT FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID
142
--			INSERT INTO @LSTREQCAR 
143
--			SELECT REQ_ID,REQ_CODE,PROCESS_ID,CREATE_DT
144
--			FROM dbo.TR_REQUEST_CAR 
145
--			WHERE N_PLATE= @N_PLATE AND DATEDIFF(second,CREATE_DT , @CREATE_DT)>0 AND REQ_ID<>@p_REQ_ID AND AUTH_STATUS='U'
146
--			ORDER BY CREATE_DT DESC
147
			
148
--			IF(EXISTS(SELECT 1 FROM @LSTREQCAR))
149
--			BEGIN
150
--				IF(EXISTS(SELECT 1 FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND')))
151
--				BEGIN
152
--					ROLLBACK TRANSACTION
153
--					SELECT '-1' Result, N'Vui lòng xử lý PYC xe số: '+
154
--					(SELECT TOP(1)REQ_CODE FROM @LSTREQCAR WHERE PROCESS_ID IN('USER_UPD','CV_SEND') ORDER BY CREATE_DT)+N' trước' ErrorDesc
155
--					RETURN '-1'
156
--				END
157
--				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)))
158
--				BEGIN
159
--				ROLLBACK TRANSACTION
160
--					SELECT '-1' Result, N'Phiếu yêu cầu xe số : '+
161
--					(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
162
--					RETURN '-1'
163
--				END
164
--
165
--				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'))
166
--				BEGIN
167
--				SELECT * FROM CAR_DRIVE A JOIN @LSTREQCAR B ON  A.REQ_CAR_ID = B.REQ_ID WHERE A.AUTH_STATUS='U'
168
--				ROLLBACK TRANSACTION
169
--					SELECT '-1' Result, N'Thông tin vận hành số có mã phiếu yêu cầu : '+
170
--					(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
171
--					RETURN '-1'
172
--				END
173
--			END
174

    
175
			DECLARE @USER_UPD VARCHAR(20)
176
			SET @USER_UPD = (SELECT TOP(1) 1 FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN)
177
			DECLARE @ID VARCHAR(20)
178
      --Trường hợp chuyên viên thay tài xế cập nhật chuyển phiếu
179
			IF(EXISTS(SELECT TOP(1) 1 FROM dbo.TL_USER_GET_ROLES (@p_USER_LOGIN)fgubr WHERE fgubr.ROLE_ID='CVDDX'))
180
				BEGIN 
181
					UPDATE TR_REQUEST_CAR 
182
					SET PROCESS_ID='MAKER_APP'
183
					WHERE REQ_ID = @p_REQ_ID
184
					IF @@ERROR <> 0 GOTO ABORT
185

    
186
					SET @p_Process_ID='MAKER_APP' 
187

    
188
					UPDATE PL_PROCESS SET PROCESS_ID='USERUPD' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='USER_UPD'
189
					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í'
190

    
191
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE REQ_ID=@p_REQ_ID AND STATUS_JOB='C' AND TYPE_JOB='XL'
192
					UPDATE PL_REQUEST_PROCESS
193
					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'
194
					WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL'
195
					
196
					INSERT INTO dbo.PL_REQUEST_PROCESS
197
					(
198
						REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, CHECKER_ID, APPROVE_DT,
199
						PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID,NOTES, IS_HAS_CHILD
200
					)
201
					VALUES
202
					(   
203
						@p_REQ_ID,'MAKER_APP', 'C',(SELECT MAKER_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID), '','','',NULL,'CV_XL','N','', '',
204
						N'Chờ người tạo xác nhận chi phí',0
205
					)
206
					INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
207
						VALUES(@p_REQ_ID, 'CV_XL', @p_USER_LOGIN, GETDATE(), 
208
								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í')
209
				END
210
			ELSE
211
				BEGIN
212
					UPDATE TR_REQUEST_CAR 
213
					SET PROCESS_ID='USER_SEND'
214
					WHERE REQ_ID = @p_REQ_ID
215
					IF @@ERROR <> 0 GOTO ABORT
216

    
217
					UPDATE PL_PROCESS SET PROCESS_ID='UPDATE_NT' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE'
218
					SET @p_MESSAGE = N'PYC xe số: ' +@p_REQ_CODE+ N' đã được gửi đến chuyên viên thành công'
219
					SELECT @ID=ID FROM PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID='CV_XL'
220
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P' WHERE PROCESS_ID=@ID AND STATUS_JOB='C' AND TYPE_JOB='XL'
221
					UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C' WHERE PROCESS_ID=@ID AND STATUS_JOB='P' AND TYPE_JOB='CV'
222
					SET @p_Process_ID='USER_SEND'
223
					INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
224
						VALUES(@p_REQ_ID, 'USER_SEND', @p_USER_LOGIN, GETDATE(), 
225
								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')
226
				END
227
		END
228

    
229

    
230
COMMIT TRANSACTION
231
SELECT '0' AS Result, @p_REQ_ID REQ_ID ,@p_Process_ID PROCESS_ID,@p_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc
232
RETURN '0'
233

    
234
ABORT:
235
BEGIN
236
	ROLLBACK TRANSACTION
237
	SELECT '-1' AS Result, '' REQ_ID ,'' IS_SEND_APPR, '' ErrorDesc
238
	RETURN '-1'
239
END
240