Project

General

Profile

TR_REQUEST_CAR_SendApp.txt

Luc Tran Van, 03/01/2023 01:50 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

    
13
    
14

    
15
	
16
	IF(@p_Pro_ID IN('INSERT','REJECT'))
17
		BEGIN
18
            UPDATE A SET  A.BRANCH_ID= B.BRANCH_CREATE, A.DEP_ID=B.DEP_CREATE,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
			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
92

    
93
			IF(@p_USER IS NULL)
94
			BEGIN
95
				ROLLBACK TRANSACTION
96
				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
97
				RETURN '-1'
98
			END
99

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

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

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

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

    
140

    
141
		END
142

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

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

    
192
					SET @p_Process_ID='MAKER_APP' 
193

    
194
					UPDATE PL_PROCESS SET PROCESS_ID='USERUPD' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='USER_UPD'
195
					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í'
196

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

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

    
235

    
236
COMMIT TRANSACTION
237
SELECT '0' AS Result, @p_REQ_ID REQ_ID ,@p_Process_ID PROCESS_ID,@p_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc
238
RETURN '0'
239

    
240
ABORT:
241
BEGIN
242
	ROLLBACK TRANSACTION
243
	SELECT '-1' AS Result, '' REQ_ID ,'' IS_SEND_APPR, '' ErrorDesc
244
	RETURN '-1'
245
END
246

    
247

    
248

    
249

    
250

    
251

    
252