Project

General

Profile

CAR_DRIVE_Ins.txt

Luc Tran Van, 06/21/2023 11:28 AM

 
1

    
2
/*
3
SELECT * FROM ASS_MASTER
4
SELECT * FROM CAR_MASTER WHERE CAR_ID = 'CARM00000000003' 
5
SELECT * FROM CAR_DRIVE
6
SELECT * FROM CAR_DRIVE_DT
7
DELETE FROM CAR_DRIVE WHERE CAR_ID = 'CARM00000000001'
8
CAR_DRIVE_Ins 'CARM00000000001','ASS000000000001','',0,0,0,0,0,0,'','','','','','','','','','',
9
'
10
<Root xmlns="">
11
	<DriveDetail>
12
		<INVOICE_NO>1234567</INVOICE_NO>
13
		<INVOICE_DT>20/11/2013</INVOICE_DT>
14
		<INVOICE_AMT>2000000</INVOICE_AMT>
15
	</DriveDetail>
16
</Root>
17
'
18

    
19
*/
20

    
21
ALTER PROCEDURE dbo.CAR_DRIVE_Ins
22
@p_CAR_ID	varchar(15)  = NULL,
23
@p_ASSET_ID	varchar(15)  = NULL,
24
@p_ASSET_NAME	nvarchar(200)  = NULL,
25
@p_OLD_INDEX_NUMBER	decimal(18)  = NULL,
26
@p_NEW_INDEX_NUMBER	decimal(18)  = NULL,
27
@p_INDEX_NUMBER	decimal(18)  = NULL,
28
@p_POWER_RATE	decimal(18,2)  = NULL,
29
@p_POWER_RATE_INDEX	decimal(18,2)  = NULL,
30
@p_CURR_POWER_RATE	decimal(18,2)  = NULL,
31
@p_INPUT_DT	VARCHAR(20) = NULL,
32
@p_ISLEAF	varchar(1)  = NULL,
33
@p_PARENT_ID	varchar(15)  = NULL,
34
@p_NOTES	nvarchar(1000)  = NULL,
35
@p_RECORD_STATUS	varchar(1)  = NULL,
36
@p_MAKER_ID	varchar(12)  = NULL,
37
@p_CREATE_DT	VARCHAR(20) = NULL,
38
@p_AUTH_STATUS	varchar(50)  = NULL,
39
@p_CHECKER_ID	varchar(12)  = NULL,
40
@p_APPROVE_DT	VARCHAR(20) = NULL,
41
@p_DR_ROUTE nvarchar(200) = NULL, --vietpq hieu chinh URD 09/12/2019
42
-- doanptt 14/02/2022
43
@p_REQ_PAY_ID VARCHAR(15) = NULL,
44
@p_NEW_FUEL_NUMBER	DECIMAL(18,2)  = NULL, --PhongNT 13/05/2022 Bổ sung nhiên liệu
45
@p_OLD_FUEL_NUMBER	DECIMAL(18,2) = NULL,
46
@p_REQ_CAR_ID		VARCHAR(15) =NULL, -- PYC XE 
47
@p_DRIVE_DETAIL XML = NULL
48
AS
49
	
50
--	DECLARE @ERRORSYS NVARCHAR(15)
51
--	IF (  EXISTS ( SELECT * FROM CAR_DRIVE WHERE CAR_ID = @p_CAR_ID))
52
--	BEGIN
53
--	    --kiem tra trang thai truoc do da suyet hay chua
54
--		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='')))
55
--			SET @ERRORSYS='CARD-00003'
56
--	END
57
--    
58
--	IF( @ERRORSYS <> '' )
59
--	BEGIN
60
--		SELECT ErrorCode Result, '' CAR_DR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
61
--		RETURN '-1'
62
--	END
63
--
64
--  IF ( EXISTS ( SELECT 1 FROM CAR_DRIVE WHERE REQ_CAR_ID = @p_REQ_CAR_ID))
65
--	BEGIN
66
--	  	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 
67
--		  RETURN '-1'
68
--	END
69

    
70
---- 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
71
		IF(NOT EXISTS(SELECT * FROM CAR_DRIVE WHERE CAR_ID =@p_CAR_ID AND ISNULL(ISLEAF,'') ='Y' )) 
