DBA Data[Home] [Help]

PACKAGE BODY: APPS.HRI_OPL_WRKFC_EVT_TYPE

Source


1 PACKAGE BODY hri_opl_wrkfc_evt_type AS
2 /* $Header: hriowevtdim.pkb 120.1.12000000.2 2007/04/12 13:23:03 smohapat noship $ */
3 
4 TYPE g_varchar2_idx_tab_type IS TABLE OF NUMBER INDEX BY VARCHAR2(240);
5 
6 g_evtypcmb_cache_tab      g_varchar2_idx_tab_type;
7 
8 -- -----------------------------------------------------------------------------
9 -- Truncates event combination table
10 -- -----------------------------------------------------------------------------
11 PROCEDURE truncate_evtypcmb_table IS
12 
13   l_dummy1        VARCHAR2(2000);
14   l_dummy2        VARCHAR2(2000);
15   l_schema        VARCHAR2(400);
16 
17 BEGIN
18 
19   -- Get HRI schema name - get_app_info populates l_schema
20   IF fnd_installation.get_app_info('HRI',l_dummy1, l_dummy2, l_schema) THEN
21     EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || l_schema || '.HRI_CL_WEVT_EVTYPCMB_CT';
22   END IF;
23 
24   -- Insert -1 row
25   INSERT INTO hri_cl_wevt_evtypcmb_ct
26    (etcb_evtypcmb_pk
27    ,etcb_evtypcmb_code
28    ,etcb_assgnmnt_chng_flag_code
29    ,etcb_salary_chng_flag_code
30    ,etcb_prfrtng_chng_flag_code
31    ,etcb_perfband_chng_flag_code
32    ,etcb_powband_chng_flag_code
33    ,etcb_hdc_gain_flag_code
34    ,etcb_hdc_loss_flag_code
35    ,etcb_hdc_chng_flag_code
36    ,etcb_fte_gain_flag_code
37    ,etcb_fte_loss_flag_code
38    ,etcb_fte_chng_flag_code
39    ,etcb_grd_chng_flag_code
40    ,etcb_job_chng_flag_code
41    ,etcb_pos_chng_flag_code
42    ,etcb_loc_chng_flag_code
43    ,etcb_org_chng_flag_code
44    ,etcb_mgrh_chng_flag_code
45    ,etcb_hire_flag_code
46    ,etcb_asg_start_flag_code
47    ,etcb_hire_or_start_flag_code
48    ,etcb_term_or_end_flag_code
49    ,etcb_term_vol_flag_code
50    ,etcb_term_invol_flag_code
51    ,etcb_term_flag_code
52    ,etcb_asg_end_flag_code
53    ,etcb_start_sspnsn_flag_code
54    ,etcb_end_sspnsn_flag_code
55    ,etcb_prmtn_flag_code)
56     VALUES
57      (-1
58      ,'N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N-N'
59      ,'N'
60      ,'N'
61      ,'N'
62      ,'N'
63      ,'N'
64      ,'N'
65      ,'N'
66      ,'N'
67      ,'N'
68      ,'N'
69      ,'N'
70      ,'N'
71      ,'N'
72      ,'N'
73      ,'N'
74      ,'N'
75      ,'N'
76      ,'N'
77      ,'N'
78      ,'N'
79      ,'N'
80      ,'N'
81      ,'N'
82      ,'N'
83      ,'N'
84      ,'N'
85      ,'N'
86      ,'N');
87 
88 END truncate_evtypcmb_table;
89 
90 -- -----------------------------------------------------------------------------
91 -- Translates an indicator (1/0) to a flag_code (Y/N)
92 -- -----------------------------------------------------------------------------
93 PROCEDURE ind_to_flag_code(p_indicator   IN NUMBER,
94                       p_flag_code        OUT NOCOPY VARCHAR2) IS
95 BEGIN
96 
97   IF (p_indicator = 1) THEN
98     p_flag_code := 'Y';
99   ELSE
100     p_flag_code := 'N';
101   END IF;
102 
103 END ind_to_flag_code;
104 
105 
106 -- -----------------------------------------------------------------------------
107 -- Inserts event combination record
108 -- -----------------------------------------------------------------------------
109 FUNCTION insert_evtypcmb(p_event_rec    IN evtypcmb_rec_type)
110            RETURN NUMBER IS
111 
112   l_evtypcmb_fk    NUMBER;
113 
114 BEGIN
115 
116   -- Get next sequence value
117   SELECT hri_cl_wevt_evtypcmb_ct_s.nextval
118   INTO l_evtypcmb_fk
119   FROM dual;
120 
121   -- Insert row
122   INSERT INTO hri_cl_wevt_evtypcmb_ct
123    (etcb_evtypcmb_pk
124    ,etcb_evtypcmb_code
125    ,etcb_assgnmnt_chng_flag_code
126    ,etcb_salary_chng_flag_code
127    ,etcb_prfrtng_chng_flag_code
128    ,etcb_perfband_chng_flag_code
129    ,etcb_powband_chng_flag_code
130    ,etcb_hdc_gain_flag_code
131    ,etcb_hdc_loss_flag_code
132    ,etcb_hdc_chng_flag_code
133    ,etcb_fte_gain_flag_code
134    ,etcb_fte_loss_flag_code
135    ,etcb_fte_chng_flag_code
136    ,etcb_grd_chng_flag_code
137    ,etcb_job_chng_flag_code
138    ,etcb_pos_chng_flag_code
139    ,etcb_loc_chng_flag_code
140    ,etcb_org_chng_flag_code
141    ,etcb_mgrh_chng_flag_code
142    ,etcb_hire_flag_code
143    ,etcb_asg_start_flag_code
144    ,etcb_hire_or_start_flag_code
145    ,etcb_term_or_end_flag_code
146    ,etcb_term_vol_flag_code
147    ,etcb_term_invol_flag_code
148    ,etcb_term_flag_code
149    ,etcb_asg_end_flag_code
150    ,etcb_start_sspnsn_flag_code
151    ,etcb_end_sspnsn_flag_code
152    ,etcb_prmtn_flag_code)
153     VALUES
154      (l_evtypcmb_fk
155      ,p_event_rec.evtypcmb_code
156      ,p_event_rec.assgnmnt_chng_flag_code
157      ,p_event_rec.salary_chng_flag_code
158      ,p_event_rec.prfrtng_chng_flag_code
159      ,p_event_rec.perfband_chng_flag_code
160      ,p_event_rec.powband_chng_flag_code
161      ,p_event_rec.hdc_gain_flag_code
162      ,p_event_rec.hdc_loss_flag_code
163      ,p_event_rec.hdc_chng_flag_code
164      ,p_event_rec.fte_gain_flag_code
165      ,p_event_rec.fte_loss_flag_code
166      ,p_event_rec.fte_chng_flag_code
167      ,p_event_rec.grd_chng_flag_code
168      ,p_event_rec.job_chng_flag_code
169      ,p_event_rec.pos_chng_flag_code
170      ,p_event_rec.loc_chng_flag_code
171      ,p_event_rec.org_chng_flag_code
172      ,p_event_rec.mgrh_chng_flag_code
173      ,p_event_rec.hire_flag_code
174      ,p_event_rec.asg_start_flag_code
175      ,p_event_rec.hire_or_start_flag_code
176      ,p_event_rec.term_or_end_flag_code
177      ,p_event_rec.term_vol_flag_code
178      ,p_event_rec.term_invol_flag_code
179      ,p_event_rec.term_flag_code
180      ,p_event_rec.asg_end_flag_code
181      ,p_event_rec.start_sspnsn_flag_code
182      ,p_event_rec.end_sspnsn_flag_code
183      ,p_event_rec.prmtn_flag_code);
184 
185 END insert_evtypcmb;
186 
187 
188 -- -----------------------------------------------------------------------------
189 -- Converts event combination record to a cache key
190 -- -----------------------------------------------------------------------------
191 FUNCTION get_evtypcmb_code(p_event_rec    IN evtypcmb_rec_type)
192            RETURN VARCHAR2 IS
193 
194   l_evtypcmb_code   VARCHAR2(240);
195 
196 BEGIN
197 
198   l_evtypcmb_code :=
199    p_event_rec.assgnmnt_chng_flag_code || '-' ||
200    p_event_rec.salary_chng_flag_code || '-' ||
201    p_event_rec.prfrtng_chng_flag_code || '-' ||
205    p_event_rec.hdc_loss_flag_code || '-' ||
202    p_event_rec.perfband_chng_flag_code || '-' ||
203    p_event_rec.powband_chng_flag_code || '-' ||
204    p_event_rec.hdc_gain_flag_code || '-' ||
206    p_event_rec.hdc_chng_flag_code || '-' ||
207    p_event_rec.fte_gain_flag_code || '-' ||
208    p_event_rec.fte_loss_flag_code || '-' ||
209    p_event_rec.fte_chng_flag_code || '-' ||
210    p_event_rec.grd_chng_flag_code || '-' ||
211    p_event_rec.job_chng_flag_code || '-' ||
212    p_event_rec.pos_chng_flag_code || '-' ||
213    p_event_rec.loc_chng_flag_code || '-' ||
214    p_event_rec.org_chng_flag_code || '-' ||
215    p_event_rec.mgrh_chng_flag_code || '-' ||
216    p_event_rec.hire_flag_code || '-' ||
217    p_event_rec.asg_start_flag_code || '-' ||
218    p_event_rec.hire_or_start_flag_code || '-' ||
219    p_event_rec.term_or_end_flag_code || '-' ||
220    p_event_rec.term_vol_flag_code || '-' ||
221    p_event_rec.term_invol_flag_code || '-' ||
222    p_event_rec.term_flag_code || '-' ||
223    p_event_rec.asg_end_flag_code || '-' ||
224    p_event_rec.start_sspnsn_flag_code || '-' ||
225    p_event_rec.end_sspnsn_flag_code || '-' ||
226    p_event_rec.prmtn_flag_code;
227 
228   RETURN l_evtypcmb_code;
229 
230 END get_evtypcmb_code;
231 
232 
233 -- -----------------------------------------------------------------------------
234 -- Lookups up event combination record
235 -- -----------------------------------------------------------------------------
236 FUNCTION lookup_evtypcmb_fk(p_event_rec    IN evtypcmb_rec_type)
237            RETURN NUMBER IS
238 
239   CURSOR evtypcmb_csr(v_evtypcmb_code  IN VARCHAR2) IS
240   SELECT etcb_evtypcmb_pk
241   FROM hri_cl_wevt_evtypcmb_ct
242   WHERE etcb_evtypcmb_code = v_evtypcmb_code;
243 
244   l_evtypcmb_fk    NUMBER;
245 
246 BEGIN
247 
248   -- Test whether combination key is already in cache
249   BEGIN
250 
251     -- Get value from cache
252     l_evtypcmb_fk := g_evtypcmb_cache_tab(p_event_rec.evtypcmb_code);
253 
254   -- Exception raised when cache miss
255   EXCEPTION WHEN OTHERS THEN
256 
257     -- Test whether combination exists in table
258     OPEN evtypcmb_csr(p_event_rec.evtypcmb_code);
259     FETCH evtypcmb_csr INTO l_evtypcmb_fk;
260     CLOSE evtypcmb_csr;
261 
262     -- If combination exists in table then set cache
263     IF (l_evtypcmb_fk IS NOT NULL) THEN
264       g_evtypcmb_cache_tab(p_event_rec.evtypcmb_code) := l_evtypcmb_fk;
265     END IF;
266 
267   END;
268 
269   RETURN l_evtypcmb_fk;
270 
271 END lookup_evtypcmb_fk;
272 
273 
274 -- -----------------------------------------------------------------------------
275 -- Main function to lookup, insert if necessary, and return key for event
276 -- combination.
277 -- -----------------------------------------------------------------------------
278 FUNCTION get_evtypcmb_fk(p_event_rec    IN evtypcmb_rec_type)
279            RETURN NUMBER IS
280 
281   l_evtypcmb_fk    NUMBER;
282 
283 BEGIN
284 
285   -- First lookup event combination to see if it already exists
286   l_evtypcmb_fk := lookup_evtypcmb_fk
287                          (p_event_rec => p_event_rec);
288 
289   -- Attempt insert of event combination if lookup failed
290   IF (l_evtypcmb_fk IS NULL) THEN
291 
292     -- Trap exception that might occur if a simultaneous insert occurs
296       l_evtypcmb_fk := insert_evtypcmb
293     -- by another thread
294     BEGIN
295 
297                              (p_event_rec => p_event_rec);
298 
299     EXCEPTION WHEN OTHERS THEN
300 
301       -- Retry lookup
302       l_evtypcmb_fk := lookup_evtypcmb_fk
303                              (p_event_rec => p_event_rec);
304 
305     END;
306 
307   END IF;
308 
309   RETURN l_evtypcmb_fk;
310 
311 END get_evtypcmb_fk;
312 
313 
314 -- -----------------------------------------------------------------------------
315 -- Entry point to function to lookup, insert if necessary, and return key
316 -- for event combination.
317 -- -----------------------------------------------------------------------------
318 FUNCTION get_evtypcmb_fk
319    (p_assignment_change_ind    IN NUMBER
320    ,p_salary_change_ind        IN NUMBER
321    ,p_perf_rating_change_ind   IN NUMBER
322    ,p_perf_band_change_ind     IN NUMBER
323    ,p_pow_band_change_ind      IN NUMBER
324    ,p_headcount_gain_ind       IN NUMBER
325    ,p_headcount_loss_ind       IN NUMBER
326    ,p_fte_gain_ind             IN NUMBER
327    ,p_fte_loss_ind             IN NUMBER
328    ,p_grade_change_ind         IN NUMBER
329    ,p_job_change_ind           IN NUMBER
330    ,p_position_change_ind      IN NUMBER
331    ,p_location_change_ind      IN NUMBER
332    ,p_organization_change_ind  IN NUMBER
333    ,p_supervisor_change_ind    IN NUMBER
334    ,p_worker_hire_ind          IN NUMBER
335    ,p_post_hire_asgn_start_ind IN NUMBER
336    ,p_pre_sprtn_asgn_end_ind   IN NUMBER
337    ,p_term_voluntary_ind       IN NUMBER
338    ,p_term_involuntary_ind     IN NUMBER
339    ,p_worker_term_ind          IN NUMBER
340    ,p_start_sspnsn_ind         IN NUMBER
341    ,p_end_sspnsn_ind           IN NUMBER
342    ,p_promotion_ind            IN NUMBER)
343         RETURN NUMBER IS
344 
345   l_evtypcmb_rec      evtypcmb_rec_type;
346   l_hire_or_start_ind      NUMBER;
347   l_term_or_end_ind        NUMBER;
348   l_hdc_chng_ind           NUMBER;
349   l_fte_chng_ind           NUMBER;
350   l_evtypcmb_fk            NUMBER;
351 
352 BEGIN
353 
354   -- Set derived indicators
355   l_hire_or_start_ind := p_worker_hire_ind + p_post_hire_asgn_start_ind;
356   l_term_or_end_ind   := p_worker_term_ind + p_pre_sprtn_asgn_end_ind;
357   l_hdc_chng_ind      := p_headcount_gain_ind + p_headcount_loss_ind;
358   l_fte_chng_ind      := p_fte_gain_ind + p_fte_loss_ind;
359 
360   -- Translate indicators to event combination record
361   ind_to_flag_code(p_assignment_change_ind,    l_evtypcmb_rec.assgnmnt_chng_flag_code);
362   ind_to_flag_code(p_salary_change_ind,        l_evtypcmb_rec.salary_chng_flag_code);
363   ind_to_flag_code(p_perf_rating_change_ind,   l_evtypcmb_rec.prfrtng_chng_flag_code);
364   ind_to_flag_code(p_perf_band_change_ind,     l_evtypcmb_rec.perfband_chng_flag_code);
365   ind_to_flag_code(p_pow_band_change_ind,      l_evtypcmb_rec.powband_chng_flag_code);
366   ind_to_flag_code(p_headcount_gain_ind,       l_evtypcmb_rec.hdc_gain_flag_code);
367   ind_to_flag_code(p_headcount_loss_ind,       l_evtypcmb_rec.hdc_loss_flag_code);
368   ind_to_flag_code(l_hdc_chng_ind,             l_evtypcmb_rec.hdc_chng_flag_code);
372   ind_to_flag_code(p_grade_change_ind,         l_evtypcmb_rec.grd_chng_flag_code);
369   ind_to_flag_code(p_fte_gain_ind,             l_evtypcmb_rec.fte_gain_flag_code);
370   ind_to_flag_code(p_fte_loss_ind,             l_evtypcmb_rec.fte_loss_flag_code);
371   ind_to_flag_code(l_fte_chng_ind,             l_evtypcmb_rec.fte_chng_flag_code);
373   ind_to_flag_code(p_job_change_ind,           l_evtypcmb_rec.job_chng_flag_code);
374   ind_to_flag_code(p_position_change_ind,      l_evtypcmb_rec.pos_chng_flag_code);
375   ind_to_flag_code(p_location_change_ind,      l_evtypcmb_rec.loc_chng_flag_code);
376   ind_to_flag_code(p_organization_change_ind,  l_evtypcmb_rec.org_chng_flag_code);
377   ind_to_flag_code(p_supervisor_change_ind,    l_evtypcmb_rec.mgrh_chng_flag_code);
378   ind_to_flag_code(p_worker_hire_ind,          l_evtypcmb_rec.hire_flag_code);
379   ind_to_flag_code(p_post_hire_asgn_start_ind, l_evtypcmb_rec.asg_start_flag_code);
380   ind_to_flag_code(l_hire_or_start_ind,        l_evtypcmb_rec.hire_or_start_flag_code);
381   ind_to_flag_code(l_term_or_end_ind,          l_evtypcmb_rec.term_or_end_flag_code);
382   ind_to_flag_code(p_term_voluntary_ind,       l_evtypcmb_rec.term_vol_flag_code);
383   ind_to_flag_code(p_term_involuntary_ind,     l_evtypcmb_rec.term_invol_flag_code);
384   ind_to_flag_code(p_worker_term_ind,          l_evtypcmb_rec.term_flag_code);
385   ind_to_flag_code(p_pre_sprtn_asgn_end_ind,   l_evtypcmb_rec.asg_end_flag_code);
386   ind_to_flag_code(p_start_sspnsn_ind,         l_evtypcmb_rec.start_sspnsn_flag_code);
387   ind_to_flag_code(p_end_sspnsn_ind,           l_evtypcmb_rec.end_sspnsn_flag_code);
391   l_evtypcmb_rec.evtypcmb_code := get_evtypcmb_code
388   ind_to_flag_code(p_promotion_ind,            l_evtypcmb_rec.prmtn_flag_code);
389 
390   -- Set event combination code
392                                    (p_event_rec => l_evtypcmb_rec);
393 
394   -- Call overloaded function with record
395   l_evtypcmb_fk := get_evtypcmb_fk
396                     (p_event_rec => l_evtypcmb_rec);
397 
398   RETURN l_evtypcmb_fk;
399 
400 END get_evtypcmb_fk;
401 
402 END hri_opl_wrkfc_evt_type;