Project

General

Profile

BUD_MASTER_Upd.txt

Luc Tran Van, 06/30/2022 03:34 PM

 
1

    
2
ALTER PROCEDURE [dbo].[BUD_MASTER_Upd]
3
@p_BUILDING_ID	varchar(15) = null ,
4
@p_ASSET_ID	varchar(15) = NULL ,
5
@p_BUILDING_NAME	nvarchar(1000) = NULL ,
6
@p_BRANCH_ID	varchar(15) = NULL ,
7
@p_ADDRESS	nvarchar(800) = NULL ,
8
@p_OWNER_OR_RENT	varchar(1) = NULL ,
9
@p_NUM_FLOOR	int = NULL,
10
@p_AREA	numeric(18,2) = NULL ,
11
@p_TOTAL_AREA	numeric(18,2) = NULL ,
12
@p_RENT_TOTAL_AREA	numeric(18,2) = NULL ,
13
@p_UTILZED_AREA	numeric(18,2) = NULL ,
14
@p_NOTES	nvarchar(1000) = NULL ,
15
@p_RECORD_STATUS	varchar(1) = NULL ,
16
@p_AUTH_STATUS	varchar(1) = NULL ,
17
@p_MAKER_ID	varchar(15) = NULL ,
18
@p_CREATE_DT	VARCHAR(20) = NULL,
19
@p_CHECKER_ID	varchar(15) = NULL ,
20
@p_APPROVE_DT	VARCHAR(20) = NULL,
21
@p_XML_TEMP	xml = NULL,
22
@p_RENT_AMT DECIMAL(18,0) =NULL,
23
@p_DEPOSITS_AMT DECIMAL(18,0) =NULL,
24
@p_RENT_TIME int,
25
@p_IS_SEND_APPR VARCHAR(15),
26
@p_SEND_APPR_DT VARCHAR(20),
27
@p_SIGN_USER VARCHAR(15),
28
@p_SIGN_DT VARCHAR(15),
29
@p_CONTRACT_ID VARCHAR(15) = NULL,
30
@p_SUP_ID VARCHAR(15) = NULL,
31
@p_VAT INT = 0,
32
@p_LENGTH DECIMAL(18,2) = NULL,
33
@p_WIDTH DECIMAL(18,2) = NULL
34

    
35
AS
36
/*
37
--Validation is here
38
		DECLARE @ERRORSYS NVARCHAR(15) = ''
39
IF ( NOT EXISTS ( SELECT * FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID
40
	SET @ERRORSYS = ''
41
	IF @ERRORSYS <> ''
42
	BEGIN
43
		SELECT ErrorCode Result, ''BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
44
		RETURN '0'
45
	END
46
*/
47

    
48
IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U'))
49
BEGIN
50
	SET @p_IS_SEND_APPR = (SELECT IS_SEND_APPR FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID)
51
	SELECT '-1' as Result, '' BUILDING_ID, @p_IS_SEND_APPR IS_SEND_APPR, 
52
		N'Không thể chỉnh sửa. Thông tin quản lý trụ sở đã được gửi yêu cầu phê duyệt' ErrorDesc
53
	RETURN '-1'
54
END
55

    
56
BEGIN TRANSACTION
57
		DECLARE @p_ROW_NUM INT = 0
58
		
59
		IF(EXISTS (SELECT * FROM BUD_MASTER WHERE BUILDING_ID = @p_BUILDING_ID AND AUTH_STATUS = 'A'))
60
		BEGIN
61
		---------------CẬP NHẬT LẠI SAU KHI ĐÃ DUYỆT------------
62
			SET @p_CHECKER_ID = NULL
63
			SET @p_APPROVE_DT = NULL
64
			SET @p_SIGN_DT = NULL
65
			SET @p_SEND_APPR_DT = NULL
66
		END
67

    
68
		UPDATE BUD_MASTER SET [ASSET_ID] = @p_ASSET_ID,[BUILDING_NAME] = @p_BUILDING_NAME,
69
		[BRANCH_ID] = @p_BRANCH_ID,[ADDRESS] = @p_ADDRESS,
70
		[OWNER_OR_RENT] = @p_OWNER_OR_RENT,[NUM_FLOOR] = @p_NUM_FLOOR,
71
		[AREA] = @p_AREA,[TOTAL_AREA] = @p_TOTAL_AREA,
72
		[RENT_TOTAL_AREA] = @p_RENT_TOTAL_AREA,