72
		BEGIN
73
			ROLLBACK TRANSACTION
74
			SELECT '-1' Result, '' REQ_ID, N'Tạo 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
75
			RETURN '-1'
76
		END
77

    
78
	DECLARE @ERRORSYS NVARCHAR(MAX)
79
	select @ERRORSYS = STUFF((
80
		SELECT ', ' + REQ_CODE
81
		FROM TR_REQUEST_CAR 
82
		WHERE START_TIME_TRIP<(SELECT START_TIME_TRIP FROM dbo.TR_REQUEST_CAR WHERE REQ_ID = @p_REQ_CAR_ID) 
83
        AND AUTH_STATUS<>'D'
84
		AND CAR_ID = @p_CAR_ID 
85
		AND REQ_ID NOT IN (SELECT REQ_CAR_ID FROM dbo.CAR_DRIVE A WHERE CAR_ID=@p_CAR_ID)
86
		
87
			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
88
    
89
	--KIỂM TRA CÁC PHIẾU XE TRƯỚC THỜI ĐIỂM ĐI ĐÃ ĐƯỢC TẠO 
90
	IF (@ERRORSYS IS NOT NULL)
91
	BEGIN
92
		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
93
		RETURN '-1'
94
	END
95

    
96
  IF (EXISTS(SELECT * FROM CAR_DRIVE cd WHERE REQ_CAR_ID=@p_REQ_CAR_ID))
97
	BEGIN
98
		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
99
		RETURN '-1'
100
	END
101
	
102
	
103
	Declare @hdoc INT
104
	Exec sp_xml_preparedocument @hdoc Output,@p_DRIVE_DETAIL
105
	DECLARE DriveDetail CURSOR FOR
106
	SELECT *
107
	FROM OPENXML(@hDoc,'/Root/DriveDetail',2)
108
	WITH 
109
	(
110
		INVOICE_NO nvarchar(100),
111
		INVOICE_DT VARCHAR(20),
112
		INVOICE_AMT DECIMAL(18,0),
113
		CAR_DR_TYPE nvarchar(200), --vietpq hieu chinh URD 09/12/2019
114
		NOTES nvarchar(MAX) --vietpq hieu chinh URD 09/12/2019
115
	)
116
	OPEN DriveDetail
117
BEGIN TRANSACTION
118
DECLARE @l_CAR_DR_ID VARCHAR(15)
119
		
120
		IF @p_INPUT_DT = '' SET @p_INPUT_DT = NULL
121
		IF @p_CREATE_DT = '' SET @p_CREATE_DT = NULL
122
		IF @p_APPROVE_DT = '' SET @p_APPROVE_DT = NULL
123
		
124
		EXEC SYS_CodeMasters_Gen 'CAR_DRIVE', @l_CAR_DR_ID out
125
		IF @l_CAR_DR_ID='' OR @l_CAR_DR_ID IS NULL GOTO ABORT
126
		PRINT @l_CAR_DR_ID
127
		--Tren truyen mac dinh ISLEAF=Y
128
	    DECLARE @PARENT VARCHAR(15) = NULL
129
		SELECT @PARENT = [CAR_DR_ID] FROM CAR_DRIVE WHERE CAR_ID = @p_CAR_ID AND ISLEAF = 'Y' AND RECORD_STATUS = '1'
130
		UPDATE CAR_DRIVE SET ISLEAF = 'N' WHERE [CAR_DR_ID] = @PARENT
131

    
132

    
133
		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]) 
134
		VALUES(@l_CAR_DR_ID ,@p_CAR_ID ,@p_ASSET_ID ,@p_ASSET_NAME ,@p_OLD_INDEX_NUMBER,
135
		@p_NEW_INDEX_NUMBER ,@p_INDEX_NUMBER ,@p_POWER_RATE ,@p_POWER_RATE_INDEX ,
136
		@p_CURR_POWER_RATE , @p_DR_ROUTE, CONVERT(DATETIME, @p_INPUT_DT, 103) ,'Y' ,@PARENT ,
137
		@p_NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,
138
		@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)
139
		IF @@Error <> 0 GOTO ABORT
140

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

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