Project

General

Profile

upd_nscp_nam.txt

Luc Tran Van, 04/14/2023 10:58 AM

 
1

    
2
ALTER   PROC [dbo].[TR_BUDGET_YEAR_DVKD_DETAIL_IMPORT] (
3
	@p_GD_ID VARCHAR(20), 
4
	@p_BRANCH_ID VARCHAR(20), 
5
	@p_BUDGET_TYPE VARCHAR(20), 
6
	@p_BRANCH_TYPE VARCHAR(20), 
7
	@p_MAKER_ID VARCHAR(20), 
8
	@p_BRANCH_KIND VARCHAR(20), 
9
	@p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL XML = NULL
10
)
11
AS
12

    
13
	IF(@p_GD_ID IS NULL OR @p_GD_ID = '')
14
	BEGIN
15
		SELECT '-1' as Result, N'Mã ngân sách chi phí không được để trống' AS ErrorDesc
16
		RETURN '-1'
17
	END
18
	IF(@p_BUDGET_TYPE IS NULL OR @p_BUDGET_TYPE = '')
19
	BEGIN
20
		SELECT '-1' as Result, N'Loại ngân sách chi phí không được để trống' AS ErrorDesc
21
		RETURN '-1'
22
	END
23
	IF(@p_BRANCH_TYPE IS NULL OR @p_BRANCH_TYPE = '')
24
	BEGIN
25
		SELECT '-1' as Result, N'Loại đơn vị không được để trống' AS ErrorDesc
26
		RETURN '-1'
27
	END
28
BEGIN TRANSACTION
29
	DECLARE @hdoc INT
30
	EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TR_BUDGET_LIMIT_YEAR_DETAIL
31

    
32
	DELETE FROM TR_GOODSTYPE WHERE GD_ID = @p_GD_ID AND BUDGET_TYPE = 'nam'
33
	INSERT INTO TR_GOODSTYPE(GD_ID, BUDGET_TYPE, CREATE_DT, MAKER_ID, APPROVE_DT, CHECKER_ID, RECORD_STATUS, AUTH_STATUS) 
34
	VALUES (@p_GD_ID, 'nam', GETDATE(), @p_MAKER_ID, NULL, NULL, '1', 'A')
35
	
36
	DECLARE XmlBudgetLimitYearhDT CURSOR FOR
37
	SELECT * FROM OPENXML(@hdoc, '/Root/XmlBudgetLimitYearhDT', 2)
38
	WITH (
39
		BRANCH_CODE VARCHAR(15),
40
		BRANCH_NAME NVARCHAR(250),
41
		BRANCH_KIND VARCHAR(2),
42
		BUDGET_YEAR VARCHAR(15),
43
		BUDGET_LIMIT_AMT DECIMAL(18,2),
44
		M1 DECIMAL(18, 0),
45
		M2 DECIMAL(18, 0),
46
		M3 DECIMAL(18, 0),
47
		M4 DECIMAL(18, 0),
48
		M5 DECIMAL(18, 0),
49
		M6 DECIMAL(18, 0),
50
		M7 DECIMAL(18, 0),
51
		M8 DECIMAL(18, 0),
52
		M9 DECIMAL(18, 0),
53
		M10 DECIMAL(18, 0),
54
		M11 DECIMAL(18, 0),
55
		M12 DECIMAL(18, 0)
56
	)
57

    
58
	DECLARE @BRANCH_CODE VARCHAR(15),
59
		@BRANCH_NAME NVARCHAR(250),
60
		@BRANCH_KIND VARCHAR(2),
61
		@BUDGET_YEAR VARCHAR(15),
62
		@BUDGET_LIMIT_AMT DECIMAL(18,2),
63
		@M1 DECIMAL(18, 0),
64
		@M2 DECIMAL(18, 0),
65
		@M3 DECIMAL(18, 0),
66
		@M4 DECIMAL(18, 0),
67
		@M5 DECIMAL(18, 0),
68
		@M6 DECIMAL(18, 0),
69
		@M7 DECIMAL(18, 0),
70
		@M8 DECIMAL(18, 0),
71
		@M9 DECIMAL(18, 0),
72
		@M10 DECIMAL(18, 0),
73
		@M11 DECIMAL(18, 0),
74
		@M12 DECIMAL(18, 0)
75
	
76
	------------------------------------------------ validate begin ------------------------------------------------
77

    
78
	DECLARE @ERROR_MESSAGE nvarchar(MAX)
79
	DECLARE @INDEX INT
80
	SET @INDEX = 2
81

    
82
	OPEN XmlBudgetLimitYearhDT;
83

    
84
	FETCH NEXT FROM XmlBudgetLimitYearhDT 
85
	INTO @BRANCH_CODE, @BRANCH_NAME, @BRANCH_KIND, @BUDGET_YEAR , @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
86
	WHILE @@fetch_status=0 
87
	BEGIN
88
		SET @INDEX = @INDEX +1
89
		DECLARE @l_BRANCH_ID VARCHAR(20);
90
		DECLARE @l_DEP_ID VARCHAR(20);
91
		
92
		SET @l_BRANCH_ID = (SELECT TOP 1 BRANCH_ID FROM CM_BRANCH WHERE BRANCH_CODE = @BRANCH_CODE)
93

    
94
		IF(@BRANCH_KIND IS NULL OR @BRANCH_KIND = '')
95
		BEGIN
96
			ROLLBACK TRANSACTION
97
			CLOSE XmlBudgetLimitYearhDT;
98
			DEALLOCATE XmlBudgetLimitYearhDT;
