DBA Data[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;