Project

General

Profile

TR_REQ_CAR.txt

Luc Tran Van, 06/29/2022 12:20 PM

 
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