1
|
|
2
|
|
3
|
ALTER PROCEDURE [dbo].[BUD_MASTER_Ins]
|
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) = NULL,
|
11
|
@p_TOTAL_AREA numeric(18) = NULL,
|
12
|
@p_RENT_TOTAL_AREA numeric(18) = NULL,
|
13
|
@p_UTILZED_AREA numeric(18) = NULL,
|
14
|
@p_NOTES ntext = 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
|
|
30
|
AS
|
31
|
/*
|
32
|
--Validation is here
|
33
|
DECLARE @ERRORSYS NVARCHAR(15) = ''
|
34
|
IF ( NOT EXISTS ( SELECT * FROM BUD_MASTER WHERE BUILDING_ID=@p_BUILDING_ID
|
35
|
SET @ERRORSYS = ''
|
36
|
IF @ERRORSYS <> ''
|
37
|
BEGIN
|
38
|
SELECT ErrorCode Result, '' BUILDING_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
|
39
|
RETURN '0'
|
40
|
END
|
41
|
*/
|
42
|
BEGIN TRANSACTION
|
43
|
DECLARE @l_BUILDING_ID VARCHAR(15)
|
44
|
EXEC SYS_CodeMasters_Gen 'BUD_MASTER', @l_BUILDING_ID out
|
45
|
IF @l_BUILDING_ID='' OR @l_BUILDING_ID IS NULL GOTO ABORT
|
46
|
INSERT INTO BUD_MASTER([BUILDING_ID],[ASSET_ID],[BUILDING_NAME],[BRANCH_ID],[ADDRESS],[OWNER_OR_RENT],
|
47
|
[NUM_FLOOR],[AREA],[TOTAL_AREA],[RENT_TOTAL_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],
|
48
|
[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[XML_TEMP],[RENT_AMT],[DEPOSITS_AMT],[RENT_TIME],[IS_SEND_APPR],[SEND_APPR_DT],
|
49
|
[SIGN_USER], [SIGN_DT]
|
50
|
)
|
51
|
VALUES(@l_BUILDING_ID ,@p_ASSET_ID ,@p_BUILDING_NAME ,@p_BRANCH_ID ,@p_ADDRESS ,
|
52
|
@p_OWNER_OR_RENT ,@p_NUM_FLOOR ,@p_AREA ,@p_TOTAL_AREA ,@p_RENT_TOTAL_AREA ,0 ,
|
53
|
@p_NOTES ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,
|
54
|
@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_XML_TEMP,@p_RENT_AMT,@p_DEPOSITS_AMT,@p_RENT_TIME,@p_IS_SEND_APPR
|
55
|
, @p_SEND_APPR_DT ,@p_SIGN_USER,@p_SIGN_DT)
|
56
|
IF @@Error <> 0 GOTO ABORT
|
57
|
|
58
|
-----------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ở
|
59
|
DECLARE @p_XML_TOTAL_COUNT INT
|
60
|
SET @p_XML_TOTAL_COUNT = (
|
61
|
SELECT @p_XML_TEMP.value('count(/Root/XmlData1/BUILDING_AREA_ID)', 'INT') as 'COUNT'
|
62
|
)
|
63
|
PRINT @p_XML_TOTAL_COUNT
|
64
|
IF(@p_NUM_FLOOR <> @p_XML_TOTAL_COUNT)
|
65
|
BEGIN
|
66
|
ROLLBACK TRANSACTION
|
67
|
SELECT '-1' as Result, '' BUILDING_ID,
|
68
|
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
|
69
|
RETURN '-1'
|
70
|
END
|
71
|
|
72
|
|
73
|
Declare @hdoc1 INT
|
74
|
DECLARE @d_BUILDING_AREA_ID VARCHAR(15),
|
75
|
@d_FLOOR_NO INT,
|
76
|
@d_FLOOR_AREA decimal,
|
77
|
@d_INTERNAL_AREA decimal,
|
78
|
@d_RENT_AREA decimal,
|
79
|
@d_UTILZED_AREA decimal,
|
80
|
@d_NOTES NVARCHAR(1000)
|
81
|
Exec sp_xml_preparedocument @hdoc1 Output,@p_XML_TEMP
|
82
|
DECLARE XmlDataDoc CURSOR FOR
|
83
|
SELECT *
|
84
|
FROM OPENXML(@hdoc1,'/Root/XmlData1',2)
|
85
|
WITH
|
86
|
(
|
87
|
BUILDING_AREA_ID VARCHAR(15),
|
88
|
FLOOR_NO INT,
|
89
|
FLOOR_AREA decimal,
|
90
|
INTERNAL_AREA decimal,
|
91
|
RENT_AREA decimal,
|
92
|
UTILZED_AREA decimal,
|
93
|
NOTES NVARCHAR(1000)
|
94
|
)
|
95
|
OPEN XmlDataDoc
|
96
|
FETCH NEXT FROM XmlDataDoc INTO
|
97
|
@d_BUILDING_AREA_ID ,
|
98
|
@d_FLOOR_NO ,
|
99
|
@d_FLOOR_AREA ,
|
100
|
@d_INTERNAL_AREA ,
|
101
|
@d_RENT_AREA ,
|
102
|
@d_UTILZED_AREA ,
|
103
|
@d_NOTES
|
104
|
WHILE @@FETCH_STATUS = 0
|
105
|
BEGIN
|
106
|
IF(LEN( @d_BUILDING_AREA_ID)=0)
|
107
|
EXEC SYS_CodeMasters_Gen 'BUD_AREA_DT', @d_BUILDING_AREA_ID out
|
108
|
IF @d_BUILDING_AREA_ID='' OR @d_BUILDING_AREA_ID IS NULL GOTO ABORT
|
109
|
INSERT INTO BUD_AREA_DT([BUILDING_AREA_ID],[BUILD_ID],[FLOOR_NO],[FLOOR_AREA],[INTERNAL_AREA],
|
110
|
[RENT_AREA],[UTILZED_AREA],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT])
|
111
|
VALUES(@d_BUILDING_AREA_ID ,@l_BUILDING_ID ,@d_FLOOR_NO ,@d_FLOOR_AREA ,@d_INTERNAL_AREA ,@d_RENT_AREA ,
|
112
|
@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) )
|
113
|
IF @@Error <> 0 GOTO ABORT
|
114
|
FETCH NEXT FROM XmlDataDoc INTO
|
115
|
@d_BUILDING_AREA_ID ,
|
116
|
@d_FLOOR_NO ,
|
117
|
@d_FLOOR_AREA ,
|
118
|
@d_INTERNAL_AREA ,
|
119
|
@d_RENT_AREA ,
|
120
|
@d_UTILZED_AREA ,
|
121
|
@d_NOTES
|
122
|
END
|
123
|
CLOSE XmlDataDoc
|
124
|
DEALLOCATE XmlDataDoc
|
125
|
-----**** UPDATE ------
|
126
|
--8/12/2021,datmq thêm UTILZED_AREA=(SELECT SUM(UTILZED_AREA))----
|
127
|
UPDATE BUD_MASTER
|
128
|
SET TOTAL_AREA = (SELECT SUM(FLOOR_AREA) FROM BUD_AREA_DT WHERE BUILD_ID=@l_BUILDING_ID)
|
129
|
WHERE BUILDING_ID=@l_BUILDING_ID
|
130
|
-- 29/12/2021:datmq Insert to table PL_PROCESS
|
131
|
INSERT INTO dbo.PL_PROCESS
|
132
|
(
|
133
|
REQ_ID,
|
134
|
PROCESS_ID,
|
135
|
CHECKER_ID,
|
136
|
APPROVE_DT,
|
137
|
PROCESS_DESC,
|
138
|
NOTES
|
139
|
)
|
140
|
VALUES
|
141
|
( @l_BUILDING_ID,
|
142
|
'INSERT',
|
143
|
@p_MAKER_ID,
|
144
|
GETDATE(),
|
145
|
N'Thêm mới quản lý trụ sở thành công' ,
|
146
|
N'Thêm mới quản lý trụ sở'
|
147
|
)
|
148
|
COMMIT TRANSACTION
|
149
|
SELECT '0' as Result, @l_BUILDING_ID BUILDING_ID, '' ErrorDesc
|
150
|
RETURN '0'
|
151
|
ABORT:
|
152
|
BEGIN
|
153
|
CLOSE XmlDataDoc
|
154
|
DEALLOCATE XmlDataDoc
|
155
|
ROLLBACK TRANSACTION
|
156
|
SELECT '-1' as Result, '' BUILDING_ID, '' ErrorDesc
|
157
|
RETURN '-1'
|
158
|
End
|