Project

General

Profile

TR_REQUEST_CAR_SendApp1.txt

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

    
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

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

    
191
					SET @p_Process_ID='MAKER_APP' 
192

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

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

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

    
234

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

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

    
246

    
247

    
248

    
249

    
250