[Home] [Help]
PACKAGE BODY: APPS.PAY_ELEMENT_LINK_INTERNAL
Source
1 Package Body pay_element_link_internal as
2 /* $Header: pypelbsi.pkb 120.2 2010/10/28 11:37:14 asnell ship $ */
3 --
4 -- Package Variables
5 --
6 g_package varchar2(33) := 'pay_element_link_internal.';
7 --
8 -- ----------------------------------------------------------------------------
9 -- |--------------------------<create_element_link>--------------------------|
10 -- ----------------------------------------------------------------------------
11 --
12 procedure create_element_link
13 (p_effective_date in date
14 ,p_element_type_id in number
15 ,p_business_group_id in number
16 ,p_costable_type in varchar2
17 ,p_payroll_id in number default null
18 ,p_job_id in number default null
19 ,p_position_id in number default null
20 ,p_people_group_id in number default null
21 ,p_cost_allocation_keyflex_id in out nocopy number
22 ,p_organization_id in number default null
23 ,p_location_id in number default null
24 ,p_grade_id in number default null
25 ,p_balancing_keyflex_id in out nocopy number
26 ,p_element_set_id in number default null
27 ,p_pay_basis_id in number default null
28 ,p_link_to_all_payrolls_flag in varchar2 default 'N'
29 ,p_standard_link_flag in out nocopy varchar2
30 ,p_transfer_to_gl_flag in varchar2 default 'N'
31 ,p_comments in varchar2 default null
32 ,p_employment_category in varchar2 default null
33 ,p_qualifying_age in number default null
34 ,p_qualifying_length_of_service in number default null
35 ,p_qualifying_units in varchar2 default null
36 ,p_attribute_category in varchar2 default null
37 ,p_attribute1 in varchar2 default null
38 ,p_attribute2 in varchar2 default null
39 ,p_attribute3 in varchar2 default null
40 ,p_attribute4 in varchar2 default null
41 ,p_attribute5 in varchar2 default null
42 ,p_attribute6 in varchar2 default null
43 ,p_attribute7 in varchar2 default null
44 ,p_attribute8 in varchar2 default null
45 ,p_attribute9 in varchar2 default null
46 ,p_attribute10 in varchar2 default null
47 ,p_attribute11 in varchar2 default null
48 ,p_attribute12 in varchar2 default null
49 ,p_attribute13 in varchar2 default null
50 ,p_attribute14 in varchar2 default null
51 ,p_attribute15 in varchar2 default null
52 ,p_attribute16 in varchar2 default null
53 ,p_attribute17 in varchar2 default null
54 ,p_attribute18 in varchar2 default null
55 ,p_attribute19 in varchar2 default null
56 ,p_attribute20 in varchar2 default null
57 ,p_cost_segment1 in varchar2 default null
58 ,p_cost_segment2 in varchar2 default null
59 ,p_cost_segment3 in varchar2 default null
60 ,p_cost_segment4 in varchar2 default null
61 ,p_cost_segment5 in varchar2 default null
62 ,p_cost_segment6 in varchar2 default null
63 ,p_cost_segment7 in varchar2 default null
64 ,p_cost_segment8 in varchar2 default null
65 ,p_cost_segment9 in varchar2 default null
66 ,p_cost_segment10 in varchar2 default null
67 ,p_cost_segment11 in varchar2 default null
68 ,p_cost_segment12 in varchar2 default null
69 ,p_cost_segment13 in varchar2 default null
70 ,p_cost_segment14 in varchar2 default null
71 ,p_cost_segment15 in varchar2 default null
72 ,p_cost_segment16 in varchar2 default null
73 ,p_cost_segment17 in varchar2 default null
74 ,p_cost_segment18 in varchar2 default null
75 ,p_cost_segment19 in varchar2 default null
76 ,p_cost_segment20 in varchar2 default null
77 ,p_cost_segment21 in varchar2 default null
78 ,p_cost_segment22 in varchar2 default null
79 ,p_cost_segment23 in varchar2 default null
80 ,p_cost_segment24 in varchar2 default null
81 ,p_cost_segment25 in varchar2 default null
82 ,p_cost_segment26 in varchar2 default null
83 ,p_cost_segment27 in varchar2 default null
84 ,p_cost_segment28 in varchar2 default null
85 ,p_cost_segment29 in varchar2 default null
86 ,p_cost_segment30 in varchar2 default null
87 ,p_balance_segment1 in varchar2 default null
88 ,p_balance_segment2 in varchar2 default null
89 ,p_balance_segment3 in varchar2 default null
90 ,p_balance_segment4 in varchar2 default null
91 ,p_balance_segment5 in varchar2 default null
92 ,p_balance_segment6 in varchar2 default null
93 ,p_balance_segment7 in varchar2 default null
94 ,p_balance_segment8 in varchar2 default null
95 ,p_balance_segment9 in varchar2 default null
96 ,p_balance_segment10 in varchar2 default null
97 ,p_balance_segment11 in varchar2 default null
98 ,p_balance_segment12 in varchar2 default null
99 ,p_balance_segment13 in varchar2 default null
100 ,p_balance_segment14 in varchar2 default null
101 ,p_balance_segment15 in varchar2 default null
102 ,p_balance_segment16 in varchar2 default null
103 ,p_balance_segment17 in varchar2 default null
104 ,p_balance_segment18 in varchar2 default null
105 ,p_balance_segment19 in varchar2 default null
106 ,p_balance_segment20 in varchar2 default null
107 ,p_balance_segment21 in varchar2 default null
108 ,p_balance_segment22 in varchar2 default null
109 ,p_balance_segment23 in varchar2 default null
110 ,p_balance_segment24 in varchar2 default null
111 ,p_balance_segment25 in varchar2 default null
112 ,p_balance_segment26 in varchar2 default null
113 ,p_balance_segment27 in varchar2 default null
114 ,p_balance_segment28 in varchar2 default null
115 ,p_balance_segment29 in varchar2 default null
116 ,p_balance_segment30 in varchar2 default null
117 ,p_cost_concat_segments in varchar2
118 ,p_balance_concat_segments in varchar2
119 ,p_element_link_id out nocopy number
120 ,p_comment_id out nocopy number
121 ,p_object_version_number out nocopy number
122 ,p_effective_start_date out nocopy date
123 ,p_effective_end_date out nocopy date
124 ) is
125 --
126 -- Declare cursors and local variables
127 --
128 l_proc varchar2(72) := g_package||'create_element_link';
129 l_effective_date date;
130
131 -- The variables to get the cost/balance id and structure number
132 l_flex_num number;
133 l_cost_allocation_id number := p_cost_allocation_keyflex_id;
134 l_bal_allocation_id number := p_balancing_keyflex_id;
135
136 -- Variable used to collect the concat segments. Not used furthur hence
137 -- called temp
138 l_temp varchar2(1000);
139
140 -- Variable to collect the default standard link flag,Qualifying conditions
141 -- and multiply value flag from the element type
142 l_standard_link_flag pay_element_links_f.standard_link_flag%type;
143 l_qualifying_age pay_element_links_f.qualifying_age%type;
144 l_qualifying_length_of_service
145 pay_element_links_f.qualifying_length_of_service%type;
146 l_qualifying_units pay_element_links_f.qualifying_units%type;
147 l_multiply_value_flag pay_element_links_f.multiply_value_flag%type;
148
149 -- Cursor to get the structure number to be passed to get the cost/balance id
150 cursor csr_flexnum is
151 select cost_allocation_structure
152 from per_business_groups
153 where business_group_id = p_business_group_id;
154 --
155 -- Variables to hold the values returned.
156 --
157 l_element_link_id number;
158 l_comment_id number;
159 l_object_version_number number;
160 l_effective_start_date date;
161 l_effective_end_date date;
162 --
163 begin
164 hr_utility.set_location('Entering:'|| l_proc, 10);
165 --
166 -- Truncate the time portion from all IN date parameters
167 --
168 l_effective_date := trunc(p_effective_date);
169
170 -- If the costable type is Distributed/Costed/Fixed Costed then call hr_kflex_utility for
171 -- mandatory balancing segments
172
173 if (p_costable_type = 'D' or p_costable_type = 'C'
174 or p_costable_type = 'F') then
175
176 if (l_bal_allocation_id is null
177 or l_cost_allocation_id is null) then
178
179 -- Call to hr_kflex_utility.ins_or_sel_keyflex_comb
180 open csr_Flexnum;
181 fetch csr_Flexnum into l_flex_num;
182 if csr_Flexnum%notfound then
183 close csr_Flexnum;
184 hr_utility.set_message(801,'HR_7471_FLEX_PEA_INVALID_ID');
185 hr_utility.raise_error;
186 end if;
187 end if;
188
189 if l_bal_allocation_id is null then
190 -- bug 8596649 switch from hr_kflex_utility to hr_entry.maintain_cost_keyflex
191 -- to ensure concatenated segments are maintained in step
192
193 -- hr_kflex_utility.ins_or_sel_keyflex_comb
194 l_bal_allocation_id :=
195 hr_entry.maintain_cost_keyflex(
196 p_cost_keyflex_structure => l_flex_num
197 ,p_cost_allocation_keyflex_id => -1
198 ,p_concatenated_segments => NULL -- p_balance_concat_segments
199 ,p_summary_flag =>'N'
200 ,p_start_date_active => NULL
201 ,p_end_date_active => NULL
202 ,p_segment1 => p_balance_segment1
203 ,p_segment2 => p_balance_segment2
204 ,p_segment3 => p_balance_segment3
205 ,p_segment4 => p_balance_segment4
206 ,p_segment5 => p_balance_segment5
207 ,p_segment6 => p_balance_segment6
208 ,p_segment7 => p_balance_segment7
209 ,p_segment8 => p_balance_segment8
210 ,p_segment9 => p_balance_segment9
211 ,p_segment10 => p_balance_segment10
212 ,p_segment11 => p_balance_segment11
213 ,p_segment12 => p_balance_segment12
214 ,p_segment13 => p_balance_segment13
215 ,p_segment14 => p_balance_segment14
216 ,p_segment15 => p_balance_segment15
217 ,p_segment16 => p_balance_segment16
218 ,p_segment17 => p_balance_segment17
219 ,p_segment18 => p_balance_segment18
220 ,p_segment19 => p_balance_segment19
221 ,p_segment20 => p_balance_segment20
222 ,p_segment21 => p_balance_segment21
223 ,p_segment22 => p_balance_segment22
224 ,p_segment23 => p_balance_segment23
225 ,p_segment24 => p_balance_segment24
226 ,p_segment25 => p_balance_segment25
227 ,p_segment26 => p_balance_segment26
228 ,p_segment27 => p_balance_segment27
229 ,p_segment28 => p_balance_segment28
230 ,p_segment29 => p_balance_segment29
231 ,p_segment30 => p_balance_segment30
232 );
233 end if;
234
235 -- Call the hr_kflex_untility for optional costing if that info is supplied
236 -- In case if p_cost_allocation_keyflex_id is supplied then there is no need
237 -- to get the costing id again.
238
239 if l_cost_allocation_id is null and
240 (p_cost_segment1 is not null or p_cost_segment2 is not null or
241 p_cost_segment3 is not null or p_cost_segment4 is not null or
242 p_cost_segment5 is not null or p_cost_segment6 is not null or
243 p_cost_segment7 is not null or p_cost_segment8 is not null or
244 p_cost_segment9 is not null or p_cost_segment10 is not null or
245 p_cost_segment11 is not null or p_cost_segment12 is not null or
246 p_cost_segment13 is not null or p_cost_segment14 is not null or
247 p_cost_segment15 is not null or p_cost_segment16 is not null or
248 p_cost_segment17 is not null or p_cost_segment18 is not null or
249 p_cost_segment19 is not null or p_cost_segment20 is not null or
250 p_cost_segment21 is not null or p_cost_segment22 is not null or
251 p_cost_segment23 is not null or p_cost_segment24 is not null or
252 p_cost_segment25 is not null or p_cost_segment26 is not null or
253 p_cost_segment27 is not null or p_cost_segment28 is not null or
254 p_cost_segment29 is not null or p_cost_segment30 is not null) then
255
256 -- bug 8596649 switch from hr_kflex_utility to hr_entry.maintain_cost_keyflex
257 -- to ensure concatenated segments are maintained in step
258
259 -- hr_kflex_utility.ins_or_sel_keyflex_comb
260 l_cost_allocation_id :=
261 hr_entry.maintain_cost_keyflex(
262 p_cost_keyflex_structure => l_flex_num
263 ,p_cost_allocation_keyflex_id => -1
264 ,p_concatenated_segments => NULL -- p_cost_concat_segments
265 ,p_summary_flag =>'N'
266 ,p_start_date_active => NULL
267 ,p_end_date_active => NULL
268 ,p_segment1 => p_cost_segment1
269 ,p_segment2 => p_cost_segment2
270 ,p_segment3 => p_cost_segment3
271 ,p_segment4 => p_cost_segment4
272 ,p_segment5 => p_cost_segment5
273 ,p_segment6 => p_cost_segment6
274 ,p_segment7 => p_cost_segment7
275 ,p_segment8 => p_cost_segment8
276 ,p_segment9 => p_cost_segment9
277 ,p_segment10 => p_cost_segment10
278 ,p_segment11 => p_cost_segment11
279 ,p_segment12 => p_cost_segment12
280 ,p_segment13 => p_cost_segment13
281 ,p_segment14 => p_cost_segment14
282 ,p_segment15 => p_cost_segment15
283 ,p_segment16 => p_cost_segment16
284 ,p_segment17 => p_cost_segment17
285 ,p_segment18 => p_cost_segment18
286 ,p_segment19 => p_cost_segment19
287 ,p_segment20 => p_cost_segment20
288 ,p_segment21 => p_cost_segment21
289 ,p_segment22 => p_cost_segment22
290 ,p_segment23 => p_cost_segment23
291 ,p_segment24 => p_cost_segment24
292 ,p_segment25 => p_cost_segment25
293 ,p_segment26 => p_cost_segment26
294 ,p_segment27 => p_cost_segment27
295 ,p_segment28 => p_cost_segment28
296 ,p_segment29 => p_cost_segment29
297 ,p_segment30 => p_cost_segment30
298 );
299 end if;
300 end if;
301 --
302 begin
303 if p_qualifying_length_of_service is not null
304 and (p_qualifying_length_of_service < 0
305 or to_number(p_qualifying_length_of_service,'9999.99')
306 <> to_number(p_qualifying_length_of_service)) then
307 fnd_message.set_name('PAY', 'PAY_33097_QUALI_LOS_CHECK');
308 fnd_message.raise_error;
309 end if;
310 exception
311 when others then
312 fnd_message.set_name('PAY', 'PAY_33097_QUALI_LOS_CHECK');
313 fnd_message.raise_error;
314 end;
315 --
316 -- Assign values of those parameters who need to be defaulted on basis of
317 -- element type. These are assigned to variable as these are used as
318 -- in/out parameters in chk_defaults procedure.
319 --
320 l_standard_link_flag := p_standard_link_flag;
321 l_qualifying_age := p_qualifying_age;
322 l_qualifying_length_of_service := p_qualifying_length_of_service;
323 l_qualifying_units := p_qualifying_units;
324 -- Defaults the values
325 pay_pel_bus.chk_defaults
326 (p_element_type_id => p_element_type_id
327 ,p_qualifying_age => l_qualifying_age
328 ,p_qualifying_length_of_service => l_qualifying_length_of_service
329 ,p_qualifying_units => l_qualifying_units
330 ,p_multiply_value_flag => l_multiply_value_flag
331 ,p_standard_link_flag => l_standard_link_flag
332 ,p_effective_date => l_effective_date
333 );
334
335 --
336 -- Process Logic
337 --
338 pay_pel_ins.ins(
339 p_effective_date => l_effective_date
340 ,p_element_type_id => p_element_type_id
341 ,p_business_group_id => p_business_group_id
342 ,p_costable_type => p_costable_type
343 ,p_link_to_all_payrolls_flag => p_link_to_all_payrolls_flag
344 ,p_multiply_value_flag => l_multiply_value_flag
345 ,p_standard_link_flag => l_standard_link_flag
346 ,p_transfer_to_gl_flag => p_transfer_to_gl_flag
347 ,p_payroll_id => p_payroll_id
348 ,p_job_id => p_job_id
349 ,p_position_id => p_position_id
350 ,p_people_group_id => p_people_group_id
351 ,p_cost_allocation_keyflex_id => l_cost_allocation_id
352 ,p_organization_id => p_organization_id
353 ,p_location_id => p_location_id
354 ,p_grade_id => p_grade_id
355 ,p_balancing_keyflex_id => l_bal_allocation_id
356 ,p_element_set_id => p_element_set_id
357 ,p_pay_basis_id => p_pay_basis_id
358 ,p_comments => p_comments
359 ,p_employment_category => p_employment_category
360 ,p_qualifying_age => l_qualifying_age
361 ,p_qualifying_length_of_service => l_qualifying_length_of_service
362 ,p_qualifying_units => l_qualifying_units
363 ,p_attribute_category => p_attribute_category
364 ,p_attribute1 => p_attribute1
365 ,p_attribute2 => p_attribute2
366 ,p_attribute3 => p_attribute3
367 ,p_attribute4 => p_attribute4
368 ,p_attribute5 => p_attribute5
369 ,p_attribute6 => p_attribute6
370 ,p_attribute7 => p_attribute7
371 ,p_attribute8 => p_attribute8
372 ,p_attribute9 => p_attribute9
373 ,p_attribute10 => p_attribute10
374 ,p_attribute11 => p_attribute11
375 ,p_attribute12 => p_attribute12
376 ,p_attribute13 => p_attribute13
377 ,p_attribute14 => p_attribute14
378 ,p_attribute15 => p_attribute15
379 ,p_attribute16 => p_attribute16
380 ,p_attribute17 => p_attribute17
381 ,p_attribute18 => p_attribute18
382 ,p_attribute19 => p_attribute19
383 ,p_attribute20 => p_attribute20
384 ,p_element_link_id => l_element_link_id
385 ,p_object_version_number => l_object_version_number
386 ,p_effective_start_date => l_effective_start_date
387 ,p_effective_end_date => l_effective_end_date
388 ,p_comment_id => l_comment_id
389 );
390
391 -- The following three procedures are called to create the subsequent entries
392 -- once element_link_id is created.
393
394 -- Creates link input values for the element link created
395 pay_pel_bus.chk_link_input_values
396 (p_element_type_id => p_element_type_id
397 ,p_element_link_id => l_element_link_id
398 ,p_effective_date => l_effective_date
399 );
400
401 --
402 -- Set out variables
403 --
404 p_element_link_id := l_element_link_id;
405 p_comment_id := l_comment_id;
406 p_object_version_number := l_object_version_number;
407 p_effective_start_date := l_effective_start_date;
408 p_effective_end_date := l_effective_end_date;
409 p_standard_link_flag := l_standard_link_flag;
410 p_cost_allocation_keyflex_id := l_cost_allocation_id;
411 p_balancing_keyflex_id := l_bal_allocation_id;
412
413 hr_utility.set_location(' Leaving:'||l_proc, 70);
414 end create_element_link;
415
416 end pay_element_link_internal;