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
|