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
|
|