Project

General

Profile

BUD_CONTRACT_CUST_MASTER_App.txt

Sửa câu thông báo lỗi Khai thác DTSD nội bộ - Luc Tran Van, 03/11/2022 02:24 PM

 
1

    
2
ALTER PROCEDURE [dbo].[BUD_CONTRACT_CUST_MASTER_App]
3
@p_CONTRACT_ID varchar(15),
4
@p_VERSION_NO varchar(15),
5
@P_AUTH_STATUS VARCHAR(1),
6
@P_CHECKER_ID VARCHAR(12),
7
@P_APPROVE_DT VARCHAR(25),
8
@P_TYPE_CONTRACT VARCHAR(1),
9
@P_XML_TEMP XML
10
AS
11
BEGIN TRANSACTION 
12
		DECLARE @_BUILDING_UTIL_LOG VARCHAR(15)
13
		DECLARE @p_VALUE_ID VARCHAR(15)
14
		DECLARE @p_MONTH DECIMAL(18,0)
15
		DECLARE @VALUE_ERROR DECIMAL(18,0)
16
		DECLARE @p_RENT_PRICE DECIMAL(18,0)
17
		DECLARE @TOATAL_INTERNAL DECIMAL(18,0)
18
		DECLARE @STT INT
19
		SET @STT =0
20
		DECLARE @_BUILDING_ID VARCHAR(15)
21
		DECLARE @_BUILDING_AREA_ID VARCHAR(15)
22
		DECLARE @_RENT_AREA DECIMAL(18,0)
23
		DECLARE @_RENT_PRICE_OLD DECIMAL(18,0)
24
		DECLARE @tmp table(CONTRACT_DTID VARCHAR(15), BUILDING_AREA_ID varchar(15),RENT_AREA DECIMAL(18,2),RENT_PRICE DECIMAL(18,2))
25
		insert into @tmp  SELECT CONTRACT_DTID, BUILDING_AREA_ID,RENT_AREA,RENT_PRICE  FROM BUD_CONTRACT_CUST_DT
26
												   WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO-1
27
		
28

    
29
		-----BAODNQ 20/1/2022--------------------
30
		DECLARE @p_VAT_INIT NUMERIC(18,0)
31
		SET @p_VAT_INIT = (SELECT VAT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
32

    
33
		-----*** INSERT VERSION -1 VAO TRONG BANG LOG
34
		IF @@Error <> 0 GOTO ABORT
35
		Declare @hdoc1 INT
36
		DECLARE 
37
				@d_CONTRACT_DTID   VARCHAR(15),	
38
				@d_BUILD_ID VARCHAR(15),
39
				@d_VERSION_NO INT,
40
				@d_BUILDING_AREA_ID VARCHAR(15),
41
				@d_RENT_AREA DECIMAL,
42
				@d_RENT_AREA_APP DECIMAL,
43
				@d_AREA_REMAIN DECIMAL,
44
				@d_RENT_PRICE DECIMAL,
45
				@d_NOTES	NVARCHAR(MAX),
46
				@d_DIEN_TICH_TANG DECIMAL,
47
				@d_DIEN_TICH_SD_NOI_BO DECIMAL,
48
				@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
49
				@d_DIEN_TICH_CON_LAI DECIMAL,
50
				@d_DIEN_TICH_CAN_CHOTHUE DECIMAL,
51
				@d_PRICE DECIMAL,
52
				@d_TOTAL_AMT DECIMAL,
53
				@d_DIEN_TICH_CON_LAI_FINAL DECIMAL
54

    
55
		Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
56
		DECLARE XmlDataDoc CURSOR FOR
57
		SELECT *
58
		FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
59
		WITH 
60
		(	
61
				CONTRACT_DTID   VARCHAR(15),
62
				BUILD_ID VARCHAR(15),
63
				VERSION_NO INT,
64
				BUILDING_AREA_ID VARCHAR(15),
65
				RENT_AREA DECIMAL,
66
				RENT_AREA_APP DECIMAL,
67
				AREA_REMAIN DECIMAL,
68
				RENT_PRICE DECIMAL,
69
				NOTES	NVARCHAR(MAX),
70
				DIEN_TICH_TANG DECIMAL,
71
				DIEN_TICH_SD_NOI_BO DECIMAL,
72
				DIEN_TICH_DA_CHO_THUE DECIMAL,
73
				DIEN_TICH_CON_LAI DECIMAL,
74
				DIEN_TICH_CAN_CHOTHUE DECIMAL,
75
				PRICE DECIMAL,
76
				TOTAL_AMT DECIMAL,
77
				DIEN_TICH_CON_LAI_FINAL DECIMAL
78
		)
79
		OPEN XmlDataDoc			
80
		FETCH NEXT FROM XmlDataDoc INTO 
81
									@d_CONTRACT_DTID,	
82
									@d_BUILD_ID,
83
									@d_VERSION_NO,
84
									@d_BUILDING_AREA_ID,
85
									@d_RENT_AREA,
86
									@d_RENT_AREA_APP,
87
									@d_AREA_REMAIN,
88
									@d_RENT_PRICE,
89
									@d_NOTES,
90
									@d_DIEN_TICH_TANG,
91
									@d_DIEN_TICH_SD_NOI_BO,
92
									@d_DIEN_TICH_DA_CHO_THUE,
93
									@d_DIEN_TICH_CON_LAI,
94
									@d_DIEN_TICH_CAN_CHOTHUE,
95
									@d_PRICE,
96
									@d_TOTAL_AMT,
97
									@d_DIEN_TICH_CON_LAI_FINAL
98

    
99
		WHILE @@FETCH_STATUS = 0
100
		BEGIN	
101
		SET @STT= @STT+1
102
		SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA) 
