Project

General

Profile

3.0 CAR_DRIVER_INS.txt

Luc Tran Van, 06/29/2023 04:28 PM

 
1

    
2

    
3
ALTER PROCEDURE [dbo].[CAR_DRIVE_Ins]
4
@p_CAR_ID	varchar(15)  = NULL,
5
@p_ASSET_ID	varchar(15)  = NULL,
6
@p_ASSET_NAME	nvarchar(200)  = NULL,
7
@p_OLD_INDEX_NUMBER	decimal(18)  = NULL,
8
@p_NEW_INDEX_NUMBER	decimal(18)  = NULL,
9
@p_INDEX_NUMBER	decimal(18)  = NULL,
10
@p_POWER_RATE	decimal(18,2)  = NULL,
11
@p_POWER_RATE_INDEX	decimal(18,2)  = NULL,
12
@p_CURR_POWER_RATE	decimal(18,2)  = NULL,
13
@p_INPUT_DT	VARCHAR(20) = NULL,
14
@p_ISLEAF	varchar(1)  = NULL,
15
@p_PARENT_ID	varchar(15)  = NULL,
16
@p_NOTES	nvarchar(1000)  = NULL,
17
@p_RECORD_STATUS	varchar(1)  = NULL,
18
@p_MAKER_ID	varchar(12)  = NULL,
19
@p_CREATE_DT	VARCHAR(20) = NULL,
20
@p_AUTH_STATUS	varchar(50)  = NULL,
21
@p_CHECKER_ID	varchar(12)  = NULL,
22
@p_APPROVE_DT	VARCHAR(20) = NULL,
23
@p_DR_ROUTE nvarchar(200) = NULL, --vietpq hieu chinh URD 09/12/2019
24
-- doanptt 14/02/2022
25
@p_REQ_PAY_ID VARCHAR(15) = NULL,
26
@p_NEW_FUEL_NUMBER	DECIMAL(18,2)  = NULL, --PhongNT 13/05/2022 Bổ sung nhiên liệu
27
@p_OLD_FUEL_NUMBER	DECIMAL(18,2) = NULL,
28
@p_REQ_CAR_ID		VARCHAR(15) =NULL, -- PYC XE 
29
@p_DRIVE_DETAIL XML = NULL
30
AS
31
	
32
--	DECLARE @ERRORSYS NVARCHAR(15)
33
--	IF (  EXISTS ( SELECT * FROM CAR_DRIVE WHERE CAR_ID = @p_CAR_ID))
34
--	BEGIN
35
--	    --kiem tra trang thai truoc do da suyet hay chua
36
--		IF(NOT EXISTS(SELECT * FROM CAR_DRIVE A WHERE A.AUTH_STATUS='A' AND A.ISLEAF = 'Y' AND (A.CAR_ID = @p_CAR_ID OR @p_CAR_ID IS NULL OR @p_CAR_ID='')))
37
--			SET @ERRORSYS='CARD-00003'
38
--	END
39
--    
40
--	IF( @ERRORSYS <> '' )
41
--	BEGIN
42
--		SELECT ErrorCode Result, '' CAR_DR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
43
--		RETURN '-1'
44
--	END
45
--
46
--  IF ( EXISTS ( SELECT 1 FROM CAR_DRIVE WHERE REQ_CAR_ID = @p_REQ_CAR_ID))
47
--	BEGIN
48
--	  	SELECT '-1' Result, '' CAR_DR_ID, N'Thêm mới thất bại! Phiếu yêu cầu xe đã tồn tại trong thông tin vận hành xe' ErrorDesc 
49
--		  RETURN '-1'
50
--	END
51

    
52
	
53
	DECLARE @ERRORSYS NVARCHAR(MAX)