73
		[UTILZED_AREA] = @p_UTILZED_AREA,[NOTES] = @p_NOTES,
74
		[RECORD_STATUS] = @p_RECORD_STATUS,[AUTH_STATUS] = @p_AUTH_STATUS,
75
		[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),
76
		[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),
77
		[XML_TEMP] = @p_XML_TEMP,
78
		[RENT_AMT]=@p_RENT_AMT,
79
		[DEPOSITS_AMT] =@p_DEPOSITS_AMT,
80
		[RENT_TIME] =@p_RENT_TIME,
81
		[IS_SEND_APPR] = @p_IS_SEND_APPR,
82
		[SEND_APPR_DT] = CONVERT(DATETIME, @p_SEND_APPR_DT, 103),
83
		[SIGN_USER] = @p_SIGN_USER,
84
		[SIGN_DT]= CONVERT(DATETIME, @p_SIGN_DT, 103),
85
		[CONTRACT_ID] = @p_CONTRACT_ID,
86
		[SUP_ID] = @p_SUP_ID,
87
		[VAT] = @p_VAT,
88
		[LENGTH] = @p_LENGTH,
89
		[WIDTH] = @p_WIDTH
90

    
91
		WHERE  BUILDING_ID= @p_BUILDING_ID
92
		IF @@Error <> 0 GOTO ABORT
93
		DELETE FROM BUD_AREA_DT WHERE BUILD_ID =@p_BUILDING_ID
94

    
95
		-----------BAODNQ 10/3/2022 : Kiểm tra danh sách tầng phải khớp với số tầng của trụ sở
96
		DECLARE @p_XML_TOTAL_COUNT INT
97
		SET @p_XML_TOTAL_COUNT = (
98
			SELECT @p_XML_TEMP.value('count(/Root/XmlData1/BUILDING_AREA_ID)', 'INT') as 'COUNT'
99
		)
100
		PRINT @p_XML_TOTAL_COUNT
101
		--IF(@p_NUM_FLOOR <> @p_XML_TOTAL_COUNT)
102
		--BEGIN
103
		--	ROLLBACK TRANSACTION
104
		--	SELECT '-1' as Result, '' BUILDING_ID, 
105
		--			N'Số tầng trên lưới danh sách phải khớp với số tầng của trụ sở' ErrorDesc
106
		--	RETURN '-1'
107
		--END
108
		
109
		------------CHECK TỔNG DT CÁC TẦNG PHẢI = DT TRỤ SỞ---------
110
		DECLARE @p_XML_TOTAL_FLOOR_AREA NUMERIC(18,2)
111
		SET @p_XML_TOTAL_FLOOR_AREA = (
112
			SELECT @p_XML_TEMP.value('sum(/Root/XmlData1/FLOOR_AREA)', 'DECIMAL(18,2)') AS 'SUM'
113
		)
114
		PRINT @p_XML_TOTAL_FLOOR_AREA
115
		IF(@p_XML_TOTAL_FLOOR_AREA <> @p_TOTAL_AREA)
116
		BEGIN
117
			ROLLBACK TRANSACTION
118
			SELECT '-1' as Result, '' BUILDING_ID, 
119
					N'Tổng diện tích các tầng phải bằng diện tích trụ sở' ErrorDesc
120
			RETURN '-1'
121
		END
122

    
123
		Declare @hdoc1 INT
124
		DECLARE @d_BUILDING_AREA_ID VARCHAR(15),
125
				@d_FLOOR_NO INT,
126
				@d_FLOOR_AREA decimal(18,2),
127
				@d_INTERNAL_AREA decimal(18,2),
128
				@d_RENT_AREA decimal(18,2),
129
				@d_UTILZED_AREA decimal(18,2),
130
				@d_NOTES	NVARCHAR(1000)
131
		Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
132
		DECLARE XmlDataDoc CURSOR FOR
133
		SELECT *
134
		FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
135
		WITH 
136
		(	
137
				BUILDING_AREA_ID VARCHAR(15),
138
				FLOOR_NO INT,
139
				FLOOR_AREA decimal(18,2),
140
				INTERNAL_AREA decimal(18,2),
141
				RENT_AREA decimal(18,2),
142
				UTILZED_AREA decimal(18,2),
143
				NOTES	NVARCHAR(1000)
144
		)
145
		OPEN XmlDataDoc			
146
		FETCH NEXT FROM XmlDataDoc INTO 
147
									@d_BUILDING_AREA_ID ,
148
									@d_FLOOR_NO ,