103
							FROM BUD_AREA_DT 
104
							WHERE  BUILDING_AREA_ID = @d_BUILDING_AREA_ID 
105
							 ) 
106
							  --+(SELECT SUM(RENT_AREA) FROM BUD_CONTRACT_DT
107
								 --WHERE CONTRACT_ID =@p_CONTRACT_ID AND CONTRACT_ID IN(SELECT CONTRACT_ID FROM
108
								 --BUD_CONTRACT_MASTER WHERE AUTH_STATUS='A'))
109
		--DIEN TICH CHO THUE PHAI LON HON DIEN TICH CON LAI+ DIEN TICH VERSION CŨ TRONG TRUONG
110
		--HOP TAO PHU LUC HOP DONG							--													
111
		IF ( @d_DIEN_TICH_CAN_CHOTHUE > (@VALUE_ERROR + @d_RENT_AREA_APP))
112
				BEGIN
113
					DECLARE @ERRORSYS NVARCHAR(200) =''
114
					SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Cột diện tích cho thuê phải nhỏ hơn hoặc bằng cột DT trống: '+ convert(nvarchar(20),@VALUE_ERROR)
115
				END
116
				IF @ERRORSYS <> '' 
117
				BEGIN
118
					CLOSE XmlDataDoc
119
					DEALLOCATE XmlDataDoc
120
					ROLLBACK TRANSACTION
121
					SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc
122
					RETURN '-1'
123
				END 
124
		----**** INSERT VERSION CURRENT -1-------------------------------------------------------------------------
125
		--IF(@p_VERSION_NO>1)
126
		--BEGIN
127
		--	SET @_BUILDING_AREA_ID= (SELECT TOP(1) BUILDING_AREA_ID FROM @tmp)
128
		--	SET @_RENT_AREA= (SELECT TOP(1) RENT_AREA FROM @tmp)
129
		--	SET @p_RENT_PRICE= (SELECT TOP(1) RENT_PRICE FROM @tmp)
130
		--	EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @_BUILDING_UTIL_LOG out
131
		--	IF @_BUILDING_UTIL_LOG='' OR @_BUILDING_UTIL_LOG IS NULL GOTO ABORT
132
		--	INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT])
133
		--	VALUES(@_BUILDING_UTIL_LOG ,@_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'R' ,@p_CONTRACT_ID ,@p_VERSION_NO-1 ,CONVERT(DATETIME, GETDATE(), 103) ,@_RENT_AREA ,'1' ,'A' ,@P_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103) )
134
		--	------**** INSERT INTO CONTRACT_VALUES ---------------------------------------------------------------
135
		--	EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
136
		--	IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
137
		--	INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO-1,@_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'R',@p_RENT_PRICE*@_RENT_AREA,NULL,@d_NOTES,
138
		--										'1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
139
		--	DELETE @tmp WHERE CONTRACT_DTID = (SELECT TOP(1) CONTRACT_DTID FROM @tmp)
140
		--END
141
		-----***INSERT VERSION CURRENT------------------------------------------------------------------
142
		DECLARE @l_UTIL_ID VARCHAR(15)
143
		EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @l_UTIL_ID out
144
		IF @l_UTIL_ID='' OR @l_UTIL_ID IS NULL GOTO ABORT