54
	select @ERRORSYS = STUFF((
55
		SELECT ', ' + REQ_CODE
56
		FROM TR_REQUEST_CAR 
57
		WHERE START_TIME_TRIP<(SELECT START_TIME_TRIP FROM dbo.TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_CAR_ID) 
58
        AND AUTH_STATUS<>'D'
59
		AND CAR_ID = @p_CAR_ID 
60
		AND REQ_ID NOT IN (SELECT REQ_CAR_ID FROM dbo.CAR_DRIVE A WHERE CAR_ID=@p_CAR_ID)
61
		
62
			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
63
    
64
	--KIỂM TRA CÁC PHIẾU XE TRƯỚC THỜI ĐIỂM ĐI ĐÃ ĐƯỢC TẠO 
65
	IF (@ERRORSYS IS NOT NULL)
66
	BEGIN
67
		SELECT '-1' Result, N'Bạn cần tạo vận hành cho các phiếu yêu cầu sau: '+ @ERRORSYS ErrorDesc
68
		RETURN '-1'
69
	END
70

    
71
  IF (EXISTS(SELECT * FROM CAR_DRIVE cd WHERE REQ_CAR_ID=@p_REQ_CAR_ID))
72
	BEGIN
73
		SELECT '-1' Result, N'Phiếu yêu cầu xe tồn tại ở phiếu vận hành số '+(SELECT TOP(1) cd.CAR_DR_ID FROM CAR_DRIVE cd WHERE REQ_CAR_ID=@p_REQ_CAR_ID) ErrorDesc
74
		RETURN '-1'
75
	END
76
	
77
	
78
	Declare @hdoc INT
79
	Exec sp_xml_preparedocument @hdoc Output,@p_DRIVE_DETAIL
80
	DECLARE DriveDetail CURSOR FOR
81
	SELECT *
82
	FROM OPENXML(@hDoc,'/Root/DriveDetail',2)
83
	WITH 
84
	(
85
		INVOICE_NO nvarchar(100),
86
		INVOICE_DT VARCHAR(20),
87
		INVOICE_AMT DECIMAL(18,0),
88
		CAR_DR_TYPE nvarchar(200), --vietpq hieu chinh URD 09/12/2019
89
		NOTES nvarchar(MAX) --vietpq hieu chinh URD 09/12/2019
90
	)
91
	OPEN DriveDetail
92
	BEGIN TRANSACTION
93
	---- LUCTV 21062023_SECRETKEY: KIỂM TRA NẾU CHƯA KHAI BÁO THÔNG TIN VẬN HÀNH XE THÌ BẮT BUỘC PHẢI KHAI BÁO TRƯỚC KHI LÀM PYC XE
94
		IF(NOT EXISTS(SELECT * FROM CAR_DRIVE WHERE CAR_ID =@p_CAR_ID AND ISNULL(ISLEAF,'') ='Y' )) 
95
		BEGIN
96
			ROLLBACK TRANSACTION
97
			SELECT '-1' Result, '' REQ_ID, N'Thêm mới phiếu vận hành xe thất bại. Xe chưa được khai báo thông tin số km tồn đầu, số nhiên liệu tồn đầu. Vui lòng tra cứu thông tin xe để kiểm tra thông tin' ErrorDesc
98
			RETURN '-1'
99
		END
100
		---- LUCTV 29062023_SECRETKEY:CHỈ CHO PHÉP PHÒNG HÀNH CHÍNH HỘI SỞ ĐƯỢC PHÉP ĐIỀU CHỈNH SỐ XĂNG ĐẦU KỲ, SỐ KM ĐẦU KỲ
101
		DECLARE @l_FUEL_INDEX_FROM DECIMAL(18,2), @l_KM_INDEX_FROM DECIMAL(18,2)
102
		SET @l_FUEL_INDEX_FROM = (SELECT TOP 1 ISNULL(NEW_FUEL_NUMBER,0) FROM CAR_DRIVE WHERE CAR_ID =@p_CAR_ID AND ISNULL(ISLEAF,'') ='Y' AND RECORD_STATUS='1')
103
		SET @l_KM_INDEX_FROM = (SELECT TOP 1 ISNULL(NEW_INDEX_NUMBER,0) FROM CAR_DRIVE WHERE CAR_ID =@p_CAR_ID AND ISNULL(ISLEAF,'') ='Y' AND RECORD_STATUS ='1')
104
		IF(ISNULL(@l_FUEL_INDEX_FROM,0) <> @p_OLD_FUEL_NUMBER OR ISNULL(@l_KM_INDEX_FROM,0) <> @p_OLD_INDEX_NUMBER)
105
		BEGIN
106
			IF(NOT EXISTS (SELECT * FROM TL_USER WHERE TLNANME=@p_MAKER_ID AND SECUR_CODE IN (SELECT DEP_ID FROM CM_DEPARTMENT WHERE DEP_CODE ='0690604')))
107
			BEGIN
108
				ROLLBACK TRANSACTION
109
				SELECT '-1' Result, '' REQ_ID, N'Thêm mới phiếu vận hành xe thất bại. Bạn không được phép điều chỉnh thông tin chỉ số nhiên liệu cũ, chỉ số km cũ. Chức năng này chỉ dành cho nhóm người dùng Phòng Hành Chính - Hội Sở' ErrorDesc
110
				RETURN '-1'
111
			END
112
		END
113
	---- END LUCTV
114
		DECLARE @l_CAR_DR_ID VARCHAR(15)
115
		
116
		IF @p_INPUT_DT = '' SET @p_INPUT_DT = NULL
117
		IF @p_CREATE_DT = '' SET @p_CREATE_DT = NULL
118
		IF @p_APPROVE_DT = '' SET @p_APPROVE_DT = NULL
119
		
120
		EXEC SYS_CodeMasters_Gen 'CAR_DRIVE', @l_CAR_DR_ID out
121
		IF @l_CAR_DR_ID='' OR @l_CAR_DR_ID IS NULL GOTO ABORT
122
		PRINT @l_CAR_DR_ID
123
		--Tren truyen mac dinh ISLEAF=Y
124
	    DECLARE @PARENT VARCHAR(15) = NULL
125
		SELECT @PARENT = [CAR_DR_ID] FROM CAR_DRIVE WHERE CAR_ID = @p_CAR_ID AND ISLEAF = 'Y' AND RECORD_STATUS = '1'
126
		UPDATE CAR_DRIVE SET ISLEAF = 'N' WHERE [CAR_DR_ID] = @PARENT
127

    
128

    
129
		INSERT INTO CAR_DRIVE([CAR_DR_ID],[CAR_ID],[ASSET_ID],[ASSET_NAME],[OLD_INDEX_NUMBER],[NEW_INDEX_NUMBER],[INDEX_NUMBER],[POWER_RATE],[POWER_RATE_INDEX],[CURR_POWER_RATE],[DR_ROUTE], [INPUT_DT],[ISLEAF],[PARENT_ID],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[REQ_PAY_ID],[REQ_CAR_ID],[OLD_FUEL_NUMBER],[NEW_FUEL_NUMBER]) 
130
		VALUES(@l_CAR_DR_ID ,@p_CAR_ID ,@p_ASSET_ID ,@p_ASSET_NAME ,@p_OLD_INDEX_NUMBER,
131
		@p_NEW_INDEX_NUMBER ,@p_INDEX_NUMBER ,@p_POWER_RATE ,@p_POWER_RATE_INDEX ,
132
		@p_CURR_POWER_RATE , @p_DR_ROUTE, CONVERT(DATETIME, @p_INPUT_DT, 103) ,'Y' ,@PARENT ,
133
		@p_NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,
134
		@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_REQ_PAY_ID,@p_REQ_CAR_ID,@p_OLD_FUEL_NUMBER,@p_NEW_FUEL_NUMBER)
135
		IF @@Error <> 0 GOTO ABORT
136

    
137
		--INSERT CAR DRIVE DETAIL
138
		DECLARE 	
139
		@INVOICE_NO nvarchar(100),
140
		@INVOICE_DT VARCHAR(20),
141
		@INVOICE_AMT DECIMAL(18,0),
142
		@CAR_DR_TYPE nvarchar(200), --vietpq hieu chinh URD 09/12/2019
143
		@NOTES nvarchar(MAX) --vietpq hieu chinh URD 09/12/2019
144
		PRINT 'INSERT MASTER SUCCESS'
145
		FETCH NEXT FROM DriveDetail INTO @INVOICE_NO,@INVOICE_DT,@INVOICE_AMT,@CAR_DR_TYPE,@NOTES
146
		PRINT 'FETCH  FIRST ROW'
147
		
148
		WHILE @@FETCH_STATUS = 0
149
		BEGIN
150
			DECLARE @l_ID VARCHAR(15)
151
			EXEC SYS_CodeMasters_Gen 'CAR_DRIVE_DT', @l_ID out
152
			IF @l_ID='' OR @l_ID IS NULL GOTO ABORT
153
			IF @INVOICE_DT = '' SET @INVOICE_DT = NULL
154
			PRINT 'INSERT FIRST ROW'
155
			INSERT INTO CAR_DRIVE_DT
156
			VALUES(@l_ID ,@l_CAR_DR_ID ,@INVOICE_NO,CONVERT(DATETIME,@INVOICE_DT,103),@INVOICE_AMT, @CAR_DR_TYPE, @NOTES)
157

    
158
			FETCH NEXT FROM DriveDetail INTO @INVOICE_NO,@INVOICE_DT,@INVOICE_AMT,@CAR_DR_TYPE,@NOTES
159
		END
160
	
161
		CLOSE DriveDetail
162
		DEALLOCATE DriveDetail
163
COMMIT TRANSACTION
164
SELECT '0' as Result, @l_CAR_DR_ID  CAR_DR_ID, '' ErrorDesc
165
RETURN '0'
166
ABORT:
167
BEGIN
168
		ROLLBACK TRANSACTION
169
		SELECT '-1' as Result, '' CAR_DR_ID, '' ErrorDesc
170
		RETURN '-1'
171
End
172