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
|
|