[Home] [Help]
PACKAGE BODY: APPS.IGW_BUDGET_DETAILS_OH_PVT
Source
1 PACKAGE BODY IGW_BUDGET_DETAILS_OH_PVT AS
2 --$Header: igwvbdob.pls 115.7 2002/11/14 18:39:26 vmedikon ship $
3
4
5
6 ----------------------------------------------------------------------------------
7 procedure create_budget_line_oh
8 (p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
9 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
10 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
11 ,p_proposal_id NUMBER
12 ,p_version_id NUMBER
13 ,p_budget_period_id NUMBER
14 ,p_line_item_id NUMBER
15 ,p_rate_class_id NUMBER
16 ,p_rate_type_id NUMBER
17 ,p_apply_rate_flag VARCHAR2
18 ,p_calculated_cost NUMBER := 0
19 ,p_calculated_cost_sharing NUMBER := 0
20 ,x_rowid OUT NOCOPY ROWID
21 ,x_return_status OUT NOCOPY VARCHAR2
22 ,x_msg_count OUT NOCOPY NUMBER
23 ,x_msg_data OUT NOCOPY VARCHAR2) IS
24
25 l_api_name VARCHAR2(30) :='CREATE_BUDGET_LINE_OH';
26 l_return_status VARCHAR2(1);
27 l_msg_count NUMBER;
28 l_data VARCHAR2(250);
29 l_msg_index_out NUMBER;
30
31 BEGIN
32 IF p_commit = FND_API.G_TRUE THEN
33 SAVEPOINT create_budget_line_oh;
34 END IF;
35
36 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
37 fnd_msg_pub.initialize;
38 end if;
39
40 x_return_status := 'S';
41
42 if (NOT FND_API.TO_BOOLEAN (p_validate_only)) then
43 igw_generate_periods.create_budget_detail_amts(
44 p_proposal_id => p_proposal_id
45 ,p_version_id => p_version_id
46 ,p_budget_period_id => p_budget_period_id
47 ,p_line_item_id => p_line_item_id
48 ,p_rate_class_id => p_rate_class_id
49 ,p_rate_type_id => p_rate_type_id
50 ,p_apply_rate_flag => p_apply_rate_flag
51 ,p_calculated_cost => p_calculated_cost
52 ,p_calculated_cost_sharing => p_calculated_cost_sharing);
53
54 end if; -- p_validate_only = 'Y'
55
56 l_msg_count := FND_MSG_PUB.count_msg;
57 If l_msg_count > 0 THEN
58 x_msg_count := l_msg_count;
59 If l_msg_count = 1 THEN
60 fnd_msg_pub.get
61 (p_encoded => FND_API.G_TRUE ,
62 p_msg_index => 1,
63 p_data => l_data,
64 p_msg_index_out => l_msg_index_out );
65
66 x_msg_data := l_data;
67 End if;
68 RAISE FND_API.G_EXC_ERROR;
69 End if;
70
71 x_return_status := FND_API.G_RET_STS_SUCCESS;
72
73 EXCEPTION WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
74 IF p_commit = FND_API.G_TRUE THEN
75 ROLLBACK TO create_budget_line_oh;
76 END IF;
77 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
78 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
79 p_procedure_name => l_api_name,
80 p_error_text => SUBSTRB(SQLERRM,1,240));
81 fnd_msg_pub.count_and_get(p_count => x_msg_count
82 ,p_data => x_msg_data);
83 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
84
85 WHEN FND_API.G_EXC_ERROR THEN
86 IF p_commit = FND_API.G_TRUE THEN
87 ROLLBACK TO create_budget_line_oh;
88 END IF;
89 x_return_status := 'E';
90
91 WHEN OTHERS THEN
92 IF p_commit = FND_API.G_TRUE THEN
93 ROLLBACK TO create_budget_line_oh;
94 END IF;
95 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
96 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
97 p_procedure_name => l_api_name,
98 p_error_text => SUBSTRB(SQLERRM,1,240));
99 fnd_msg_pub.count_and_get(p_count => x_msg_count
100 ,p_data => x_msg_data);
101 RAISE;
102
103
104 END; --CREATE BUDGET LINE OH
105
106
107 ------------------------------------------------------------------------------------------
108 procedure update_budget_line_oh
109 (p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
110 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
111 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
112 ,p_proposal_id NUMBER := NULL
113 ,p_version_id NUMBER := NULL
114 ,p_budget_period_id NUMBER := NULL
115 ,p_line_item_id NUMBER
116 ,p_rate_class_id NUMBER
117 ,p_rate_type_id NUMBER
118 ,p_apply_rate_flag VARCHAR2
119 ,p_calculated_cost NUMBER
120 ,p_calculated_cost_sharing NUMBER
121 ,p_record_version_number IN NUMBER
122 ,p_rowid IN ROWID
123 ,x_return_status OUT NOCOPY VARCHAR2
124 ,x_msg_count OUT NOCOPY NUMBER
125 ,x_msg_data OUT NOCOPY VARCHAR2) IS
126
127 l_api_name VARCHAR2(30) :='UPDATE_BUDGET_LINE_OH';
128 l_proposal_id NUMBER := p_proposal_id;
129 l_version_id NUMBER := p_version_id;
130 l_budget_period_id NUMBER := p_budget_period_id;
131 l_calculated_cost NUMBER := p_calculated_cost;
132 l_calculated_cost_sharing NUMBER := p_calculated_cost_sharing;
133 l_return_status VARCHAR2(1);
134 l_msg_count NUMBER;
135 l_data VARCHAR2(250);
136 l_msg_index_out NUMBER;
137 l_dummy VARCHAR2(1);
138
139 BEGIN
140 IF p_commit = FND_API.G_TRUE THEN
141 SAVEPOINT update_budget_line_oh;
142 END IF;
143
144 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
145 fnd_msg_pub.initialize;
146 end if;
147
148 x_return_status := 'S';
149
150
151 BEGIN
152 SELECT 'x' INTO l_dummy
153 FROM igw_budget_details_cal_amts
154 WHERE ((line_item_id = p_line_item_id and rate_class_id = p_rate_class_id and rate_type_id = p_rate_type_id)
155 OR rowid = p_rowid)
156 AND record_version_number = p_record_version_number;
157 EXCEPTION
158 WHEN NO_DATA_FOUND THEN
159 FND_MESSAGE.SET_NAME('IGW','IGW_SS_RECORD_CHANGED');
160 FND_MSG_PUB.Add;
161 x_msg_data := 'IGW_SS_RECORD_CHANGED';
162 x_return_status := 'E' ;
163 END;
164
165 l_msg_count := FND_MSG_PUB.count_msg;
166
167 IF l_msg_count > 0 THEN
168 x_msg_count := l_msg_count;
169 x_return_status := 'E';
170 If l_msg_count = 1 THEN
171 fnd_msg_pub.get
172 (p_encoded => FND_API.G_TRUE ,
173 p_msg_index => 1,
174 p_data => l_data,
175 p_msg_index_out => l_msg_index_out );
176
177 x_msg_data := l_data;
178 End if;
179 RAISE FND_API.G_EXC_ERROR;
180 END IF;
181
182 /* need to this because following ids may not be passed and only row id may be passed */
183 if p_proposal_id is null or p_version_id is null or p_budget_period_id is null then
184 select proposal_id, version_id, budget_period_id
185 into l_proposal_id, l_version_id, l_budget_period_id
186 from igw_budget_details
187 where line_item_id = p_line_item_id;
188 end if;
189
190 if p_apply_rate_flag = 'N' then
191 l_calculated_cost := 0;
192 l_calculated_cost_sharing := 0;
193 end if;
194
195 if (NOT FND_API.TO_BOOLEAN (p_validate_only)) then
196 update igw_budget_details_cal_amts
197 set apply_rate_flag = p_apply_rate_flag
198 , calculated_cost = l_calculated_cost
199 , calculated_cost_sharing = l_calculated_cost_sharing
200 , record_version_number = record_version_number + 1
201 where line_item_id = p_line_item_id
202 and rate_class_id = p_rate_class_id
203 and rate_type_id = p_rate_type_id;
204
205
206 IGW_BUDGET_OPERATIONS.recalculate_budget (
207 p_proposal_id => l_proposal_id
208 ,p_version_id => l_version_id
209 ,p_budget_period_id => l_budget_period_id
210 ,p_line_item_id => p_line_item_id
211 ,x_return_status => x_return_status
212 ,x_msg_data => x_msg_data
213 ,x_msg_count => x_msg_count);
214
215 end if; -- p_validate_only = 'Y'
216
217
218 l_msg_count := FND_MSG_PUB.count_msg;
219 If l_msg_count > 0 THEN
220 x_msg_count := l_msg_count;
221 If l_msg_count = 1 THEN
222 fnd_msg_pub.get
223 (p_encoded => FND_API.G_TRUE ,
224 p_msg_index => 1,
225 p_data => l_data,
226 p_msg_index_out => l_msg_index_out );
227
228 x_msg_data := l_data;
229 End if;
230 RAISE FND_API.G_EXC_ERROR;
231 End if;
232
233 x_return_status := FND_API.G_RET_STS_SUCCESS;
234
235 EXCEPTION WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
236 IF p_commit = FND_API.G_TRUE THEN
237 ROLLBACK TO update_budget_line_oh;
238 END IF;
239 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
240 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
241 p_procedure_name => l_api_name,
242 p_error_text => SUBSTRB(SQLERRM,1,240));
243 fnd_msg_pub.count_and_get(p_count => x_msg_count
244 ,p_data => x_msg_data);
245 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
246
247 WHEN FND_API.G_EXC_ERROR THEN
248 IF p_commit = FND_API.G_TRUE THEN
249 ROLLBACK TO update_budget_line_oh;
250 END IF;
251 x_return_status := 'E';
252
253 WHEN OTHERS THEN
254 IF p_commit = FND_API.G_TRUE THEN
255 ROLLBACK TO update_budget_line_oh;
256 END IF;
257 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
258 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
259 p_procedure_name => l_api_name,
260 p_error_text => SUBSTRB(SQLERRM,1,240));
261 fnd_msg_pub.count_and_get(p_count => x_msg_count
262 ,p_data => x_msg_data);
263 RAISE;
264
265 END; --UPDATE BUDGET LINE OH
266
267 -------------------------------------------------------------------------------------------
268
269 procedure delete_budget_line_oh
270 (p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
271 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
272 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
273 ,p_proposal_id IN NUMBER := NULL
274 ,p_version_id IN NUMBER := NULL
275 ,p_budget_period_id NUMBER := NULL
276 ,p_line_item_id NUMBER
277 ,p_rate_class_id NUMBER
278 ,p_rate_type_id NUMBER
279 ,p_record_version_number IN NUMBER
280 ,p_rowid IN ROWID
281 ,x_return_status OUT NOCOPY VARCHAR2
282 ,x_msg_count OUT NOCOPY NUMBER
283 ,x_msg_data OUT NOCOPY VARCHAR2) is
284
285 l_api_name VARCHAR2(30) :='DELETE_BUDGET_LINE_OH';
286 l_return_status VARCHAR2(1);
287 l_msg_count NUMBER;
288 l_data VARCHAR2(250);
289 l_msg_index_out NUMBER;
290 l_dummy VARCHAR2(1);
291
292
293
294 BEGIN
295 IF p_commit = FND_API.G_TRUE THEN
296 SAVEPOINT delete_budget_line_oh;
297 END IF;
298
299 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
300 fnd_msg_pub.initialize;
301 end if;
302
303 x_return_status := 'S';
304
305 BEGIN
306 SELECT 'x' INTO l_dummy
307 FROM igw_budget_details_cal_amts
308 WHERE ((line_item_id = p_line_item_id and rate_class_id = p_rate_class_id and rate_type_id = p_rate_type_id)
309 OR rowid = p_rowid)
310 AND record_version_number = p_record_version_number;
311 EXCEPTION
312 WHEN NO_DATA_FOUND THEN
313 FND_MESSAGE.SET_NAME('IGW','IGW_SS_RECORD_CHANGED');
314 FND_MSG_PUB.Add;
315 x_msg_data := 'IGW_SS_RECORD_CHANGED';
316 x_return_status := 'E' ;
317 END;
318
319 l_msg_count := FND_MSG_PUB.count_msg;
320
321 IF l_msg_count > 0 THEN
322 x_msg_count := l_msg_count;
323 x_return_status := 'E';
324 If l_msg_count = 1 THEN
325 fnd_msg_pub.get
326 (p_encoded => FND_API.G_TRUE ,
327 p_msg_index => 1,
328 p_data => l_data,
329 p_msg_index_out => l_msg_index_out );
330
331 x_msg_data := l_data;
332 End if;
333 RAISE FND_API.G_EXC_ERROR;
334 END IF;
335
336 if (NOT FND_API.TO_BOOLEAN (p_validate_only)) then
337 delete from igw_budget_details_cal_amts
338 where line_item_id = p_line_item_id
339 and rate_class_id = p_rate_class_id
340 and rate_type_id = p_rate_type_id;
341
342 end if; -- p_validate_only = 'Y'
343
344
345 l_msg_count := FND_MSG_PUB.count_msg;
346 If l_msg_count > 0 THEN
347 x_msg_count := l_msg_count;
348 If l_msg_count = 1 THEN
349 fnd_msg_pub.get
350 (p_encoded => FND_API.G_TRUE ,
351 p_msg_index => 1,
352 p_data => l_data,
353 p_msg_index_out => l_msg_index_out );
354
355 x_msg_data := l_data;
356 End if;
357 RAISE FND_API.G_EXC_ERROR;
358 End if;
359
360 x_return_status := FND_API.G_RET_STS_SUCCESS;
361
362 EXCEPTION WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
363 IF p_commit = FND_API.G_TRUE THEN
364 ROLLBACK TO delete_budget_line_oh;
365 END IF;
366 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
367 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
368 p_procedure_name => l_api_name,
369 p_error_text => SUBSTRB(SQLERRM,1,240));
370 fnd_msg_pub.count_and_get(p_count => x_msg_count
371 ,p_data => x_msg_data);
372 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
373
374 WHEN FND_API.G_EXC_ERROR THEN
375 IF p_commit = FND_API.G_TRUE THEN
376 ROLLBACK TO delete_budget_line_oh;
377 END IF;
378 x_return_status := 'E';
379
380 WHEN OTHERS THEN
381 IF p_commit = FND_API.G_TRUE THEN
382 ROLLBACK TO delete_budget_line_oh;
383 END IF;
384 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
385 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
386 p_procedure_name => l_api_name,
387 p_error_text => SUBSTRB(SQLERRM,1,240));
388 fnd_msg_pub.count_and_get(p_count => x_msg_count
389 ,p_data => x_msg_data);
390 RAISE;
391
392
393 END; --DELETE BUDGET LINE OH
394
395
396 END;