1
|
|
2
|
ALTER PROCEDURE [dbo].[BUD_CONTRACT_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_DT
|
26
|
WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO-1
|
27
|
|
28
|
|
29
|
-----*** INSERT VERSION -1 VAO TRONG BANG LOG
|
30
|
IF @@Error <> 0 GOTO ABORT
|
31
|
Declare @hdoc1 INT
|
32
|
DECLARE
|
33
|
@d_CONTRACT_DTID VARCHAR(15),
|
34
|
@d_BUILD_ID VARCHAR(15),
|
35
|
@d_VERSION_NO INT,
|
36
|
@d_BUILDING_AREA_ID VARCHAR(15),
|
37
|
@d_RENT_AREA DECIMAL,
|
38
|
@d_RENT_AREA_APP DECIMAL,
|
39
|
@d_AREA_REMAIN DECIMAL,
|
40
|
@d_RENT_PRICE DECIMAL,
|
41
|
@d_DIEN_TICH_TANG DECIMAL,
|
42
|
@d_DIEN_TICH_SD_NOI_BO DECIMAL,
|
43
|
@d_DIEN_TICH_DA_CHO_THUE DECIMAL,
|
44
|
@d_DIEN_TICH_CON_LAI DECIMAL,
|
45
|
@d_DIEN_TICH_CAN_SD DECIMAL,
|
46
|
@d_REASON NVARCHAR(MAX),
|
47
|
@d_PRICE DECIMAL,
|
48
|
@d_TOTAL_AMT DECIMAL,
|
49
|
@d_DIEN_TICH_CON_LAI_FINAL DECIMAL,
|
50
|
@d_BRANCH_ID NVARCHAR(15),
|
51
|
@d_DEP_ID NVARCHAR(15)
|
52
|
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
|
53
|
DECLARE XmlDataDoc CURSOR FOR
|
54
|
SELECT *
|
55
|
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
|
56
|
WITH
|
57
|
(
|
58
|
----BAODNQ-21/12/2021: Thêm các cột vào cursor XML-----
|
59
|
|
60
|
CONTRACT_DTID VARCHAR(15),
|
61
|
BUILD_ID VARCHAR(15),
|
62
|
VERSION_NO INT,
|
63
|
BUILDING_AREA_ID VARCHAR(15),
|
64
|
RENT_AREA DECIMAL,
|
65
|
RENT_AREA_APP DECIMAL,
|
66
|
AREA_REMAIN DECIMAL,
|
67
|
RENT_PRICE DECIMAL,
|
68
|
DIEN_TICH_TANG DECIMAL,
|
69
|
DIEN_TICH_SD_NOI_BO DECIMAL,
|
70
|
DIEN_TICH_DA_CHO_THUE DECIMAL,
|
71
|
DIEN_TICH_CON_LAI DECIMAL,
|
72
|
DIEN_TICH_CAN_SD DECIMAL,
|
73
|
REASON NVARCHAR(MAX),
|
74
|
PRICE DECIMAL,
|
75
|
TOTAL_AMT DECIMAL,
|
76
|
DIEN_TICH_CON_LAI_FINAL DECIMAL,
|
77
|
BRANCH_ID NVARCHAR(15),
|
78
|
DEP_ID NVARCHAR(15)
|
79
|
)
|
80
|
OPEN XmlDataDoc
|
81
|
FETCH NEXT FROM XmlDataDoc INTO
|
82
|
@d_CONTRACT_DTID,
|
83
|
@d_BUILD_ID,
|
84
|
@d_VERSION_NO,
|
85
|
@d_BUILDING_AREA_ID,
|
86
|
@d_RENT_AREA,
|
87
|
@d_RENT_AREA_APP,
|
88
|
@d_AREA_REMAIN,
|
89
|
@d_RENT_PRICE,
|
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_SD,
|
95
|
@d_REASON,
|
96
|
@d_PRICE,
|
97
|
@d_TOTAL_AMT,
|
98
|
@d_DIEN_TICH_CON_LAI_FINAL,
|
99
|
@d_BRANCH_ID,
|
100
|
@d_DEP_ID
|
101
|
WHILE @@FETCH_STATUS = 0
|
102
|
BEGIN
|
103
|
SET @STT= @STT+1
|
104
|
SET @VALUE_ERROR = (SELECT FLOOR_AREA - (UTILZED_AREA + INTERNAL_AREA)
|
105
|
FROM BUD_AREA_DT
|
106
|
WHERE BUILDING_AREA_ID = @d_BUILDING_AREA_ID
|
107
|
)
|
108
|
--+(SELECT SUM(RENT_AREA) FROM BUD_CONTRACT_DT
|
109
|
--WHERE CONTRACT_ID =@p_CONTRACT_ID AND CONTRACT_ID IN(SELECT CONTRACT_ID FROM
|
110
|
--BUD_CONTRACT_MASTER WHERE AUTH_STATUS='A'))
|
111
|
--DIEN TICH CHO THUE PHAI LON HON DIEN TICH CON LAI+ DIEN TICH VERSION CŨ TRONG TRUONG
|
112
|
--HOP TAO PHU LUC HOP DONG
|
113
|
|
114
|
----BAODNQ-21/12/2021: Đổi @d_RENT_AREA thành @d_DIEN_TICH_CAN_SD-------
|
115
|
|
116
|
IF ( @d_DIEN_TICH_CAN_SD > (@VALUE_ERROR + @d_RENT_AREA_APP))
|
117
|
BEGIN
|
118
|
DECLARE @ERRORSYS NVARCHAR(200) =''
|
119
|
SET @ERRORSYS = N'Dòng '+ convert(nvarchar(2),@stt) +N': Cột DT cần sử dụng phải nhỏ hơn hoặc bằng cột DT trống: '+ convert(nvarchar(20),@VALUE_ERROR)
|
120
|
END
|
121
|
IF @ERRORSYS <> ''
|
122
|
BEGIN
|
123
|
CLOSE XmlDataDoc
|
124
|
DEALLOCATE XmlDataDoc
|
125
|
ROLLBACK TRANSACTION
|
126
|
SELECT '-1' as Result, '' CONTRACT_ID, @ERRORSYS ErrorDesc
|
127
|
RETURN '-1'
|
128
|
END
|
129
|
----**** INSERT VERSION CURRENT -1-------------------------------------------------------------------------
|
130
|
--IF(@p_VERSION_NO>1)
|
131
|
--BEGIN
|
132
|
-- SET @_BUILDING_AREA_ID= (SELECT TOP(1) BUILDING_AREA_ID FROM @tmp)
|
133
|
-- SET @_RENT_AREA= (SELECT TOP(1) RENT_AREA FROM @tmp)
|
134
|
-- SET @p_RENT_PRICE= (SELECT TOP(1) RENT_PRICE FROM @tmp)
|
135
|
-- EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @_BUILDING_UTIL_LOG out
|
136
|
-- IF @_BUILDING_UTIL_LOG='' OR @_BUILDING_UTIL_LOG IS NULL GOTO ABORT
|
137
|
-- 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])
|
138
|
-- 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) )
|
139
|
-- ------**** INSERT INTO CONTRACT_VALUES ---------------------------------------------------------------
|
140
|
-- EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
|
141
|
-- IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
|
142
|
-- 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_REASON,
|
143
|
-- '1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
|
144
|
-- DELETE @tmp WHERE CONTRACT_DTID = (SELECT TOP(1) CONTRACT_DTID FROM @tmp)
|
145
|
--END
|
146
|
-----***INSERT VERSION CURRENT------------------------------------------------------------------
|
147
|
DECLARE @l_UTIL_ID VARCHAR(15)
|
148
|
EXEC SYS_CodeMasters_Gen 'BUD_UTIL_LOG', @l_UTIL_ID out
|
149
|
IF @l_UTIL_ID='' OR @l_UTIL_ID IS NULL GOTO ABORT
|
150
|
|
151
|
----BAODNQ-21/12/2021: Đổi biến insert vào cột [AREA] thành @d_DIEN_TICH_CAN_SD + thêm cột vào bảng BUD_UTIL_LOG-------
|
152
|
|
153
|
-----BAODNQ 17/1/2022: Thêm cột vào bảng BUD_UTIL_LOG
|
154
|
DECLARE @p_IS_FIRST_TIME VARCHAR(1)
|
155
|
IF(NOT EXISTS
|
156
|
(SELECT * FROM BUD_UTIL_LOG
|
157
|
WHERE CONTRACT_ID = @p_CONTRACT_ID
|
158
|
AND BUILDING_AREA_ID = @d_BUILDING_AREA_ID
|
159
|
AND CUSTOMER_ID = @d_BRANCH_ID
|
160
|
AND IS_FIRST_TIME = 'Y'))
|
161
|
BEGIN
|
162
|
SET @p_IS_FIRST_TIME = 'Y'
|
163
|
END
|
164
|
ELSE
|
165
|
BEGIN
|
166
|
SET @p_IS_FIRST_TIME = 'N'
|
167
|
END
|
168
|
|
169
|
INSERT INTO BUD_UTIL_LOG([UTIL_ID],[BUILDING_AREA_ID],[UTIL_TYPE],[UTIL_RELEASE],[CONTRACT_ID],
|
170
|
[VERSION_NO],[UTIL_DT],[AREA],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],
|
171
|
[APPROVE_DT], [TOTAL_AMT_INIT], [VAT_INIT], [IS_FIRST_TIME], [CUSTOMER_ID])
|
172
|
VALUES(@l_UTIL_ID ,@d_BUILDING_AREA_ID ,@P_TYPE_CONTRACT ,'U' ,@p_CONTRACT_ID ,@p_VERSION_NO ,
|
173
|
CONVERT(DATETIME, GETDATE(), 103) ,@d_DIEN_TICH_CAN_SD ,'1' ,'A' ,@P_CHECKER_ID ,
|
174
|
CONVERT(DATETIME, GETDATE(), 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, GETDATE(), 103), @d_TOTAL_AMT,
|
175
|
0, @p_IS_FIRST_TIME, @d_BRANCH_ID)
|
176
|
|
177
|
---*** UPDATE CONTRACT_VALUES-------------------------------------------------------
|
178
|
EXEC SYS_CodeMasters_Gen 'CONTRACT_VALUES', @p_VALUE_ID out
|
179
|
IF @p_VALUE_ID='' OR @p_VALUE_ID IS NULL GOTO ABORT
|
180
|
|
181
|
----BAODNQ-21/12/2021: Đổi biến insert vào cột [RENT_AMT] thành @d_TOTAL_AMT-------
|
182
|
|
183
|
INSERT INTO BUD_CONTRACT_VALUES VALUES (@p_VALUE_ID,@p_CONTRACT_ID,@p_VERSION_NO,@d_BUILDING_AREA_ID,@P_TYPE_CONTRACT,'U',@d_TOTAL_AMT,NULL,@d_REASON,
|
184
|
'1','A',@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103),@P_CHECKER_ID,CONVERT(DATETIME,GETDATE(),103))
|
185
|
|
186
|
-----***UPDATE DIEN TICH NOI BO SU DUNG NEU TYPE = I:INTERNAL ------------------------------------------------------------------
|
187
|
IF(@P_TYPE_CONTRACT='I')
|
188
|
BEGIN
|
189
|
UPDATE BUD_AREA_DT
|
190
|
--SET INTERNAL_AREA =(
|
191
|
-- (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)
|
192
|
-- -
|
193
|
-- (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)
|
194
|
|
195
|
-- )
|
196
|
SET INTERNAL_AREA = INTERNAL_AREA + @d_DIEN_TICH_CAN_SD
|
197
|
WHERE BUILDING_AREA_ID =@d_BUILDING_AREA_ID
|
198
|
---****** UPDATE BUD_CONTRACT_DT ******************************************---------
|
199
|
----BAODNQ-21/12/2021: Đổi biến insert vào cột [RENT_AREA_APP] thành @@d_DIEN_TICH_CAN_SD-------
|
200
|
UPDATE BUD_CONTRACT_DT
|
201
|
SET RENT_AREA_APP =RENT_AREA_APP + @d_DIEN_TICH_CAN_SD,
|
202
|
DIEN_TICH_CON_LAI_FINAL = DIEN_TICH_CON_LAI - @d_DIEN_TICH_CAN_SD
|
203
|
WHERE CONTRACT_DTID = @d_CONTRACT_DTID
|
204
|
END
|
205
|
------------------------------------------------------------------------------------------
|
206
|
IF @@Error <> 0 GOTO ABORT
|
207
|
|
208
|
-----BAODNQ 17/1/2022: Insert vào bảng BUD_CONTRACT_LOG khi trưởng dv duyệt thành công
|
209
|
--DECLARE @p_IS_FIRST_TIME VARCHAR(1)
|
210
|
|
211
|
--IF(NOT EXISTS(SELECT*FROM BUD_CONTRACT_LOG WHERE CONTRACT_ID = @d_CONTRACT_DTID AND @p_IS_FIRST_TIME = 'Y'))
|
212
|
--BEGIN
|
213
|
-- SET @p_IS_FIRST_TIME = 'Y'
|
214
|
--END
|
215
|
--ELSE
|
216
|
--BEGIN
|
217
|
-- SET @p_IS_FIRST_TIME = 'N'
|
218
|
--END
|
219
|
--INSERT INTO BUD_CONTRACT_LOG
|
220
|
-- VALUES (@d_CONTRACT_DTID, @d_BRANCH_ID, @d_TOTAL_AMT, 0,@p_IS_FIRST_TIME, CONVERT(DATETIME,@P_APPROVE_DT,103))
|
221
|
--IF @@ERROR <> 0 GOTO ABORT
|
222
|
-------------------------------------
|
223
|
|
224
|
FETCH NEXT FROM XmlDataDoc INTO
|
225
|
@d_CONTRACT_DTID,
|
226
|
@d_BUILD_ID,
|
227
|
@d_VERSION_NO,
|
228
|
@d_BUILDING_AREA_ID,
|
229
|
@d_RENT_AREA,
|
230
|
@d_RENT_AREA_APP,
|
231
|
@d_AREA_REMAIN,
|
232
|
@d_RENT_PRICE,
|
233
|
@d_DIEN_TICH_TANG,
|
234
|
@d_DIEN_TICH_SD_NOI_BO,
|
235
|
@d_DIEN_TICH_DA_CHO_THUE,
|
236
|
@d_DIEN_TICH_CON_LAI,
|
237
|
@d_DIEN_TICH_CAN_SD,
|
238
|
@d_REASON,
|
239
|
@d_PRICE,
|
240
|
@d_TOTAL_AMT,
|
241
|
@d_DIEN_TICH_CON_LAI_FINAL,
|
242
|
@d_BRANCH_ID,
|
243
|
@d_DEP_ID
|
244
|
END
|
245
|
CLOSE XmlDataDoc
|
246
|
DEALLOCATE XmlDataDoc
|
247
|
--**** UPDATE BUD_CONTRACT_MASTER*************
|
248
|
----BAODNQ-21/12/2021: Đổi cột thực hiện SUM thành TOTAL_AMT-------
|
249
|
SET @p_RENT_PRICE = (SELECT SUM(TOTAL_AMT) FROM BUD_CONTRACT_DT
|
250
|
WHERE CONTRACT_ID =@p_CONTRACT_ID
|
251
|
AND VERSION_NO=@p_VERSION_NO)
|
252
|
SET @p_MONTH= (SELECT MONTHS FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID=@p_CONTRACT_ID
|
253
|
AND VERSION_NO=@p_VERSION_NO)
|
254
|
UPDATE BUD_CONTRACT_MASTER
|
255
|
--SET RENT_PRICE=@p_RENT_PRICE *@p_MONTH
|
256
|
SET RENT_PRICE=@p_RENT_PRICE
|
257
|
WHERE CONTRACT_ID=@p_CONTRACT_ID AND VERSION_NO=@p_VERSION_NO
|
258
|
---*** UPDATE BUD_MASTER-------------------------------
|
259
|
SET @_BUILDING_ID =(SELECT BUILDING_ID FROM BUD_CONTRACT_MASTER WHERE CONTRACT_ID =@p_CONTRACT_ID AND VERSION_NO =@p_VERSION_NO)
|
260
|
--UPDATE BUD_MASTER
|
261
|
--SET UTILZED_AREA = (SELECT ISNULL(SUM(UTILZED_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
|
262
|
--WHERE BUILDING_ID=@_BUILDING_ID
|
263
|
---***UPDATE DIEN TICH CHO THUE TOAN BO TOA NHA
|
264
|
SET @TOATAL_INTERNAL = (SELECT ISNULL(SUM(INTERNAL_AREA),0) FROM BUD_AREA_DT WHERE BUILD_ID =@_BUILDING_ID)
|
265
|
UPDATE BUD_MASTER
|
266
|
SET RENT_TOTAL_AREA = TOTAL_AREA -@TOATAL_INTERNAL
|
267
|
WHERE BUILDING_ID = @_BUILDING_ID
|
268
|
|
269
|
UPDATE BUD_CONTRACT_MASTER SET AUTH_STATUS = 'A', CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
|
270
|
WHERE VERSION_NO=@p_VERSION_NO AND CONTRACT_ID =@p_CONTRACT_ID
|
271
|
|
272
|
---BAODNQ 29/12/2021: Insert vào PL_PROCESS lưu lịch sử xử lý
|
273
|
INSERT INTO dbo.PL_PROCESS
|
274
|
(
|
275
|
REQ_ID,
|
276
|
PROCESS_ID,
|
277
|
CHECKER_ID,
|
278
|
APPROVE_DT,
|
279
|
PROCESS_DESC,
|
280
|
NOTES
|
281
|
)
|
282
|
VALUES
|
283
|
( @p_CONTRACT_ID,
|
284
|
'APPROVE',
|
285
|
@P_CHECKER_ID,
|
286
|
GETDATE(),
|
287
|
N'Trưởng đơn vị duyệt thông tin khai báo DTSD nội bộ thành công' ,
|
288
|
N'Trưởng đơn vị duyệt thông tin khai báo DTSD nội bộ'
|
289
|
)
|
290
|
|
291
|
|
292
|
COMMIT TRANSACTION
|
293
|
SELECT '0' as Result, @p_VERSION_NO VERSION_NO, '' ErrorDesc
|
294
|
RETURN '0'
|
295
|
ABORT:
|
296
|
BEGIN
|
297
|
ROLLBACK TRANSACTION
|
298
|
SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
|
299
|
RETURN '-1'
|
300
|
End
|
301
|
|
302
|
|
303
|
|
304
|
|