DBA Data[Home] [Help]

PACKAGE BODY: APPS.IRC_INP_INS

Source


1 Package Body irc_inp_ins as
2 /* $Header: irinprhi.pkb 120.2.12020000.3 2013/02/14 06:09:16 nitnaras ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  irc_inp_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_notification_preference_id_i  number   default null;
14 --
15 -- ----------------------------------------------------------------------------
16 -- |------------------------< set_base_key_value >----------------------------|
17 -- ----------------------------------------------------------------------------
18 procedure set_base_key_value
19   (p_notification_preference_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   irc_inp_ins.g_notification_preference_id_i := p_notification_preference_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 irc_inp_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   irc_inp_shd.g_api_dml := true;  -- Set the api dml status
86   --
87   -- Insert the row into: irc_notification_preferences
88   --
89   insert into irc_notification_preferences
90       (party_id
91       ,person_id
92       ,notification_preference_id
93       ,matching_jobs
94       ,matching_job_freq
95       ,attribute_category
96       ,receive_info_mail
97       ,allow_access
98       ,address_id
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       ,attribute16
115       ,attribute17
116       ,attribute18
117       ,attribute19
118       ,attribute20
119       ,attribute21
120       ,attribute22
121       ,attribute23
122       ,attribute24
123       ,attribute25
124       ,attribute26
125       ,attribute27
126       ,attribute28
127       ,attribute29
128       ,attribute30
129       ,object_version_number
130       ,agency_id
131       ,attempt_id
132       )
133   Values
134     (p_rec.party_id
135     ,p_rec.person_id
136     ,p_rec.notification_preference_id
137     ,p_rec.matching_jobs
138     ,p_rec.matching_job_freq
139     ,p_rec.attribute_category
140     ,p_rec.receive_info_mail
141     ,p_rec.allow_access
142     ,p_rec.address_id
143     ,p_rec.attribute1
144     ,p_rec.attribute2
145     ,p_rec.attribute3
146     ,p_rec.attribute4
147     ,p_rec.attribute5
148     ,p_rec.attribute6
149     ,p_rec.attribute7
150     ,p_rec.attribute8
151     ,p_rec.attribute9
152     ,p_rec.attribute10
153     ,p_rec.attribute11
154     ,p_rec.attribute12
155     ,p_rec.attribute13
156     ,p_rec.attribute14
157     ,p_rec.attribute15
158     ,p_rec.attribute16
159     ,p_rec.attribute17
160     ,p_rec.attribute18
161     ,p_rec.attribute19
162     ,p_rec.attribute20
163     ,p_rec.attribute21
164     ,p_rec.attribute22
165     ,p_rec.attribute23
166     ,p_rec.attribute24
167     ,p_rec.attribute25
168     ,p_rec.attribute26
169     ,p_rec.attribute27
170     ,p_rec.attribute28
171     ,p_rec.attribute29
172     ,p_rec.attribute30
173     ,p_rec.object_version_number
174     ,p_rec.agency_id
175     ,p_rec.attempt_id
176     );
177   --
178   irc_inp_shd.g_api_dml := false;  -- Unset the api dml status
179   --
180   hr_utility.set_location(' Leaving:'||l_proc, 10);
181 Exception
182   When hr_api.check_integrity_violated Then
183     -- A check constraint has been violated
184     irc_inp_shd.g_api_dml := false;  -- Unset the api dml status
185     --
186     irc_inp_shd.constraint_error
187       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
188   When hr_api.parent_integrity_violated Then
189     -- Parent integrity has been violated
190     irc_inp_shd.g_api_dml := false;  -- Unset the api dml status
191     --
192     irc_inp_shd.constraint_error
193       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
194   When hr_api.unique_integrity_violated Then
195     -- Unique integrity has been violated
196     irc_inp_shd.g_api_dml := false;  -- Unset the api dml status
197     --
198     irc_inp_shd.constraint_error
199       (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
200   When Others Then
201     irc_inp_shd.g_api_dml := false;  -- Unset the api dml status
202     --
203     Raise;
204 End insert_dml;
205 --
206 -- ----------------------------------------------------------------------------
207 -- |------------------------------< pre_insert >------------------------------|
208 -- ----------------------------------------------------------------------------
209 -- {Start Of Comments}
210 --
211 -- Description:
212 --   This private procedure contains any processing which is required before
213 --   the insert dml. Presently, if the entity has a corresponding primary
214 --   key which is maintained by an associating sequence, the primary key for
215 --   the entity will be populated with the next sequence value in
216 --   preparation for the insert dml.
217 --
218 -- Prerequisites:
219 --   This is an internal procedure which is called from the ins procedure.
220 --
221 -- In Parameters:
222 --   A Pl/Sql record structure.
223 --
224 -- Post Success:
225 --   Processing continues.
226 --
227 -- Post Failure:
228 --   If an error has occurred, an error message and exception will be raised
229 --   but not handled.
230 --
231 -- Developer Implementation Notes:
232 --   Any pre-processing required before the insert dml is issued should be
233 --   coded within this procedure. As stated above, a good example is the
234 --   generation of a primary key number via a corresponding sequence.
235 --   It is important to note that any 3rd party maintenance should be reviewed
236 --   before placing in this procedure.
237 --
238 -- Access Status:
239 --   Internal Row Handler Use Only.
240 --
241 -- {End Of Comments}
242 -- ----------------------------------------------------------------------------
243 Procedure pre_insert
244   (p_rec  in out nocopy irc_inp_shd.g_rec_type
245   ) is
246 --
247 cursor c1 is select irc_notification_prefs_s.nextval from sys.dual;
248 --
249 cursor c2 is
250 select null from irc_notification_preferences
251 where notification_preference_id = irc_inp_ins.g_notification_preference_id_i;
252 --
253   l_proc   varchar2(72) := g_package||'pre_insert';
254   l_exists varchar2(1);
255 --
256 Begin
257   hr_utility.set_location('Entering:'||l_proc, 5);
258   --
259   If (irc_inp_ins.g_notification_preference_id_i is not null) Then
260 
261    open c2;
262    fetch c2 into l_exists;
263    if c2%found then
264     close c2;
265     fnd_message.set_name('PER','PER_289391_KEY_ALREADY_USED');
266     fnd_message.set_token('TABLE_NAME','irc_notification_preferences');
267     fnd_message.raise_error;
268   end if;
269   close c2;
270     --
271     -- Use registered key values and clear globals
272     --
273     p_rec.notification_preference_id :=
274       irc_inp_ins.g_notification_preference_id_i;
275     irc_inp_ins.g_notification_preference_id_i := null;
276   --
277   else
278     open c1;
279     fetch c1 into p_rec.notification_preference_id;
280     close c1;
281   End If;
282   --
283   hr_utility.set_location(' Leaving:'||l_proc, 10);
284 End pre_insert;
285 --
286 -- ----------------------------------------------------------------------------
287 -- |-----------------------------< post_insert >------------------------------|
288 -- ----------------------------------------------------------------------------
289 -- {Start Of Comments}
290 --
291 -- Description:
292 --   This private procedure contains any processing which is required after
293 --   the insert dml.
294 --
295 -- Prerequisites:
296 --   This is an internal procedure which is called from the ins procedure.
297 --
298 -- In Parameters:
299 --   A Pl/Sql record structre.
300 --
301 -- Post Success:
302 --   Processing continues.
303 --
304 -- Post Failure:
305 --   If an error has occurred, an error message and exception will be raised
306 --   but not handled.
307 --
308 -- Developer Implementation Notes:
309 --   Any post-processing required after the insert dml is issued should be
310 --   coded within this procedure. It is important to note that any 3rd party
311 --   maintenance should be reviewed before placing in this procedure.
312 --
313 -- Access Status:
314 --   Internal Row Handler Use Only.
315 --
316 -- {End Of Comments}
317 -- ----------------------------------------------------------------------------
318 Procedure post_insert
319   (p_effective_date               in date
320   ,p_rec                          in irc_inp_shd.g_rec_type
321   ) is
322 --
323   l_proc  varchar2(72) := g_package||'post_insert';
324 --
325 Begin
326   hr_utility.set_location('Entering:'||l_proc, 5);
327   begin
328     --
329     irc_inp_rki.after_insert
330       (p_effective_date              => p_effective_date
331       ,p_party_id
332       => p_rec.party_id
333       ,p_person_id => p_rec.person_id
334       ,p_notification_preference_id => p_rec.notification_preference_id
335       ,p_matching_jobs
336       => p_rec.matching_jobs
337       ,p_matching_job_freq
338       => p_rec.matching_job_freq
339       ,p_attribute_category
340       => p_rec.attribute_category
341       ,p_receive_info_mail
342       => p_rec.receive_info_mail
343       ,p_allow_access
344       => p_rec.allow_access
345       ,p_address_id
346       => p_rec.address_id
347       ,p_attribute1
348       => p_rec.attribute1
349       ,p_attribute2
350       => p_rec.attribute2
351       ,p_attribute3
352       => p_rec.attribute3
353       ,p_attribute4
354       => p_rec.attribute4
355       ,p_attribute5
356       => p_rec.attribute5
357       ,p_attribute6
358       => p_rec.attribute6
359       ,p_attribute7
360       => p_rec.attribute7
361       ,p_attribute8
362       => p_rec.attribute8
363       ,p_attribute9
364       => p_rec.attribute9
365       ,p_attribute10
366       => p_rec.attribute10
367       ,p_attribute11
368       => p_rec.attribute11
369       ,p_attribute12
370       => p_rec.attribute12
371       ,p_attribute13
372       => p_rec.attribute13
373       ,p_attribute14
374       => p_rec.attribute14
375       ,p_attribute15
376       => p_rec.attribute15
377       ,p_attribute16
378       => p_rec.attribute16
379       ,p_attribute17
380       => p_rec.attribute17
381       ,p_attribute18
382       => p_rec.attribute18
383       ,p_attribute19
384       => p_rec.attribute19
385       ,p_attribute20
386       => p_rec.attribute20
387       ,p_attribute21
388       => p_rec.attribute21
389       ,p_attribute22
390       => p_rec.attribute22
391       ,p_attribute23
392       => p_rec.attribute23
393       ,p_attribute24
394       => p_rec.attribute24
395       ,p_attribute25
396       => p_rec.attribute25
397       ,p_attribute26
398       => p_rec.attribute26
399       ,p_attribute27
400       => p_rec.attribute27
401       ,p_attribute28
402       => p_rec.attribute28
403       ,p_attribute29
404       => p_rec.attribute29
405       ,p_attribute30
406       => p_rec.attribute30
407       ,p_object_version_number
408       => p_rec.object_version_number
409       ,p_agency_id
410       => p_rec.agency_id
411       ,p_attempt_id
412       => p_rec.attempt_id
413       );
414     --
415   exception
416     --
417     when hr_api.cannot_find_prog_unit then
418       --
419       hr_api.cannot_find_prog_unit_error
420         (p_module_name => 'IRC_NOTIFICATION_PREFERENCES'
421         ,p_hook_type   => 'AI');
422       --
423   end;
424   --
425   hr_utility.set_location(' Leaving:'||l_proc, 10);
426 End post_insert;
427 --
428 -- ----------------------------------------------------------------------------
429 -- |---------------------------------< ins >----------------------------------|
430 -- ----------------------------------------------------------------------------
431 Procedure ins
432   (p_effective_date               in date
433   ,p_rec                          in out nocopy irc_inp_shd.g_rec_type
434   ) is
435 --
436   l_proc  varchar2(72) := g_package||'ins';
437 --
438 Begin
439   hr_utility.set_location('Entering:'||l_proc, 5);
440   --
441   -- Call the supporting insert validate operations
442   --
443   irc_inp_bus.insert_validate
444      (p_effective_date
445      ,p_rec
446      );
447   --
448   -- If the Multiple Message Detection is enabled and atleast one error
449   -- has been found then abort processing.
450   --
451   hr_multi_message.end_validation_set;
452   --
453   -- Call the supporting pre-insert operation
454   --
455   irc_inp_ins.pre_insert(p_rec);
456   --
457   -- Insert the row
458   --
459   irc_inp_ins.insert_dml(p_rec);
460   --
461   -- Call the supporting post-insert operation
462   --
463   irc_inp_ins.post_insert
464      (p_effective_date
465      ,p_rec
466      );
467   --
468   -- If the Multiple Message Detection is enabled and atleast one error
469   -- has been found then abort processing.
470   --
471   hr_multi_message.end_validation_set;
472   --
473   hr_utility.set_location('Leaving:'||l_proc, 20);
474 end ins;
475 --
476 -- ----------------------------------------------------------------------------
477 -- |---------------------------------< ins >----------------------------------|
478 -- ----------------------------------------------------------------------------
479 Procedure ins
480   (p_effective_date                 in     date
481   ,p_matching_jobs                  in     varchar2
482   ,p_matching_job_freq              in     varchar2
483   ,p_receive_info_mail              in     varchar2
484   ,p_allow_access                   in     varchar2
485   ,p_attribute_category             in     varchar2 default null
486   ,p_address_id                     in     number   default null
487   ,p_attribute1                     in     varchar2 default null
488   ,p_attribute2                     in     varchar2 default null
489   ,p_attribute3                     in     varchar2 default null
490   ,p_attribute4                     in     varchar2 default null
491   ,p_attribute5                     in     varchar2 default null
492   ,p_attribute6                     in     varchar2 default null
493   ,p_attribute7                     in     varchar2 default null
494   ,p_attribute8                     in     varchar2 default null
495   ,p_attribute9                     in     varchar2 default null
496   ,p_attribute10                    in     varchar2 default null
497   ,p_attribute11                    in     varchar2 default null
498   ,p_attribute12                    in     varchar2 default null
499   ,p_attribute13                    in     varchar2 default null
500   ,p_attribute14                    in     varchar2 default null
501   ,p_attribute15                    in     varchar2 default null
502   ,p_attribute16                    in     varchar2 default null
503   ,p_attribute17                    in     varchar2 default null
504   ,p_attribute18                    in     varchar2 default null
505   ,p_attribute19                    in     varchar2 default null
506   ,p_attribute20                    in     varchar2 default null
507   ,p_attribute21                    in     varchar2 default null
508   ,p_attribute22                    in     varchar2 default null
509   ,p_attribute23                    in     varchar2 default null
510   ,p_attribute24                    in     varchar2 default null
511   ,p_attribute25                    in     varchar2 default null
512   ,p_attribute26                    in     varchar2 default null
513   ,p_attribute27                    in     varchar2 default null
514   ,p_attribute28                    in     varchar2 default null
515   ,p_attribute29                    in     varchar2 default null
516   ,p_attribute30                    in     varchar2 default null
517   ,p_person_id                      in     number
518   ,p_agency_id                      in     number   default null
519   ,p_attempt_id                     in     number   default null
520   ,p_notification_preference_id        out nocopy number
521   ,p_object_version_number             out nocopy number
522   ) is
523 --
524   l_rec   irc_inp_shd.g_rec_type;
525   l_proc  varchar2(72) := g_package||'ins';
526 --
527 Begin
528   hr_utility.set_location('Entering:'||l_proc, 5);
529   --
530   -- Call conversion function to turn arguments into the
531   -- p_rec structure.
532   --
533   l_rec :=
534   irc_inp_shd.convert_args
535     (null
536     ,p_person_id
537     ,null
538     ,p_matching_jobs
539     ,p_matching_job_freq
540     ,p_attribute_category
541     ,p_receive_info_mail
542     ,p_allow_access
543     ,p_address_id
544     ,p_attribute1
545     ,p_attribute2
546     ,p_attribute3
547     ,p_attribute4
548     ,p_attribute5
549     ,p_attribute6
550     ,p_attribute7
551     ,p_attribute8
552     ,p_attribute9
553     ,p_attribute10
554     ,p_attribute11
555     ,p_attribute12
556     ,p_attribute13
557     ,p_attribute14
558     ,p_attribute15
559     ,p_attribute16
560     ,p_attribute17
561     ,p_attribute18
562     ,p_attribute19
563     ,p_attribute20
564     ,p_attribute21
565     ,p_attribute22
566     ,p_attribute23
567     ,p_attribute24
568     ,p_attribute25
569     ,p_attribute26
570     ,p_attribute27
571     ,p_attribute28
572     ,p_attribute29
573     ,p_attribute30
574     ,null
575     ,p_agency_id
576     ,p_attempt_id
577     );
578   --
579   -- Having converted the arguments into the irc_inp_rec
580   -- plsql record structure we call the corresponding record business process.
581   --
582   irc_inp_ins.ins
583      (p_effective_date
584      ,l_rec
585      );
586   --
587   -- As the primary key argument(s)
588   -- are specified as an OUT's we must set these values.
589   --
590   p_notification_preference_id := l_rec.notification_preference_id;
591   p_object_version_number := l_rec.object_version_number;
592   --
593   hr_utility.set_location(' Leaving:'||l_proc, 10);
594 End ins;
595 --
596 end irc_inp_ins;