99
			SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Hình thức đơn vị không được để trống' AS ErrorDesc
100
			RETURN '-1'
101
		END
102

    
103
		IF(ISNULL(@l_BRANCH_ID,'') = '')
104
		BEGIN
105
			ROLLBACK TRANSACTION
106
			CLOSE XmlBudgetLimitYearhDT;
107
			DEALLOCATE XmlBudgetLimitYearhDT;
108
			SELECT '-1' as Result, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Đơn vị ' + @BRANCH_CODE + N' không có trong hệ thống' AS ErrorDesc
109
			RETURN '-1'
110
		END
111
	-- NEU DA TON TAI NGAN SACH THI CHI UPDATE
112
		IF(EXISTS(SELECT TOP 1 * FROM TR_REQ_BUDGET_YEAR_LIMIT WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND))
113
		BEGIN
114
			IF(ISNULL(@M1, 0) >= 0)
115
			BEGIN
116
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M1  = @M1  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
117
			END
118
			IF(ISNULL(@M2, 0) >= 0)
119
			BEGIN
120
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M2  = @M2  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
121
			END																						  
122
			IF(ISNULL(@M3, 0) >= 0)																	  
123
			BEGIN																					  
124
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M3  = @M3  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
125
			END																						  
126
			IF(ISNULL(@M4, 0) >= 0)																	  
127
			BEGIN																					  
128
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M4  = @M4  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
129
			END																						  
130
			IF(ISNULL(@M5, 0) >= 0)																	  
131
			BEGIN																					  
132
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M5  = @M5  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
133
			END																						  
134
			IF(ISNULL(@M6, 0) >= 0)																	  
135
			BEGIN																					  
136
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M6  = @M6  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
137
			END																						  
138
			IF(ISNULL(@M7, 0) >= 0)																	  
139
			BEGIN																					  
140
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M7  = @M7  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
141
			END																						  
142
			IF(ISNULL(@M8, 0) >= 0)																	  
143
			BEGIN																					  
144
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M8  = @M8  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
145
			END																						  
146
			IF(ISNULL(@M9, 0) >= 0)																	  
147
			BEGIN																					  
148
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M9  = @M9  WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
149
			END																						  
150
			IF(ISNULL(@M10, 0) >= 0)																	  
151
			BEGIN																					  
152
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M10 = @M10 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
153
			END																						  
154
			IF(ISNULL(@M11, 0) >= 0)																	  
155
			BEGIN																					  
156
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M11 = @M11 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
157
			END																						  
158
			IF(ISNULL(@M12, 0) >= 0)																	  
159
			BEGIN																					  
160
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET M12 = @M12 WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
161
			END
162
			IF(ISNULL(@BUDGET_LIMIT_AMT, 0) >= 0)																	  
163
			BEGIN																					  
164
				UPDATE TR_REQ_BUDGET_YEAR_LIMIT SET BUDGET_LIMIT_AMT = ISNULL(@BUDGET_LIMIT_AMT, 0) WHERE GD_ID = @p_GD_ID AND BRANCH_ID = @l_BRANCH_ID AND BUDGET_YEAR = @BUDGET_YEAR AND BRANCH_KIND = @BRANCH_KIND
165
			END
166
		IF @@error<>0 GOTO ABORT;
167
		FETCH NEXT FROM XmlBudgetLimitYearhDT 
168
		INTO @BRANCH_CODE, @BRANCH_NAME, @BRANCH_KIND, @BUDGET_YEAR, @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
169
		END
170
		ELSE
171
		BEGIN
172
			-- Tự động sinh mã code
173
			DECLARE @BUDGET_YEAR_LIMIT_ID VARCHAR(15);
174
			EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR', @BUDGET_YEAR_LIMIT_ID OUT;
175
			IF @BUDGET_YEAR_LIMIT_ID='' OR @BUDGET_YEAR_LIMIT_ID IS NULL GOTO ABORT;
176

    
177
			INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT(BUDGET_YEAR_LIMIT_ID, GD_ID, BUDGET_TYPE, BRANCH_TYPE, BUDGET_YEAR, BRANCH_ID, DEP_ID, BUDGET_LIMIT_AMT, 
178
			M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID, APPROVE_DT, BRANCH_KIND)
179
			VALUES(@BUDGET_YEAR_LIMIT_ID, @p_GD_ID, 'nam', @p_BRANCH_TYPE, @BUDGET_YEAR, @l_BRANCH_ID, NULL, ISNULL(@BUDGET_LIMIT_AMT, 0), 
180
			@M1, @M2, @M3, @M4, @M5, @M6, @M7, @M8, @M9, @M10, @M11, @M12, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND)
181

    
182
			IF @@error<>0 GOTO ABORT;
183
			FETCH NEXT FROM XmlBudgetLimitYearhDT 
184
			INTO @BRANCH_CODE, @BRANCH_NAME, @BRANCH_KIND, @BUDGET_YEAR, @BUDGET_LIMIT_AMT , @M1 , @M2 , @M3 , @M4 , @M5 , @M6 , @M7 , @M8 , @M9 , @M10, @M11, @M12
185
		END
186
	END
187
	CLOSE XmlBudgetLimitYearhDT;
188
	DEALLOCATE XmlBudgetLimitYearhDT
189
COMMIT TRANSACTION
190

    
191
SELECT '0' AS Result, ''  REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thêm mới thành công' ErrorDesc
192
RETURN '0'
193

    
194
ABORT:
195
BEGIN
196
	ROLLBACK TRANSACTION
197
	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, '' ErrorDesc
198
	RETURN '-1'
199
END
200