1
|
UPDATE dbo.CM_ALLCODE SET CONTENT=N'Căn cứ Quyết định 166/2020/QĐ-HC ngày 21/5/2020 về việc Ban hành Quy định mua sắm hàng hóa dịch vụ; Căn cứ nhu cầu mua sắm thực tế' WHERE CDTYPE='TR' AND CDNAME='PL_BASED'
|
2
|
|
3
|
ALTER PROC [dbo].[TR_REQUEST_CAR_Upd]
|
4
|
@p_REQ_ID varchar(15) =NULL,
|
5
|
@p_REQ_CODE varchar(150) = NULL,
|
6
|
@p_EMP_ID varchar(15) = NULL,
|
7
|
@p_EMP_PHONE varchar(15) = NULL,
|
8
|
@p_BRANCH_ID varchar(15) = NULL,
|
9
|
@p_BRANCH_CREATE varchar(15) = NULL,
|
10
|
@p_DEP_ID varchar(15) = NULL,
|
11
|
@p_DEP_CREATE varchar(15) = NULL,
|
12
|
@p_ORIGN nvarchar(100) = NULL,
|
13
|
@p_DESTINATION nvarchar(100) = NULL,
|
14
|
@p_IS_SEND_APPR varchar(15) = NULL,
|
15
|
@p_SEND_APPR_DT varchar(20) = NULL,
|
16
|
@p_SIGN_USER varchar(15) = NULL,
|
17
|
@p_SIGN_DT varchar(20) = NULL,
|
18
|
@p_FROM_DATE varchar(20) = NULL,
|
19
|
@p_REQ_DT varchar(20) = NULL,
|
20
|
@p_TO_DATE varchar(20) = NULL,
|
21
|
@p_NOTES nvarchar(MAX) = NULL,
|
22
|
@p_CAR_ID varchar(15) = NULL,
|
23
|
@p_DRIVER_ID varchar(15) = NULL,
|
24
|
@p_DRIVER_PHONE varchar(15) = NULL,
|
25
|
@p_QUANTITY_TRIP int = NULL,
|
26
|
@p_NOTES_TRIP nvarchar(MAX) = NULL,
|
27
|
@p_UNIT_TRIP varchar(5) = NULL,
|
28
|
@p_TO_TRIP nvarchar(100) = NULL,
|
29
|
@p_FROM_TRIP nvarchar(100) = NULL,
|
30
|
@p_MILRAGE_TRIP int = NULL,
|
31
|
@p_START_TIME_TRIP varchar(20) = NULL,
|
32
|
@p_QUANTITY_RETURN_TRIP int = NULL,
|
33
|
@p_NOTES_RETURN_TRIP varchar(MAX) = NULL,
|
34
|
@p_UNIT_RETURN_TRIP varchar(5) = NULL,
|
35
|
@p_TO_RETURN_TRIP nvarchar(100) = NULL,
|
36
|
@p_FROM_RETURN_TRIP nvarchar(100) = NULL,
|
37
|
@p_MILRAGE_RETURN_TRIP int = NULL,
|
38
|
@p_START_TIME_RETURN_TRIP varchar(20) = NULL,
|
39
|
@p_AUTH_STATUS varchar(1) = NULL,
|
40
|
@p_APPROVE_DT varchar(20) = NULL,
|
41
|
@p_CREATE_DT varchar(20) = NULL,
|
42
|
@p_MAKER_ID varchar(20) = NULL,
|
43
|
@p_ListCarDT xml,
|
44
|
@p_USER_LOGIN varchar(20) = NULL,
|
45
|
@p_USER_UPDATE varchar(20) = NULL,
|
46
|
@p_N_PLATE varchar(20) = NULL,
|
47
|
@p_MO_NAME varchar(20) = NULL,
|
48
|
@p_LAST_BALANCE decimal(18,2)= NULL,
|
49
|
@p_FIRST_BALANCE decimal(18,2)= NULL,
|
50
|
@p_CURRENT_POWER_RATE decimal(18,2)= NULL,
|
51
|
@p_POWER_RATE decimal(18,2)= NULL,
|
52
|
@p_ListFuel xml,
|
53
|
@p_IS_CONTRACT_CAR varchar(1) = NULL,
|
54
|
@p_OLD_FUEL_NUMBER DECIMAL(18,2) = NULL
|
55
|
|
56
|
AS
|
57
|
|
58
|
BEGIN TRANSACTION
|
59
|
DECLARE @p_PROCESS_ID VARCHAR(20)
|
60
|
SELECT @p_PROCESS_ID=PROCESS_ID FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID
|
61
|
IF NOT EXISTS(SELECT * FROM TR_REQUEST_CAR WHERE REQ_ID <> @p_REQ_ID)
|
62
|
BEGIN
|
63
|
SELECT '0' Result, '' REQ_ID, N'Mã phiếu yêu cầu xe chưa tồn tại trong hệ thống' ErrorDesc
|
64
|
RETURN '0'
|
65
|
END
|
66
|
DECLARE @IS_SEND_APPR VARCHAR(1),@AUTH_STATUS VARCHAR(1)
|
67
|
IF(EXISTS(SELECT * FROM TR_REQUEST_CAR WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID IN ('REJECT','INSERT')))
|
68
|
BEGIN
|
69
|
UPDATE TR_REQUEST_CAR
|
70
|
SET EMP_ID=@p_EMP_ID,EMP_PHONE=@p_EMP_PHONE,BRANCH_ID=@p_BRANCH_ID,DEP_ID=@p_DEP_ID,ORIGN=@p_ORIGN,DESTINATION=@p_DESTINATION,AUTH_STATUS='U',REQ_DT=CONVERT(DATETIME,@p_REQ_DT,104),IS_SEND_APPR='N',FROM_DATE=CONVERT(DATETIME,@p_FROM_DATE,104),TO_DATE=CONVERT(DATETIME,@p_TO_DATE,104),NOTES=@p_NOTES,
|
71
|
QUANTITY_TRIP=@p_QUANTITY_TRIP,NOTES_TRIP=@p_NOTES_TRIP,UNIT_TRIP=@p_UNIT_TRIP,TO_TRIP=@p_TO_TRIP,FROM_TRIP=@p_FROM_TRIP,START_TIME_TRIP=CONVERT(DATETIME,@p_START_TIME_TRIP, 104)
|
72
|
WHERE REQ_ID =@p_REQ_ID
|
73
|
SET @IS_SEND_APPR='N'
|
74
|
SET @AUTH_STATUS='U'
|
75
|
DELETE PL_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='UPDATE'
|
76
|
INSERT INTO dbo.PL_PROCESS
|
77
|
(
|
78
|
REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
|
79
|
)
|
80
|
VALUES
|
81
|
(
|
82
|
@p_REQ_ID,'UPDATE',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),104),N'Cập nhật PYC xe thành công',N'Cập nhật PYC xe'
|
83
|
)
|
84
|
END
|
85
|
ELSE IF(EXISTS(SELECT * FROM CM_ALLCODE WHERE CDNAME='REQCAR'AND CDVAL=@p_USER_LOGIN)OR EXISTS(SELECT PROCESS_ID FROM TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN))
|
86
|
BEGIN
|
87
|
-- update master
|
88
|
UPDATE dbo.TR_REQUEST_CAR
|
89
|
SET CAR_ID=@p_CAR_ID,DRIVER_ID=@p_DRIVER_ID,DRIVER_PHONE=@p_DRIVER_PHONE,QUANTITY_TRIP=@p_QUANTITY_TRIP,NOTES_TRIP=@p_NOTES_TRIP,UNIT_TRIP=@p_UNIT_TRIP,TO_TRIP=@p_TO_TRIP,FROM_TRIP=@p_FROM_TRIP,MILRAGE_TRIP=@p_MILRAGE_TRIP,START_TIME_TRIP=CONVERT(DATETIME, @p_START_TIME_TRIP, 104),MO_NAME=@p_MO_NAME,N_PLATE=@p_N_PLATE,
|
90
|
QUANTITY_RETURN_TRIP=@p_QUANTITY_RETURN_TRIP,NOTES_RETURN_TRIP=@p_NOTES_RETURN_TRIP,UNIT_RETURN_TRIP=@p_UNIT_RETURN_TRIP,TO_RETURN_TRIP=@p_TO_RETURN_TRIP,FROM_RETURN_TRIP=@p_FROM_RETURN_TRIP,MILRAGE_RETURN_TRIP=@p_MILRAGE_RETURN_TRIP,START_TIME_RETURN_TRIP=CONVERT(DATETIME, @p_START_TIME_RETURN_TRIP, 104),
|
91
|
IS_CONTRACT_CAR=@p_IS_CONTRACT_CAR,AUTH_STATUS='U',POWER_RATE=@p_POWER_RATE,FIRST_BALANCE=@p_FIRST_BALANCE,LAST_BALANCE=@p_LAST_BALANCE,CURRENT_POWER_RATE=@p_CURRENT_POWER_RATE,USER_UPDATE = @p_USER_UPDATE,OLD_FUEL_NUMBER=@p_OLD_FUEL_NUMBER
|
92
|
WHERE REQ_ID=@p_REQ_ID
|
93
|
IF @@Error <> 0 GOTO ABORT
|
94
|
DELETE FROM dbo.TR_REQUEST_CAR_DETAIL WHERE REQ_ID = @p_REQ_ID
|
95
|
DELETE FROM dbo.TR_REQ_CAR_FUEL WHERE REQ_ID = @p_REQ_ID
|
96
|
-- LƯỚI CẬP NHẬT CHI PHÍ
|
97
|
DECLARE @lstCDT TABLE(
|
98
|
REQ_DT_ID VARCHAR(15),
|
99
|
REQ_ID VARCHAR(15),
|
100
|
FEE_TYPE NVARCHAR(100),
|
101
|
AMOUNT decimal(18, 0),
|
102
|
QUANTITY decimal(18, 2),
|
103
|
NOTES NVARCHAR(MAX),
|
104
|
UNIT NVARCHAR(20)
|
105
|
)
|
106
|
|
107
|
DECLARE @doc INT
|
108
|
Exec sp_xml_preparedocument @doc Output,@p_ListCarDT
|
109
|
|
110
|
INSERT INTO @lstCDT
|
111
|
SELECT *
|
112
|
FROM OPENXML(@doc,'/Root/ListCarDetail',2)
|
113
|
WITH
|
114
|
(
|
115
|
REQ_DT_ID VARCHAR(15),
|
116
|
REQ_ID VARCHAR(15),
|
117
|
FEE_TYPE NVARCHAR(100),
|
118
|
AMOUNT decimal(18, 0),
|
119
|
QUANTITY decimal(18, 2),
|
120
|
NOTES NVARCHAR(MAX),
|
121
|
UNIT NVARCHAR(20)
|
122
|
)
|
123
|
|
124
|
|
125
|
DECLARE CarDTCur CURSOR FOR SELECT REQ_DT_ID,REQ_ID,QUANTITY,FEE_TYPE,AMOUNT,NOTES,UNIT FROM @lstCDT
|
126
|
OPEN CarDTCur
|
127
|
|
128
|
DECLARE
|
129
|
@pl_REQ_DT_ID VARCHAR(15),
|
130
|
@pl_REQ_ID VARCHAR(15),
|
131
|
@pl_FEE_TYPE NVARCHAR(100),
|
132
|
@pl_QUANTITY int,
|
133
|
@pl_AMOUNT decimal(18, 0),
|
134
|
@pl_NOTES NVARCHAR(MAX),
|
135
|
@pl_UNIT NVARCHAR(20)
|
136
|
|
137
|
FETCH NEXT FROM CarDTCur INTO @pl_REQ_DT_ID,@pl_REQ_ID,@pl_QUANTITY,@pl_FEE_TYPE,@pl_AMOUNT,@pl_NOTES,@pl_UNIT
|
138
|
|
139
|
WHILE @@FETCH_STATUS = 0
|
140
|
BEGIN
|
141
|
|
142
|
DECLARE @l_CarDT_ID VARCHAR(15)
|
143
|
EXEC SYS_CodeMasters_Gen 'TR_REQUEST_CAR_DETAIL', @l_CarDT_ID out
|
144
|
IF @l_CarDT_ID='' OR @l_CarDT_ID IS NULL GOTO ABORT
|
145
|
|
146
|
INSERT INTO dbo.TR_REQUEST_CAR_DETAIL
|
147
|
(
|
148
|
REQ_DT_ID,REQ_ID,QUANTITY,FEE_TYPE,AMOUNT,NOTES,UNIT
|
149
|
)
|
150
|
VALUES
|
151
|
(
|
152
|
@l_CarDT_ID,@p_REQ_ID,@pl_QUANTITY,@pl_FEE_TYPE,@pl_AMOUNT,@pl_NOTES,@pl_UNIT
|
153
|
)
|
154
|
|
155
|
IF @@ERROR <> 0 GOTO ABORT1
|
156
|
FETCH NEXT FROM CarDTCur INTO @pl_REQ_DT_ID,@pl_REQ_ID,@pl_QUANTITY,@pl_FEE_TYPE,@pl_AMOUNT,@pl_NOTES,@pl_UNIT
|
157
|
END
|
158
|
CLOSE CarDTCur
|
159
|
DEALLOCATE CarDTCur
|
160
|
--lưới nhiên liệu
|
161
|
DECLARE @lstNL TABLE(
|
162
|
[FUEL_ID] VARCHAR(20),
|
163
|
[REQ_ID] VARCHAR(20),
|
164
|
[REFUEL_DATE] VARCHAR(20),
|
165
|
[NUMBER_LITERS] decimal(18, 2),
|
166
|
[NOTES] NVARCHAR(MAX),
|
167
|
[AMOUNT] DECIMAL(18,0)
|
168
|
)
|
169
|
|
170
|
Exec sp_xml_preparedocument @doc Output,@p_ListFuel
|
171
|
|
172
|
INSERT INTO @lstNL
|
173
|
SELECT *
|
174
|
FROM OPENXML(@doc,'/Root/ListFuel',2)
|
175
|
WITH
|
176
|
(
|
177
|
FUEL_ID VARCHAR(20),
|
178
|
REQ_ID VARCHAR(20),
|
179
|
REFUEL_DATE VARCHAR(20),
|
180
|
NUMBER_LITERS decimal(18, 2),
|
181
|
NOTES NVARCHAR(MAX),
|
182
|
AMOUNT DECIMAL(18,0)
|
183
|
)
|
184
|
|
185
|
DECLARE NLCur CURSOR FOR SELECT REFUEL_DATE,NUMBER_LITERS,[NOTES],AMOUNT FROM @lstNL
|
186
|
OPEN NLCur
|
187
|
|
188
|
DECLARE
|
189
|
@pl_REFUEL_DATE VARCHAR(20),
|
190
|
@pl_NUMBER_LITERS INT,
|
191
|
@AMOUNT DECIMAL(18,0)
|
192
|
|
193
|
FETCH NEXT FROM NLCur INTO @pl_REFUEL_DATE,@pl_NUMBER_LITERS,@pl_NOTES,@AMOUNT
|
194
|
|
195
|
WHILE @@FETCH_STATUS = 0
|
196
|
BEGIN
|
197
|
|
198
|
DECLARE @l_FUEL_ID VARCHAR(20)
|
199
|
EXEC SYS_CodeMasters_Gen 'TR_REQ_CAR_FUEL', @l_FUEL_ID out
|
200
|
IF @l_FUEL_ID='' OR @l_FUEL_ID IS NULL GOTO ABORT
|
201
|
|
202
|
INSERT INTO dbo.TR_REQ_CAR_FUEL
|
203
|
(
|
204
|
[FUEL_ID],[REFUEL_DATE],[NUMBER_LITERS],[REQ_ID],[NOTES],[AMOUNT]
|
205
|
)
|
206
|
VALUES
|
207
|
(
|
208
|
@l_FUEL_ID,CONVERT(DATETIME,@pl_REFUEL_DATE,103),@pl_NUMBER_LITERS,@p_REQ_ID,@pl_NOTES,@AMOUNT
|
209
|
)
|
210
|
|
211
|
IF @@ERROR <> 0 GOTO ABORT1
|
212
|
FETCH NEXT FROM NLCur INTO @pl_REFUEL_DATE,@pl_NUMBER_LITERS,@pl_NOTES,@AMOUNT
|
213
|
END
|
214
|
CLOSE NLCur
|
215
|
DEALLOCATE NLCur
|
216
|
IF(NOT EXISTS(SELECT USER_UPDATE FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN))
|
217
|
BEGIN
|
218
|
UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET TLNAME=@p_USER_UPDATE WHERE TYPE_JOB='XL' AND REQ_ID=@p_REQ_ID
|
219
|
END
|
220
|
IF(EXISTS(SELECT * FROM CM_ALLCODE WHERE CDNAME='REQCAR'AND CDVAL=@p_USER_LOGIN) AND
|
221
|
NOT EXISTS(SELECT * FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID IN ('CVINFO_UPD','USER_SEND','CVCOSTUPD','COSTREJECT','CVREJUPD')))
|
222
|
BEGIN
|
223
|
UPDATE TR_REQUEST_CAR
|
224
|
SET PROCESS_ID='CV_CAR_UPD'
|
225
|
WHERE REQ_ID=@p_REQ_ID
|
226
|
DELETE FROM PL_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='CV_CAR_UPD'
|
227
|
INSERT INTO dbo.PL_PROCESS
|
228
|
(
|
229
|
REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
|
230
|
)
|
231
|
VALUES
|
232
|
(
|
233
|
@p_REQ_ID,'CV_CAR_UPD',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),104),N'Chuyên viên điều động xe cập nhật thông tin xe thành công',N'Chuyên viên điều động xe cập nhật thông tin xe'
|
234
|
)
|
235
|
END
|
236
|
ELSE IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_CAR WHERE REQ_ID=@p_REQ_ID AND USER_UPDATE=@p_USER_LOGIN AND PROCESS_ID IN('CV_SEND','USER_UPD','MAKER_REJ','MAKER_CONF','CV_REJECT')))
|
237
|
BEGIN
|
238
|
UPDATE TR_REQUEST_CAR
|
239
|
SET PROCESS_ID='USER_UPD'
|
240
|
WHERE REQ_ID=@p_REQ_ID
|
241
|
DELETE FROM PL_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='USER_UPD'
|
242
|
INSERT INTO dbo.PL_PROCESS
|
243
|
(
|
244
|
REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
|
245
|
)
|
246
|
VALUES
|
247
|
(
|
248
|
@p_REQ_ID,'USER_UPD',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Tài xế cập nhật thông tin xe thành công',N'Tài xế cập nhật thông tin xe'
|
249
|
)
|
250
|
END
|
251
|
ELSE IF(EXISTS(SELECT * FROM CM_ALLCODE WHERE CDNAME='REQCAR'AND CDVAL=@p_USER_LOGIN) AND @p_PROCESS_ID ='USER_SEND')
|
252
|
BEGIN
|
253
|
UPDATE TR_REQUEST_CAR
|
254
|
SET PROCESS_ID='CVCOSTUPD'
|
255
|
WHERE REQ_ID=@p_REQ_ID
|
256
|
INSERT INTO dbo.PL_PROCESS
|
257
|
(
|
258
|
REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
|
259
|
)
|
260
|
VALUES
|
261
|
(
|
262
|
@p_REQ_ID,'CV_COSTUPD',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Chuyên viên điều động xe cập nhật chi phí thành công',N'Chuyên viên điều động xe cập nhật chi phí'
|
263
|
)
|
264
|
END
|
265
|
ELSE IF(EXISTS(SELECT * FROM CM_ALLCODE WHERE CDNAME='REQCAR'AND CDVAL=@p_USER_LOGIN) AND @p_PROCESS_ID IN ('COSTREJECT'))
|
266
|
BEGIN
|
267
|
UPDATE TR_REQUEST_CAR
|
268
|
SET PROCESS_ID='CVREJUPD'
|
269
|
WHERE REQ_ID=@p_REQ_ID
|
270
|
INSERT INTO dbo.PL_PROCESS
|
271
|
(
|
272
|
REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES
|
273
|
)
|
274
|
VALUES
|
275
|
(
|
276
|
@p_REQ_ID,'CVREJUPD',@p_USER_LOGIN,CONVERT(DATETIME,GETDATE(),103),N'Chuyên viên điều động xe cập nhật thông tin thành công',N'Chuyên viên điều động xe cập nhật thông tin'
|
277
|
)
|
278
|
END
|
279
|
END
|
280
|
|
281
|
COMMIT TRANSACTION
|
282
|
SELECT '0' as Result, @p_REQ_ID REQ_ID,@IS_SEND_APPR AS IS_SEND_APPR,@AUTH_STATUS AS AUTH_STATUS, '' ErrorDesc
|
283
|
RETURN '0'
|
284
|
ABORT:
|
285
|
BEGIN
|
286
|
ROLLBACK TRANSACTION
|
287
|
SELECT '-1' as Result, '' REQ_ID, '' ErrorDesc
|
288
|
RETURN '-1'
|
289
|
END
|
290
|
ABORT1:
|
291
|
BEGIN
|
292
|
CLOSE CarDTCur
|
293
|
DEALLOCATE CarDTCur
|
294
|
ROLLBACK TRANSACTION
|
295
|
SELECT '-1' AS RESULT
|
296
|
RETURN '-1'
|
297
|
End
|
298
|
|