1 Package Body psp_poa_ins as
2 /* $Header: PSPOARHB.pls 120.5 2006/09/05 11:10:12 dpaudel noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' psp_poa_ins.'; -- Global package name
9 --
10 -- The following global variables are only to be used by
11 -- the set_base_key_value and pre_insert procedures.
12 --
13 g_organization_account_id_i number default null;
14 --
15 -- ----------------------------------------------------------------------------
16 -- |------------------------< set_base_key_value >----------------------------|
17 -- ----------------------------------------------------------------------------
18 procedure set_base_key_value
19 (p_organization_account_id in number) is
20 --
21 l_proc varchar2(72) := g_package||'set_base_key_value';
22 --
23 Begin
24 hr_utility.set_location('Entering:'||l_proc, 10);
25 --
26 psp_poa_ins.g_organization_account_id_i := p_organization_account_id;
27 --
28 hr_utility.set_location(' Leaving:'||l_proc, 20);
29 End set_base_key_value;
30 --
31 --
32 -- ----------------------------------------------------------------------------
33 -- |------------------------------< insert_dml >------------------------------|
34 -- ----------------------------------------------------------------------------
35 -- {Start Of Comments}
36 --
37 -- Description:
38 -- This procedure controls the actual dml insert logic. The processing of
39 -- this procedure are as follows:
40 -- 1) Initialise the object_version_number to 1 if the object_version_number
41 -- is defined as an attribute for this entity.
42 -- 2) To set and unset the g_api_dml status as required (as we are about to
43 -- perform dml).
44 -- 3) To insert the row into the schema.
45 -- 4) To trap any constraint violations that may have occurred.
46 -- 5) To raise any other errors.
47 --
48 -- Prerequisites:
49 -- This is an internal private procedure which must be called from the ins
50 -- procedure and must have all mandatory attributes set (except the
51 -- object_version_number which is initialised within this procedure).
52 --
53 -- In Parameters:
54 -- A Pl/Sql record structre.
55 --
56 -- Post Success:
57 -- The specified row will be inserted into the schema.
58 --
59 -- Post Failure:
60 -- On the insert dml failure it is important to note that we always reset the
61 -- g_api_dml status to false.
62 -- If a check, unique or parent integrity constraint violation is raised the
63 -- constraint_error procedure will be called.
64 -- If any other error is reported, the error will be raised after the
65 -- g_api_dml status is reset.
66 --
67 -- Developer Implementation Notes:
68 -- None.
69 --
70 -- Access Status:
71 -- Internal Row Handler Use Only.
72 --
73 -- {End Of Comments}
74 -- ----------------------------------------------------------------------------
75 Procedure insert_dml
76 (p_rec in out nocopy psp_poa_shd.g_rec_type
77 ) is
78 --
79 l_proc varchar2(72) := g_package||'insert_dml';
80 --
81 Begin
82 hr_utility.set_location('Entering:'||l_proc, 5);
83 p_rec.object_version_number := 1; -- Initialise the object version
84 --
85 psp_poa_shd.g_api_dml := true; -- Set the api dml status
86 --
87 -- Insert the row into: psp_organization_accounts
88 --
89 insert into psp_organization_accounts
90 (organization_account_id
91 ,gl_code_combination_id
92 ,project_id
93 ,expenditure_organization_id
94 ,expenditure_type
95 ,task_id
96 ,award_id
97 ,comments
98 ,attribute_category
99 ,attribute1
100 ,attribute2
101 ,attribute3
102 ,attribute4
103 ,attribute5
104 ,attribute6
105 ,attribute7
106 ,attribute8
107 ,attribute9
108 ,attribute10
109 ,attribute11
110 ,attribute12
111 ,attribute13
112 ,attribute14
113 ,attribute15
114 ,set_of_books_id
115 ,account_type_code
116 ,start_date_active
117 ,business_group_id
118 ,end_date_active
119 ,organization_id
120 ,poeta_start_date
121 ,poeta_end_date
122 ,object_version_number
123 ,funding_source_code
124 )
125 Values
126 (p_rec.organization_account_id
127 ,p_rec.gl_code_combination_id
128 ,p_rec.project_id
129 ,p_rec.expenditure_organization_id
130 ,p_rec.expenditure_type
131 ,p_rec.task_id
132 ,p_rec.award_id
133 ,p_rec.comments
134 ,p_rec.attribute_category
135 ,p_rec.attribute1
136 ,p_rec.attribute2
137 ,p_rec.attribute3
138 ,p_rec.attribute4
139 ,p_rec.attribute5
140 ,p_rec.attribute6
141 ,p_rec.attribute7
142 ,p_rec.attribute8
143 ,p_rec.attribute9
144 ,p_rec.attribute10
145 ,p_rec.attribute11
146 ,p_rec.attribute12
147 ,p_rec.attribute13
148 ,p_rec.attribute14
149 ,p_rec.attribute15
150 ,p_rec.set_of_books_id
151 ,p_rec.account_type_code
152 ,p_rec.start_date_active
153 ,p_rec.business_group_id
154 ,p_rec.end_date_active
155 ,p_rec.organization_id
156 ,p_rec.poeta_start_date
157 ,p_rec.poeta_end_date
158 ,p_rec.object_version_number
159 ,p_rec.funding_source_code
160 );
161 --
162 psp_poa_shd.g_api_dml := false; -- Unset the api dml status
163 --
164 hr_utility.set_location(' Leaving:'||l_proc, 10);
165 Exception
166 When hr_api.check_integrity_violated Then
167 -- A check constraint has been violated
168 psp_poa_shd.g_api_dml := false; -- Unset the api dml status
169 psp_poa_shd.constraint_error
170 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
171 When hr_api.parent_integrity_violated Then
172 -- Parent integrity has been violated
173 psp_poa_shd.g_api_dml := false; -- Unset the api dml status
174 psp_poa_shd.constraint_error
175 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
176 When hr_api.unique_integrity_violated Then
177 -- Unique integrity has been violated
178 psp_poa_shd.g_api_dml := false; -- Unset the api dml status
179 psp_poa_shd.constraint_error
180 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
181 When Others Then
182 psp_poa_shd.g_api_dml := false; -- Unset the api dml status
183 Raise;
184 End insert_dml;
185 --
186 -- ----------------------------------------------------------------------------
187 -- |------------------------------< pre_insert >------------------------------|
188 -- ----------------------------------------------------------------------------
189 -- {Start Of Comments}
190 --
191 -- Description:
192 -- This private procedure contains any processing which is required before
193 -- the insert dml. Presently, if the entity has a corresponding primary
194 -- key which is maintained by an associating sequence, the primary key for
195 -- the entity will be populated with the next sequence value in
196 -- preparation for the insert dml.
197 --
198 -- Prerequisites:
199 -- This is an internal procedure which is called from the ins procedure.
200 --
201 -- In Parameters:
202 -- A Pl/Sql record structure.
203 --
204 -- Post Success:
205 -- Processing continues.
206 --
207 -- Post Failure:
208 -- If an error has occurred, an error message and exception will be raised
209 -- but not handled.
210 --
211 -- Developer Implementation Notes:
212 -- Any pre-processing required before the insert dml is issued should be
213 -- coded within this procedure. As stated above, a good example is the
214 -- generation of a primary key number via a corresponding sequence.
215 -- It is important to note that any 3rd party maintenance should be reviewed
216 -- before placing in this procedure.
217 --
218 -- Access Status:
219 -- Internal Row Handler Use Only.
220 --
221 -- {End Of Comments}
222 -- ----------------------------------------------------------------------------
223 Procedure pre_insert
224 (p_rec in out nocopy psp_poa_shd.g_rec_type
225 ) is
226 --
227 Cursor C_Sel1 is select psp_organization_accounts_s.nextval from sys.dual;
228 --
229 Cursor C_Sel2 is
230 Select null
231 from psp_organization_accounts
232 where organization_account_id =
233 psp_poa_ins.g_organization_account_id_i;
234 --
235 l_proc varchar2(72) := g_package||'pre_insert';
236 l_exists varchar2(1);
237 --
238 Begin
239 hr_utility.set_location('Entering:'||l_proc, 5);
240 --
241 If (psp_poa_ins.g_organization_account_id_i is not null) Then
242 --
243 -- Verify registered primary key values not already in use
244 --
245 Open C_Sel2;
246 Fetch C_Sel2 into l_exists;
247 If C_Sel2%found Then
248 Close C_Sel2;
249 --
250 -- The primary key values are already in use.
251 --
252 fnd_message.set_name('PER','PER_289391_KEY_ALREADY_USED');
253 fnd_message.set_token('TABLE_NAME','psp_organization_accounts');
254 fnd_message.raise_error;
255 End If;
256 Close C_Sel2;
257 --
258 -- Use registered key values and clear globals
259 --
260 p_rec.organization_account_id :=
261 psp_poa_ins.g_organization_account_id_i;
262 psp_poa_ins.g_organization_account_id_i := null;
263 Else
264 --
265 -- No registerd key values, so select the next sequence number
266 --
267 --
268 -- Select the next sequence number
269 --
270 Open C_Sel1;
271 Fetch C_Sel1 Into p_rec.organization_account_id;
272 Close C_Sel1;
273 End If;
274 --
275 hr_utility.set_location(' Leaving:'||l_proc, 10);
276 End pre_insert;
277 --
278 -- ----------------------------------------------------------------------------
279 -- |-----------------------------< post_insert >------------------------------|
280 -- ----------------------------------------------------------------------------
281 -- {Start Of Comments}
282 --
283 -- Description:
284 -- This private procedure contains any processing which is required after
285 -- the insert dml.
286 --
287 -- Prerequisites:
288 -- This is an internal procedure which is called from the ins procedure.
289 --
290 -- In Parameters:
291 -- A Pl/Sql record structre.
292 --
293 -- Post Success:
294 -- Processing continues.
295 --
296 -- Post Failure:
297 -- If an error has occurred, an error message and exception will be raised
298 -- but not handled.
299 --
300 -- Developer Implementation Notes:
301 -- Any post-processing required after the insert dml is issued should be
302 -- coded within this procedure. It is important to note that any 3rd party
303 -- maintenance should be reviewed before placing in this procedure.
304 --
305 -- Access Status:
306 -- Internal Row Handler Use Only.
307 --
308 -- {End Of Comments}
309 -- ----------------------------------------------------------------------------
310 Procedure post_insert
311 (p_rec in psp_poa_shd.g_rec_type
312 ) is
313 --
314 l_proc varchar2(72) := g_package||'post_insert';
315 --
316 Begin
317 hr_utility.set_location('Entering:'||l_proc, 5);
318 begin
319 --
320 psp_poa_rki.after_insert
321 (p_organization_account_id
322 => p_rec.organization_account_id
323 ,p_gl_code_combination_id
324 => p_rec.gl_code_combination_id
325 ,p_project_id
326 => p_rec.project_id
327 ,p_expenditure_organization_id
328 => p_rec.expenditure_organization_id
329 ,p_expenditure_type
330 => p_rec.expenditure_type
331 ,p_task_id
332 => p_rec.task_id
333 ,p_award_id
334 => p_rec.award_id
335 ,p_comments
336 => p_rec.comments
337 ,p_attribute_category
338 => p_rec.attribute_category
339 ,p_attribute1
340 => p_rec.attribute1
341 ,p_attribute2
342 => p_rec.attribute2
346 => p_rec.attribute4
343 ,p_attribute3
344 => p_rec.attribute3
345 ,p_attribute4
347 ,p_attribute5
348 => p_rec.attribute5
349 ,p_attribute6
350 => p_rec.attribute6
351 ,p_attribute7
352 => p_rec.attribute7
353 ,p_attribute8
354 => p_rec.attribute8
355 ,p_attribute9
356 => p_rec.attribute9
357 ,p_attribute10
358 => p_rec.attribute10
359 ,p_attribute11
360 => p_rec.attribute11
361 ,p_attribute12
362 => p_rec.attribute12
363 ,p_attribute13
364 => p_rec.attribute13
365 ,p_attribute14
366 => p_rec.attribute14
367 ,p_attribute15
368 => p_rec.attribute15
369 ,p_set_of_books_id
370 => p_rec.set_of_books_id
371 ,p_account_type_code
372 => p_rec.account_type_code
373 ,p_start_date_active
374 => p_rec.start_date_active
375 ,p_business_group_id
376 => p_rec.business_group_id
377 ,p_end_date_active
378 => p_rec.end_date_active
379 ,p_organization_id
380 => p_rec.organization_id
381 ,p_poeta_start_date
382 => p_rec.poeta_start_date
383 ,p_poeta_end_date
384 => p_rec.poeta_end_date
385 ,p_object_version_number
386 => p_rec.object_version_number
387 ,p_funding_source_code
388 => p_rec.funding_source_code
389 );
390 --
391 exception
392 --
393 when hr_api.cannot_find_prog_unit then
394 --
395 hr_api.cannot_find_prog_unit_error
396 (p_module_name => 'PSP_ORGANIZATION_ACCOUNTS'
397 ,p_hook_type => 'AI');
398 --
399 end;
400 --
401 hr_utility.set_location(' Leaving:'||l_proc, 10);
402 End post_insert;
403 --
404 -- ----------------------------------------------------------------------------
405 -- |---------------------------------< ins >----------------------------------|
406 -- ----------------------------------------------------------------------------
407 Procedure ins
408 (p_rec in out nocopy psp_poa_shd.g_rec_type
409 ) is
410 --
411 l_proc varchar2(72) := g_package||'ins';
412 --
413 Begin
414 hr_utility.set_location('Entering:'||l_proc, 5);
415 --
416 -- Call the supporting insert validate operations
417 --
418 psp_poa_bus.insert_validate
419 (p_rec
420 );
421 --
422 -- Call to raise any errors on multi-message list
423 hr_multi_message.end_validation_set;
424 --
425 -- Call the supporting pre-insert operation
426 --
427 psp_poa_ins.pre_insert(p_rec);
428 --
429 -- Insert the row
430 --
431 psp_poa_ins.insert_dml(p_rec);
432 --
433 -- Call the supporting post-insert operation
434 --
435 psp_poa_ins.post_insert
436 (p_rec
437 );
438 --
439 -- Call to raise any errors on multi-message list
440 hr_multi_message.end_validation_set;
441 --
442 hr_utility.set_location('Leaving:'||l_proc, 20);
443 end ins;
444 --
445 -- ----------------------------------------------------------------------------
446 -- |---------------------------------< ins >----------------------------------|
447 -- ----------------------------------------------------------------------------
448 Procedure ins
449 (p_set_of_books_id in number
450 ,p_account_type_code in varchar2
451 ,p_start_date_active in date
452 ,p_business_group_id in number
453 ,p_organization_id in number
454 ,p_gl_code_combination_id in number default null
455 ,p_project_id in number default null
456 ,p_expenditure_organization_id in number default null
457 ,p_expenditure_type in varchar2 default null
458 ,p_task_id in number default null
459 ,p_award_id in number default null
460 ,p_comments in varchar2 default null
461 ,p_attribute_category in varchar2 default null
462 ,p_attribute1 in varchar2 default null
463 ,p_attribute2 in varchar2 default null
464 ,p_attribute3 in varchar2 default null
465 ,p_attribute4 in varchar2 default null
466 ,p_attribute5 in varchar2 default null
467 ,p_attribute6 in varchar2 default null
468 ,p_attribute7 in varchar2 default null
469 ,p_attribute8 in varchar2 default null
470 ,p_attribute9 in varchar2 default null
471 ,p_attribute10 in varchar2 default null
472 ,p_attribute11 in varchar2 default null
473 ,p_attribute12 in varchar2 default null
474 ,p_attribute13 in varchar2 default null
475 ,p_attribute14 in varchar2 default null
476 ,p_attribute15 in varchar2 default null
477 ,p_end_date_active in date default null
478 ,p_poeta_start_date in date default null
479 ,p_poeta_end_date in date default null
480 ,p_funding_source_code in varchar2 default null
481 ,p_organization_account_id out nocopy number
482 ,p_object_version_number out nocopy number
483 ) is
484 --
485 l_rec psp_poa_shd.g_rec_type;
486 l_proc varchar2(72) := g_package||'ins';
487 --
488 Begin
492 -- p_rec structure.
489 hr_utility.set_location('Entering:'||l_proc, 5);
490 --
491 -- Call conversion function to turn arguments into the
493 --
494 l_rec :=
495 psp_poa_shd.convert_args
496 (null
497 ,p_gl_code_combination_id
498 ,p_project_id
499 ,p_expenditure_organization_id
500 ,p_expenditure_type
501 ,p_task_id
502 ,p_award_id
503 ,p_comments
504 ,p_attribute_category
505 ,p_attribute1
506 ,p_attribute2
507 ,p_attribute3
508 ,p_attribute4
509 ,p_attribute5
510 ,p_attribute6
511 ,p_attribute7
512 ,p_attribute8
513 ,p_attribute9
514 ,p_attribute10
515 ,p_attribute11
516 ,p_attribute12
517 ,p_attribute13
518 ,p_attribute14
519 ,p_attribute15
520 ,p_set_of_books_id
521 ,p_account_type_code
522 ,p_start_date_active
523 ,p_business_group_id
524 ,p_end_date_active
525 ,p_organization_id
526 ,p_poeta_start_date
527 ,p_poeta_end_date
528 ,null
529 ,p_funding_source_code
530 );
531 --
532 -- Having converted the arguments into the psp_poa_rec
533 -- plsql record structure we call the corresponding record business process.
534 --
535 psp_poa_ins.ins
536 (l_rec
537 );
538 --
539 -- As the primary key argument(s)
540 -- are specified as an OUT's we must set these values.
541 --
542 p_organization_account_id := l_rec.organization_account_id;
543 p_object_version_number := l_rec.object_version_number;
544 --
545 hr_utility.set_location(' Leaving:'||l_proc, 10);
546 End ins;
547 --
548 end psp_poa_ins;