Project

General

Profile

BUD_MASTER_Ins.txt

Quản lý trụ sở lưới danh sách các tầng - Luc Tran Van, 03/10/2022 04:53 PM

 
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