149
									@d_FLOOR_AREA ,
150
									@d_INTERNAL_AREA ,
151
									@d_RENT_AREA ,
152
									@d_UTILZED_AREA ,
153
									@d_NOTES	
154
		WHILE @@FETCH_STATUS = 0
155
		BEGIN
156
			SET @p_ROW_NUM = @p_ROW_NUM + 1
157
			IF(LEN(	@d_BUILDING_AREA_ID)=0) 	
158
			EXEC SYS_CodeMasters_Gen 'BUD_AREA_DT', @d_BUILDING_AREA_ID out
159
			IF @d_BUILDING_AREA_ID='' OR @d_BUILDING_AREA_ID IS NULL GOTO ABORT
160

    
161
			-------CHECK TỔNG DT CHO THUÊ VÀ SỬ DỤNG PH NHỎ HƠN HOẶC BẰNG DT TẦNG--------
162
			IF(@d_FLOOR_AREA - (@d_INTERNAL_AREA + @d_UTILZED_AREA) < 0)
163
			BEGIN
164
				CLOSE XmlDataDoc
165
				DEALLOCATE XmlDataDoc
166
				ROLLBACK TRANSACTION
167
				SELECT '-1' as Result, '' BUILDING_ID, '' BUILDING_NAME,
168
					N'Lưới danh sách các tầng của trụ sở, dòng ' + CONVERT(NVARCHAR,@p_ROW_NUM) + 
169
					N': Tổng diện tích sử dụng và diện tích cho thuê phải nhỏ hơn hoặc bằng diện tích tầng' ErrorDesc
170
				RETURN '-1'
171

    
172
			END
173

    
174
			INSERT INTO BUD_AREA_DT([BUILDING_AREA_ID],[BUILD_ID],[FLOOR_NO],[FLOOR_AREA],[INTERNAL_AREA],
175
			[RENT_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT])
176
			VALUES(@d_BUILDING_AREA_ID ,@p_BUILDING_ID ,@d_FLOOR_NO ,@d_FLOOR_AREA ,@d_INTERNAL_AREA ,0 ,
177
		@d_UTILZED_AREA ,@d_NOTES,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) )
178
			IF @@Error <> 0 GOTO ABORT	
179
			FETCH NEXT FROM XmlDataDoc INTO 
180
									@d_BUILDING_AREA_ID ,
181
									@d_FLOOR_NO ,
182
									@d_FLOOR_AREA ,
183
									@d_INTERNAL_AREA ,
184
									@d_RENT_AREA ,
185
									@d_UTILZED_AREA ,
186
									@d_NOTES	
187
		END
188
		CLOSE XmlDataDoc
189
		DEALLOCATE XmlDataDoc
190
		-----**** UPDATE ----
191
		--8/12/2021,datmq thêm UTILZED_AREA=(SELECT SUM(UTILZED_AREA))----
192
		UPDATE BUD_MASTER 
193
		SET TOTAL_AREA = (SELECT SUM(FLOOR_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@p_BUILDING_ID),UTILZED_AREA=(SELECT SUM(UTILZED_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@p_BUILDING_ID)
194
			
195

    
196
		WHERE BUILDING_ID=@p_BUILDING_ID
197
		-- 29/12/2021:datmq  Insert to table PL_PROCESS
198

    
199
		------Chỉ ghi lại bước xử lý cuối cùng khi update nhiều lần-----
200
		--DELETE FROM PL_PROCESS WHERE REQ_ID = @p_BUILDING_ID AND PROCESS_ID = 'UPDATE'
201

    
202
		INSERT INTO dbo.PL_PROCESS
203
					(
204
					    REQ_ID,
205
					    PROCESS_ID,
206
					    CHECKER_ID,
207
					    APPROVE_DT,
208
					    PROCESS_DESC,
209
					    NOTES
210
					)
211
					VALUES
212
					(   @p_BUILDING_ID,       
213
						'UPDATE',
214
					    @p_MAKER_ID,        
215
					    GETDATE(), 
216
					    N'Cập nhật quản lý trụ sở thành công' ,      
217
					    N'Cập nhật quản lý trụ sở'       
218
					 )
219
COMMIT TRANSACTION
220
		SELECT '0' as Result, @p_BUILDING_ID  BUILDING_ID, '' ErrorDesc
221
		RETURN '0'
222
ABORT:
223
BEGIN
224
		
225
		ROLLBACK TRANSACTION
226
		SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc
227
		RETURN '-1'
228
End