145

    
146

    
147
		-----BAODNQ 17/1/2022: Thêm cột vào bảng BUD_UTIL_LOG
148
		DECLARE @p_CUSTOMER_ID VARCHAR(15) = 
149
				(SELECT CUST_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
150
		DECLARE @p_IS_FIRST_TIME VARCHAR(1)
151
		
152
		IF(NOT EXISTS 
153
			(SELECT * FROM BUD_UTIL_LOG 
154
				WHERE CONTRACT_ID = @p_CONTRACT_ID 
155
				AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID
156
				AND CUSTOMER_ID = @p_CUSTOMER_ID
157
				AND IS_FIRST_TIME = 'Y'))
158
		BEGIN
159
			SET @p_IS_FIRST_TIME = 'Y'
160
		END
161
		ELSE
162
		BEGIN
163
			SET @p_IS_FIRST_TIME = 'N'
164
		END
165

    
166

    
167
		INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],
168
					[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],
169
					[APPROVE_DT], [TOTAL_AMT_INIT], [VAT_INIT], [IS_FIRST_TIME], [CUSTOMER_ID])
170
			VALUES(@l_UTIL_ID ,@d_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'U' ,@p_CONTRACT_ID ,@p_VERSION_NO ,
171
					CONVERT(DATETIME, GETDATE(), 103) ,@d_DIEN_TICH_CAN_CHOTHUE ,'1' ,'A' ,@P_CHECKER_ID ,
172
					CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103), 
173
					@d_TOTAL_AMT, @p_VAT_INIT, @p_IS_FIRST_TIME, @p_CUSTOMER_ID)
174
		
175

    
176
		---*** UPDATE CONTRACT_VALUES-------------------------------------------------------
177
		EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
178
			IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
179
			INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO,@d_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'U',@d_PRICE*@d_DIEN_TICH_CAN_CHOTHUE,NULL,@d_NOTES,
180
												'1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
181
				
182
		---*** UPDATE DIEN TICH CHO KHACH THUE 
183
		BEGIN
184
		UPDATE BUD_AREA_DT
185
		--SET UTILZED_AREA =(
186
		--	(SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='U' AND UTIL_TYPE=@P_TYPE_CONTRACT)
187
		--	  -
188
		--	(SELECT ISNULL(SUM(AREA),0) FROM BUD_UTIL_LOG WHERE BUILDING_AREA_ID=@d_BUILDING_AREA_ID AND UTIL_RELEASE='R' AND UTIL_TYPE =@P_TYPE_CONTRACT)
189
		
190
		--	)
191
		SET UTILZED_AREA = UTILZED_AREA + @d_DIEN_TICH_CAN_CHOTHUE
192
		WHERE BUILDING_AREA_ID =@d_BUILDING_AREA_ID
193
		---****** UPDATE BUD_CONTRACT_CUST_DT ******************************************---------
194
		UPDATE BUD_CONTRACT_CUST_DT
195
		SET RENT_AREA_APP = RENT_AREA_APP + @d_DIEN_TICH_CAN_CHOTHUE,
196
			--DIEN_TICH_DA_CHO_THUE = DIEN_TICH_DA_CHO_THUE + @d_DIEN_TICH_CAN_CHOTHUE,
197
			AREA_REMAIN = AREA_REMAIN - @d_DIEN_TICH_CAN_CHOTHUE,
198
			--DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI_FINAL - @d_DIEN_TICH_CAN_CHOTHUE
199
			DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI - @d_DIEN_TICH_CAN_CHOTHUE
200
		WHERE CONTRACT_DTID = @d_CONTRACT_DTID
201
		END
202
		------------------------------------------------------------------------------------------
203
		IF @@Error <> 0 GOTO ABORT	
204

    
205
		-----BAODNQ 17/1/2022: Insert vào BUD_CONTRACT_LOG khi trưởng dv duyệt thành công
206

    
207

    
208

    
209
		FETCH NEXT FROM XmlDataDoc INTO 
210
									@d_CONTRACT_DTID,	
211
									@d_BUILD_ID,
212
									@d_VERSION_NO,
213
									@d_BUILDING_AREA_ID,
214
									@d_RENT_AREA,
215
									@d_RENT_AREA_APP,
216
									@d_AREA_REMAIN,
217
									@d_RENT_PRICE,
218
									@d_NOTES,
219
									@d_DIEN_TICH_TANG,
220
									@d_DIEN_TICH_SD_NOI_BO,
221
									@d_DIEN_TICH_DA_CHO_THUE,
222
									@d_DIEN_TICH_CON_LAI,
223
									@d_DIEN_TICH_CAN_CHOTHUE,
224
									@d_PRICE,
225
									@d_TOTAL_AMT,
226
									@d_DIEN_TICH_CON_LAI_FINAL
227
		END
228
		CLOSE XmlDataDoc
229
		DEALLOCATE XmlDataDoc
230
		--**** UPDATE BUD_CONTRACT_CUST_MASTER*************
231
		SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_CUST_DT 
232
														WHERE CONTRACT_ID =@p_CONTRACT_ID
233
														AND VERSION_NO=@p_VERSION_NO)
234
		SET @p_MONTH= (SELECT MONTHS FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID=@p_CONTRACT_ID 
235
															 AND   VERSION_NO=@p_VERSION_NO)												
236
		UPDATE BUD_CONTRACT_CUST_MASTER
237
		SET RENT_PRICE=@p_RENT_PRICE *@p_MONTH
238
		WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
239
		---*** UPDATE BUD_MASTER-------------------------------
240
		SET @_BUILDING_ID =(SELECT BUILDING_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO)
241
		UPDATE BUD_MASTER
242
		SET UTILZED_AREA = (SELECT ISNULL(SUM(UTILZED_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
243
		WHERE BUILDING_ID=@_BUILDING_ID
244
		---***UPDATE DIEN TICH CHO THUE TOAN BO TOA NHA
245
		--SET @TOATAL_INTERNAL  =  (SELECT ISNULL(SUM(INTERNAL_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
246
		--UPDATE BUD_MASTER
247
		--SET RENT_TOTAL_AREA = TOTAL_AREA -@TOATAL_INTERNAL
248
		--WHERE BUILDING_ID = @_BUILDING_ID
249

    
250
		UPDATE BUD_CONTRACT_CUST_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
251
		WHERE VERSION_NO=@p_VERSION_NO AND CONTRACT_ID =@p_CONTRACT_ID
252

    
253
		---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
254
			INSERT INTO dbo.PL_PROCESS
255
					(
256
					    REQ_ID,
257
					    PROCESS_ID,
258
					    CHECKER_ID,
259
					    APPROVE_DT,
260
					    PROCESS_DESC,
261
					    NOTES
262
					)
263
					VALUES
264
					(   @p_CONTRACT_ID,       
265
						'APPROVE',
266
					    @P_CHECKER_ID,        
267
					    GETDATE(), 
268
					    N'Trưởng đơn vị duyệt hợp đồng khách thuê thành công' ,      
269
					    N'Trưởng đơn vị duyệt hợp đồng khách thuê'       
270
					 )
271

    
272
		-----BAODNQ 17/1/2022: Insert vào BUD_CONTRACT_LOG khi trưởng dv duyệt thành công
273
		--DECLARE @p_CUSTOMER_ID VARCHAR(15), 
274
		--		@p_TOTAL_AMT DECIMAL(18,0), 
275
		--		@p_IS_FIRST_TIME VARCHAR(1),
276
		--		@p_VAT DECIMAL(18,0)
277

    
278
		--SET @p_CUSTOMER_ID = (SELECT CUST_ID FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
279
		--SET @p_TOTAL_AMT = (SELECT VAT_AMT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
280
		--SET @p_VAT = (SELECT VAT FROM BUD_CONTRACT_CUST_MASTER WHERE CONTRACT_ID = @p_CONTRACT_ID)
281

    
282
		--IF(NOT EXISTS (SELECT * FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @p_CONTRACT_ID AND IS_FIRST_TIME = 'Y'))
283
		--BEGIN
284
		--	SET @p_IS_FIRST_TIME = 'Y'
285
		--END
286
		--ELSE
287
		--BEGIN
288
		--	SET @p_IS_FIRST_TIME = 'N'
289
		--END
290

    
291
		--INSERT INTO BUD_CONTRACT_LOG 
292
		--	VALUES(@p_CONTRACT_ID, @p_CUSTOMER_ID, @p_TOTAL_AMT, @p_VAT ,@p_IS_FIRST_TIME, 
293
		--			CONVERT(DATETIME,@P_APPROVE_DT,103))
294
		--IF @@ERROR <> 0 GOTO ABORT
295

    
296

    
297
COMMIT TRANSACTION
298
SELECT '0' as Result, @p_VERSION_NO  VERSION_NO, '' ErrorDesc
299
RETURN '0'
300
ABORT:
301
BEGIN
302
		ROLLBACK TRANSACTION
303
		SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
304
		RETURN '-1'
305
End
306

    
307

    
308

    
309