[Home] [Help]
PACKAGE BODY: APPS.PAY_JP_ISDF_SS_PKG
Source
1 package body pay_jp_isdf_ss_pkg as
2 /* $Header: pyjpisfs.pkb 120.12.12020000.4 2012/09/20 19:01:41 dduvvuri ship $ */
3 --
4 c_package constant varchar2(30) := 'pay_jp_isdf_ss_pkg.';
5 g_debug boolean := hr_utility.debug_enabled;
6 --
7 c_isdf_ins_elm constant varchar2(80) := 'YEA_INS_PREM_EXM_DECLARE_INFO';
8 c_isdf_ins_elm_id constant number := hr_jp_id_pkg.element_type_id(c_isdf_ins_elm, null, 'JP');
9 c_life_gen_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'GEN_LIFE_INS_PREM');
10 c_life_pens_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'INDIVIDUAL_PENSION_PREM');
11 c_nonlife_long_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'LONG_TERM_NONLIFE_INS_PREM');
12 c_nonlife_short_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'SHORT_TERM_NONLIFE_INS_PREM');
13 c_earthquake_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'EARTHQUAKE_INS_PREM');
14 c_life_gen_new_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'GEN_LIFE_INS_PREM_2012');
15 c_life_pens_new_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'INDIVIDUAL_PENSION_PREM_2012');
16 c_care_med_new_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_ins_elm_id, 'CARE_INS_PREM_2012');
17
18 --
19 c_isdf_is_elm constant varchar2(80) := 'YEA_INS_PREM_SPOUSE_SP_EXM_INFO';
20 c_isdf_is_elm_id constant number := hr_jp_id_pkg.element_type_id(c_isdf_is_elm, null, 'JP');
21 c_social_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_is_elm_id, 'DECLARE_SI_PREM');
22 c_mutual_aid_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_is_elm_id, 'SMALL_COMPANY_MUTUAL_AID_PREM');
23 c_spouse_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_is_elm_id, 'SPOUSE_INCOME');
24 c_national_pens_iv_id constant number := hr_jp_id_pkg.input_value_id(c_isdf_is_elm_id, 'NATIONAL_PENSION_PREM');
25 --
26 c_com_calc_dpnt_elm_id constant number := hr_jp_id_pkg.element_type_id('YEA_DEP_EXM_PROC', null, 'JP');
27 c_sp_type_iv_id constant number := hr_jp_id_pkg.input_value_id(c_com_calc_dpnt_elm_id, 'SPOUSE_TYPE');
28 c_widow_type_iv_id constant number := hr_jp_id_pkg.input_value_id(c_com_calc_dpnt_elm_id, 'WIDOW_TYPE');
29 --
30 c_com_itax_info_elm_id constant number := hr_jp_id_pkg.element_type_id('COM_ITX_INFO', null, 'JP');
31 c_tax_type_iv_id constant number := hr_jp_id_pkg.input_value_id(c_com_itax_info_elm_id, 'ITX_TYPE');
32 --
33 c_st_upd_date_2007 constant date := to_date('2007/01/01','YYYY/MM/DD');
34 c_st_upd_date_2012 constant date := to_date('2012/01/01','YYYY/MM/DD');
35 --
36 -- -------------------------------------------------------------------------
37 -- check_submission_period
38 -- -------------------------------------------------------------------------
39 function check_submission_period(
40 p_action_information_id in number)
41 return date
42 is
43 --
44 l_submission_date date;
45 --
46 cursor csr_pact
47 is
48 select /*+ ORDERED */
49 pact.submission_period_status,
50 pact.submission_start_date,
51 pact.submission_end_date
52 from pay_jp_isdf_assact_v assact,
53 pay_assignment_actions paa,
54 pay_jp_isdf_pact_v pact
55 where assact.action_information_id = p_action_information_id
56 and paa.assignment_action_id = assact.assignment_action_id
57 and pact.payroll_action_id = paa.payroll_action_id;
58 --
59 l_csr_pact csr_pact%rowtype;
60 --
61 begin
62 --
63 open csr_pact;
64 fetch csr_pact into l_csr_pact;
65 close csr_pact;
66 --
67 if l_csr_pact.submission_period_status = 'C' then
68 fnd_message.set_name('PAY','PAY_JP_DEF_PERIOD_CLOSED');
69 fnd_message.raise_error;
70 end if;
71 --
72 l_submission_date := sysdate;
73 --
74 if l_submission_date < nvl(l_csr_pact.submission_start_date,l_submission_date) then
75 fnd_message.set_name('PAY','PAY_JP_DEF_PERIOD_NOT_STARTED');
76 fnd_message.raise_error;
77 end if;
78 --
79 if l_submission_date > nvl(l_csr_pact.submission_end_date,l_submission_date) then
80 fnd_message.set_name('PAY','PAY_JP_DEF_PERIOD_EXPIRED');
81 fnd_message.raise_error;
82 end if;
83 --
84 return l_submission_date;
85 --
86 end check_submission_period;
87 --
88 -- -------------------------------------------------------------------------
89 -- get_spouse_type
90 -- -------------------------------------------------------------------------
91 function get_spouse_type(
92 p_assignment_id in number,
93 p_effective_date in date,
94 p_payroll_id in number)
95 return varchar2
96 is
97 --
98 l_spouse_type pay_element_entry_values_f.screen_entry_value%type;
99 l_tax_type pay_element_entry_values_f.screen_entry_value%type;
100 l_bg_itax_dpnt_ref_type varchar2(150);
101 --
102 cursor csr_bg_itax_dpnt_ref_type
103 is
104 select /*+ ORDERED */
105 nvl(nvl(pp.prl_information1, hoi.org_information2),'CTR_EE')
106 from pay_all_payrolls_f pp,
107 hr_organization_information hoi
108 where pp.payroll_id = p_payroll_id
109 and p_effective_date
110 between pp.effective_start_date and pp.effective_end_date
111 and hoi.organization_id(+) = pp.business_group_id
112 and hoi.org_information_context(+) = 'JP_BUSINESS_GROUP_INFO';
113 --
114 begin
115 --
116 l_spouse_type := pay_jp_balance_pkg.get_entry_value_char(c_sp_type_iv_id,p_assignment_id,p_effective_date);
117 --
118 if l_spouse_type is null then
119 --
120 open csr_bg_itax_dpnt_ref_type;
121 fetch csr_bg_itax_dpnt_ref_type into l_bg_itax_dpnt_ref_type;
122 close csr_bg_itax_dpnt_ref_type;
123 --
124 if l_bg_itax_dpnt_ref_type = 'CEI' then
125 --
126 l_tax_type := pay_jp_balance_pkg.get_entry_value_char(c_tax_type_iv_id,p_assignment_id,p_effective_date);
127 l_spouse_type := per_jp_ctr_utility_pkg.get_itax_spouse_type(p_assignment_id,l_tax_type,p_effective_date);
128 --
129 end if;
130 --
131 end if;
132 --
133 return l_spouse_type;
134 --
135 end get_spouse_type;
136 --
137 -- -------------------------------------------------------------------------
138 -- get_widow_type
139 -- -------------------------------------------------------------------------
140 function get_widow_type(
141 p_assignment_id in number,
142 p_effective_date in date)
143 return varchar2
144 is
145 l_widow_type pay_element_entry_values_f.screen_entry_value%type;
146 begin
147 --
148 l_widow_type := pay_jp_balance_pkg.get_entry_value_char(c_widow_type_iv_id,p_assignment_id,p_effective_date);
149 --
150 return l_widow_type;
151 --
152 end get_widow_type;
153 --
154 -- -------------------------------------------------------------------------
155 -- set_form_pg_prompt
156 -- -------------------------------------------------------------------------
157 procedure set_form_pg_prompt(
158 p_action_information_id in number)
159 is
160 --
161 l_proc varchar2(80) := c_package||'get_formpg_prompt';
162 --
163 l_payroll_action_id number;
164 l_business_group_id number;
165 l_effective_date date;
166 --
167 l_legislation_code varchar2(2);
168 l_rate pay_user_column_instances_f.value%type;
169 l_add_adj pay_user_column_instances_f.value%type;
170 l_lnonlife_calc3 pay_user_column_instances_f.value%type;
171 l_snonlife_calc3 pay_user_column_instances_f.value%type;
172 l_sp_calc_other_inc_calc_rate pay_user_column_instances_f.value%type;
173 l_dct_cnt number := 0;
174 l_nonlife_max pay_user_column_instances_f.value%type;
175 l_nonlife_max_2007 pay_user_column_instances_f.value%type;
176 --
177 type t_sp_calc_rec is record(
178 range_a pay_user_rows_f.row_low_range_or_name%type,
179 range_b pay_user_rows_f.row_low_range_or_name%type,
180 val pay_user_column_instances_f.value%type);
181 type t_sp_calc_tbl is table of t_sp_calc_rec index by binary_integer;
182 l_sp_calc_tbl t_sp_calc_tbl;
183 --
184 cursor csr_pact
185 is
186 select /* +ORDERED */
187 ppa.payroll_action_id,
188 ppa.business_group_id,
189 ppa.effective_date
190 from pay_jp_isdf_assact_v pjia,
191 pay_assignment_actions paa,
192 pay_payroll_actions ppa
193 where pjia.action_information_id = p_action_information_id
194 and paa.assignment_action_id = pjia.assignment_action_id
195 and ppa.payroll_action_id = paa.payroll_action_id;
196 --
197 cursor csr_udt_row(
198 p_udt_name in varchar2,
199 p_effective_date in date)
200 is
201 select /* +ORDERED */
202 put.user_table_id,
203 pur.user_row_id,
204 pur.display_sequence,
205 pur.row_low_range_or_name,
206 pur.row_high_range
207 from pay_user_tables put,
208 pay_user_rows_f pur
209 where put.user_table_name = p_udt_name
210 and nvl(put.legislation_code,'X') = nvl(l_legislation_code,nvl(put.legislation_code,'X'))
211 and pur.user_table_id = put.user_table_id
212 and p_effective_date
213 between pur.effective_start_date and pur.effective_end_date
214 order by 3, fnd_number.canonical_to_number(pur.row_low_range_or_name);
215 --
216 cursor csr_udt_val(
217 p_user_table_id in number,
218 p_row_id in number,
219 p_effective_date in date)
220 is
221 select /* +ORDERED */
222 puc.user_column_name,
223 puci.value
224 from pay_user_columns puc,
225 pay_user_column_instances_f puci
226 where puc.user_table_id = p_user_table_id
227 and puci.user_column_id = puc.user_column_id
228 and puci.user_row_id = p_row_id
229 and p_effective_date
230 between puci.effective_start_date and puci.effective_end_date
231 order by 1;
232 --
233 l_csr_udt_row csr_udt_row%rowtype;
234 l_csr_udt_val csr_udt_val%rowtype;
235 --
236 begin
237 --
238 if g_debug then
239 hr_utility.set_location(l_proc,0);
240 end if;
241 --
242 open csr_pact;
243 fetch csr_pact into l_payroll_action_id, l_business_group_id, l_effective_date;
244 close csr_pact;
245 --
246 -- cache in case payroll_action_id is same.
247 if g_payroll_action_id is null
248 or (g_payroll_action_id <> l_payroll_action_id
249 and l_payroll_action_id is not null) then
250 --
251 g_payroll_action_id := l_payroll_action_id;
252 g_business_group_id := l_business_group_id;
253 g_effective_date := l_effective_date;
254 --
255 l_legislation_code := hr_jp_id_pkg.legislation_code(g_business_group_id);
256 --
257 --
258 -- life_ins prompt fetch
259 --
260 l_effective_date := g_effective_date;
261 --
262 open csr_udt_row(c_life_gen_calc_udt,l_effective_date);
263 loop
264 --
265 fetch csr_udt_row into l_csr_udt_row;
266 exit when csr_udt_row%notfound;
267 --
268 if csr_udt_row%rowcount = 1 then
269 --
270 g_life_range1b := l_csr_udt_row.row_high_range;
271 g_life_range1b := to_char(to_number(g_life_range1b),fnd_currency.get_format_mask('JPY',40));
272 --
273 elsif csr_udt_row%rowcount = 2 then
274 --
275 g_life_range2a := l_csr_udt_row.row_low_range_or_name;
276 g_life_range2b := l_csr_udt_row.row_high_range;
277 g_life_range2a := to_char(to_number(g_life_range2a),fnd_currency.get_format_mask('JPY',40));
278 g_life_range2b := to_char(to_number(g_life_range2b),fnd_currency.get_format_mask('JPY',40));
279 --
280 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
281 loop
282 --
283 fetch csr_udt_val into l_csr_udt_val;
284 exit when csr_udt_val%notfound;
285 --
286 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
287 l_add_adj := l_csr_udt_val.value;
288 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
289 l_rate := l_csr_udt_val.value;
290 end if;
291 --
292 end loop;
293 close csr_udt_val;
294 --
295 if fnd_number.canonical_to_number(l_rate) = 0.5 then
296 l_rate := '1/2';
297 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
298 l_rate := '1/4';
299 end if;
300 --
301 g_life_calc2 := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
302 --
303 elsif csr_udt_row%rowcount = 3 then
304 --
305 g_life_range3a := l_csr_udt_row.row_low_range_or_name;
306 g_life_range3b := l_csr_udt_row.row_high_range;
307 g_life_range3a := to_char(to_number(g_life_range3a),fnd_currency.get_format_mask('JPY',40));
308 g_life_range3b := to_char(to_number(g_life_range3b),fnd_currency.get_format_mask('JPY',40));
309 --
310 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
311 loop
312 --
313 fetch csr_udt_val into l_csr_udt_val;
314 exit when csr_udt_val%notfound;
315 --
316 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
317 l_add_adj := l_csr_udt_val.value;
318 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
319 l_rate := l_csr_udt_val.value;
320 end if;
321 --
322 end loop;
323 close csr_udt_val;
324 --
325 if fnd_number.canonical_to_number(l_rate) = 0.5 then
326 l_rate := '1/2';
327 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
328 l_rate := '1/4';
329 end if;
330 --
331 g_life_calc3 := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
332 --
333 elsif csr_udt_row%rowcount = 4 then
334 --
335 g_life_range4a := l_csr_udt_row.row_low_range_or_name;
336 g_life_range4a := to_char(to_number(g_life_range4a),fnd_currency.get_format_mask('JPY',40));
337 --
338 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
339 loop
340 --
341 fetch csr_udt_val into l_csr_udt_val;
342 exit when csr_udt_val%notfound;
343 --
344 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
345 l_add_adj := l_csr_udt_val.value;
346 end if;
347 --
348 end loop;
349 close csr_udt_val;
350 --
351 g_life_calc4 := l_add_adj;
352 --
353 end if;
354 --
355 end loop;
356 close csr_udt_row;
357 --
358 g_life_gen_max := g_life_calc4;
359 g_life_pens_max := g_life_calc4;
360 g_life_ins_max := to_char(to_number(g_life_gen_max) + to_number(g_life_pens_max));
361 --
362 g_life_calc4 := to_char(to_number(g_life_calc4),fnd_currency.get_format_mask('JPY',40));
363 g_life_gen_max := to_char(to_number(g_life_gen_max),fnd_currency.get_format_mask('JPY',40));
364 g_life_pens_max := to_char(to_number(g_life_pens_max),fnd_currency.get_format_mask('JPY',40));
365 g_life_ins_max := to_char(to_number(g_life_ins_max),fnd_currency.get_format_mask('JPY',40));
366 --
367 --
368 -- nonlife_ins prompt fetch
369 --
370 -- + long term
371 --
372 l_effective_date := g_effective_date;
373 --
374 open csr_udt_row(c_nonlife_long_calc_udt,l_effective_date);
375 loop
376 --
377 fetch csr_udt_row into l_csr_udt_row;
378 exit when csr_udt_row%notfound;
379 --
380 if csr_udt_row%rowcount = 1 then
381 --
382 g_lnonlife_range1b := l_csr_udt_row.row_high_range;
383 g_lnonlife_range1b := to_char(to_number(g_lnonlife_range1b),fnd_currency.get_format_mask('JPY',40));
384 --
385 elsif csr_udt_row%rowcount = 2 then
386 --
387 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
388 loop
389 --
390 fetch csr_udt_val into l_csr_udt_val;
391 exit when csr_udt_val%notfound;
392 --
393 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
394 l_add_adj := l_csr_udt_val.value;
395 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
396 l_rate := l_csr_udt_val.value;
397 end if;
398 --
399 end loop;
400 close csr_udt_val;
401 --
402 if fnd_number.canonical_to_number(l_rate) = 0.5 then
403 l_rate := '1/2';
404 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
405 l_rate := '1/4';
406 end if;
407 --
408 g_lnonlife_calc2 := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
409 --
410 elsif csr_udt_row%rowcount = 3 then
411 --
412 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
413 loop
414 --
415 fetch csr_udt_val into l_csr_udt_val;
416 exit when csr_udt_val%notfound;
417 --
418 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
419 l_add_adj := l_csr_udt_val.value;
420 end if;
421 --
422 end loop;
423 close csr_udt_val;
424 --
425 l_lnonlife_calc3 := l_add_adj;
426 --
427 end if;
428 --
429 end loop;
430 close csr_udt_row;
431 --
432 -- + short term
433 --
434 -- value always should be fetched.
435 if g_effective_date >= c_st_upd_date_2007 then
436 --
437 l_effective_date := c_st_upd_date_2007 - 1;
438 --
439 else
440 --
441 l_effective_date := g_effective_date;
442 --
443 end if;
444 --
445 open csr_udt_row(c_nonlife_short_calc_udt,l_effective_date);
446 loop
447 --
448 fetch csr_udt_row into l_csr_udt_row;
449 exit when csr_udt_row%notfound;
450 --
451 if csr_udt_row%rowcount = 1 then
452 --
453 g_snonlife_range1b := l_csr_udt_row.row_high_range;
454 g_snonlife_range1b := to_char(to_number(g_snonlife_range1b),fnd_currency.get_format_mask('JPY',40));
455 --
456 elsif csr_udt_row%rowcount = 2 then
457 --
458 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
459 loop
460 --
461 fetch csr_udt_val into l_csr_udt_val;
462 exit when csr_udt_val%notfound;
463 --
464 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
465 l_add_adj := l_csr_udt_val.value;
466 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
467 l_rate := l_csr_udt_val.value;
468 end if;
469 --
470 end loop;
471 close csr_udt_val;
472 --
473 if fnd_number.canonical_to_number(l_rate) = 0.5 then
474 l_rate := '1/2';
475 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
476 l_rate := '1/4';
477 end if;
478 --
479 g_snonlife_calc2 := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
480 --
481 elsif csr_udt_row%rowcount = 3 then
482 --
483 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
484 loop
485 --
486 fetch csr_udt_val into l_csr_udt_val;
487 exit when csr_udt_val%notfound;
488 --
489 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
490 l_add_adj := l_csr_udt_val.value;
491 end if;
492 --
493 end loop;
494 close csr_udt_val;
495 --
496 l_snonlife_calc3 := l_add_adj;
497 --
498 end if;
499 --
500 end loop;
501 close csr_udt_row;
502 --
503 -- + earthquake
504 --
505 if g_effective_date >= c_st_upd_date_2007 then
506 --
507 l_effective_date := g_effective_date;
508 --
509 -- value always should be fetched.
510 else
511 --
512 l_effective_date := c_st_upd_date_2007;
513 --
514 end if;
515 --
516 if c_earthquake_max is null then
517 c_earthquake_max := to_number(pay_jp_report_pkg.get_udt_value(
518 g_business_group_id,
519 c_yea_calc_max_udt,
520 c_max_udtcol,
521 c_earthquake_udtrow,
522 l_effective_date));
523 end if;
524 --
525 g_earthquake_max := c_earthquake_max;
526 g_earthquake_max := to_char(to_number(g_earthquake_max),fnd_currency.get_format_mask('JPY',40));
527 --
528 g_lnonlife_year := to_char(c_nonlife_long_year);
529 g_lnonlife_max := l_lnonlife_calc3;
530 g_snonlife_max := l_snonlife_calc3;
531 g_lnonlife_max := to_char(to_number(g_lnonlife_max),fnd_currency.get_format_mask('JPY',40));
532 g_snonlife_max := to_char(to_number(g_snonlife_max),fnd_currency.get_format_mask('JPY',40));
533 --
534 -- + nonlife dct
535 --
536 -- value always should be fetched.
537 if g_effective_date >= c_st_upd_date_2007 then
538 --
539 l_effective_date := c_st_upd_date_2007 - 1;
540 --
541 else
542 --
543 l_effective_date := g_effective_date;
544 --
545 end if;
546 --
547 l_nonlife_max := to_number(pay_jp_report_pkg.get_udt_value(
548 g_business_group_id,
549 c_yea_calc_max_udt,
550 c_max_udtcol,
551 c_nonlife_udtrow,
552 l_effective_date));
553 --
554 -- value always should be fetched.
555 if g_effective_date >= c_st_upd_date_2007 then
556 --
557 l_effective_date := g_effective_date;
558 --
559 else
560 --
561 l_effective_date := c_st_upd_date_2007 - 1;
562 --
563 end if;
564 --
565 l_nonlife_max_2007 := to_number(pay_jp_report_pkg.get_udt_value(
566 g_business_group_id,
567 c_yea_calc_max_udt,
568 c_max_udtcol,
569 c_nonlife_udtrow,
570 l_effective_date));
571 --
572 -- need always reset for each time
573 if g_effective_date >= c_st_upd_date_2007 then
574 --
575 c_nonlife_max := l_nonlife_max_2007;
576 --
577 else
578 --
579 c_nonlife_max := l_nonlife_max;
580 --
581 end if;
582 --
583 g_nonlife_max := l_nonlife_max;
584 g_nonlife_max_2007 := l_nonlife_max_2007;
585 g_nonlife_max := to_char(to_number(g_nonlife_max),fnd_currency.get_format_mask('JPY',40));
586 g_nonlife_max_2007 := to_char(to_number(g_nonlife_max_2007),fnd_currency.get_format_mask('JPY',40));
587 --
588 --
589 -- spouse prompt fetch
590 --
591 g_sp_calc_unit := c_sp_calc_unit;
592 --
593 l_effective_date := g_effective_date;
594 --
595 if c_emp_income_max is null then
596 --
597 c_emp_income_max := to_number(pay_jp_report_pkg.get_udt_value(
598 g_business_group_id,
599 c_yea_calc_max_udt,
600 c_max_udtcol,
601 c_sp_emp_income_udtrow,
602 l_effective_date));
603 end if;
604 --
605 g_sp_emp_inc_max := c_emp_income_max/c_sp_calc_unit;
606 g_sp_emp_inc_max := to_char(to_number(g_sp_emp_inc_max),fnd_currency.get_format_mask('JPY',40));
607 --
608 l_effective_date := g_effective_date;
609 --
610 if c_inc_spouse_dct_max is null then
611 --
612 c_inc_spouse_dct_max := to_number(pay_jp_report_pkg.get_udt_value(
613 g_business_group_id,
614 c_yea_calc_max_udt,
615 c_max_udtcol,
616 c_sp_dctable_sp_income_udtrow,
617 l_effective_date));
618 end if;
619 --
620 g_sp_spdct_max := c_inc_spouse_dct_max/c_sp_calc_unit;
621 g_sp_spdct_max := to_char(to_number(g_sp_spdct_max),fnd_currency.get_format_mask('JPY',40));
622 --
623 l_effective_date := g_effective_date;
624 --
625 if c_spouse_income_max is null then
626 c_spouse_income_max := to_number(pay_jp_report_pkg.get_udt_value(
627 g_business_group_id,
628 c_yea_calc_max_udt,
629 c_max_udtcol,
630 c_sp_spouse_income_udtrow,
631 l_effective_date));
632 end if;
633 --
634 g_sp_spinc_max := c_spouse_income_max/c_sp_calc_unit;
635 g_sp_spinc_max := to_char(to_number(g_sp_spinc_max),fnd_currency.get_format_mask('JPY',40));
636 --
637 --
638 -- spouse_calc prompt fetch
639 --
640 g_sp_calc_exp1b := c_sp_earned_inc_exp;
641 g_sp_calc_exp1b_fmt := to_char(g_sp_calc_exp1b);
642 g_sp_calc_exp1b_fmt := to_char(to_number(g_sp_calc_exp1b_fmt),fnd_currency.get_format_mask('JPY',40));
643 g_sp_calc_cal1 := to_char(c_sp_calc_earned_inc_calc1);
644 --
645 if fnd_number.canonical_to_number(c_sp_calc_other_inc_calc_rate) = 0.5 then
646 l_sp_calc_other_inc_calc_rate := '1/2';
647 elsif fnd_number.canonical_to_number(c_sp_calc_other_inc_calc_rate) = 0.25 then
648 l_sp_calc_other_inc_calc_rate := '1/4';
649 end if;
650 --
651 g_sp_calc_cal6 := 'x '||l_sp_calc_other_inc_calc_rate;
652 --
653 l_effective_date := g_effective_date;
654 --
655 open csr_udt_row(c_spouse_calc_udt,l_effective_date);
656 loop
657 --
658 fetch csr_udt_row into l_csr_udt_row;
659 exit when csr_udt_row%notfound;
660 --
661 if fnd_number.canonical_to_number(l_csr_udt_row.row_low_range_or_name) > c_inc_spouse_dct_max then
662 --
663 l_dct_cnt := l_dct_cnt + 1;
664 l_sp_calc_tbl(l_dct_cnt).range_a := l_csr_udt_row.row_low_range_or_name;
665 l_sp_calc_tbl(l_dct_cnt).range_b := l_csr_udt_row.row_high_range;
666 --
667 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,l_effective_date);
668 loop
669 --
670 fetch csr_udt_val into l_csr_udt_val;
671 exit when csr_udt_val%notfound;
672 --
673 if l_csr_udt_val.user_column_name = c_dct_udtcol then
674 --l_sp_calc_tbl(l_dct_cnt).val := to_char(fnd_number.canonical_to_number(l_csr_udt_val.value)/c_sp_calc_unit);
675 l_sp_calc_tbl(l_dct_cnt).val := l_csr_udt_val.value;
676 end if;
677 --
678 end loop;
679 close csr_udt_val;
680 --
681 end if;
682 --
683 end loop;
684 close csr_udt_row;
685 --
686 if l_sp_calc_tbl.count >= 9 then
687 --
688 g_sp_calc_dct_range1a := l_sp_calc_tbl(1).range_a;
689 g_sp_calc_dct_range1b := l_sp_calc_tbl(1).range_b;
690 g_sp_calc_dct1 := l_sp_calc_tbl(1).val;
691 g_sp_calc_dct_range2a := l_sp_calc_tbl(2).range_a;
692 g_sp_calc_dct_range2b := l_sp_calc_tbl(2).range_b;
693 g_sp_calc_dct2 := l_sp_calc_tbl(2).val;
694 g_sp_calc_dct_range3a := l_sp_calc_tbl(3).range_a;
695 g_sp_calc_dct_range3b := l_sp_calc_tbl(3).range_b;
696 g_sp_calc_dct3 := l_sp_calc_tbl(3).val;
697 g_sp_calc_dct_range4a := l_sp_calc_tbl(4).range_a;
698 g_sp_calc_dct_range4b := l_sp_calc_tbl(4).range_b;
699 g_sp_calc_dct4 := l_sp_calc_tbl(4).val;
700 g_sp_calc_dct_range5a := l_sp_calc_tbl(5).range_a;
701 g_sp_calc_dct_range5b := l_sp_calc_tbl(5).range_b;
702 g_sp_calc_dct5 := l_sp_calc_tbl(5).val;
703 g_sp_calc_dct_range6a := l_sp_calc_tbl(6).range_a;
704 g_sp_calc_dct_range6b := l_sp_calc_tbl(6).range_b;
705 g_sp_calc_dct6 := l_sp_calc_tbl(6).val;
706 g_sp_calc_dct_range7a := l_sp_calc_tbl(7).range_a;
707 g_sp_calc_dct_range7b := l_sp_calc_tbl(7).range_b;
708 g_sp_calc_dct7 := l_sp_calc_tbl(7).val;
709 g_sp_calc_dct_range8a := l_sp_calc_tbl(8).range_a;
710 g_sp_calc_dct_range8b := l_sp_calc_tbl(8).range_b;
711 g_sp_calc_dct8 := l_sp_calc_tbl(8).val;
712 g_sp_calc_dct_range9a := l_sp_calc_tbl(9).range_a;
713 g_sp_calc_dct_range9b := l_sp_calc_tbl(9).range_b;
714 g_sp_calc_dct9 := l_sp_calc_tbl(9).val;
715 --
716 g_sp_calc_dct_range1a := to_char(to_number(g_sp_calc_dct_range1a),fnd_currency.get_format_mask('JPY',40));
717 g_sp_calc_dct_range1b := to_char(to_number(g_sp_calc_dct_range1b),fnd_currency.get_format_mask('JPY',40));
718 g_sp_calc_dct1 := to_char(to_number(g_sp_calc_dct1),fnd_currency.get_format_mask('JPY',40));
719 g_sp_calc_dct_range2a := to_char(to_number(g_sp_calc_dct_range2a),fnd_currency.get_format_mask('JPY',40));
720 g_sp_calc_dct_range2b := to_char(to_number(g_sp_calc_dct_range2b),fnd_currency.get_format_mask('JPY',40));
721 g_sp_calc_dct2 := to_char(to_number(g_sp_calc_dct2),fnd_currency.get_format_mask('JPY',40));
722 g_sp_calc_dct_range3a := to_char(to_number(g_sp_calc_dct_range3a),fnd_currency.get_format_mask('JPY',40));
723 g_sp_calc_dct_range3b := to_char(to_number(g_sp_calc_dct_range3b),fnd_currency.get_format_mask('JPY',40));
724 g_sp_calc_dct3 := to_char(to_number(g_sp_calc_dct3),fnd_currency.get_format_mask('JPY',40));
725 g_sp_calc_dct_range4a := to_char(to_number(g_sp_calc_dct_range4a),fnd_currency.get_format_mask('JPY',40));
726 g_sp_calc_dct_range4b := to_char(to_number(g_sp_calc_dct_range4b),fnd_currency.get_format_mask('JPY',40));
727 g_sp_calc_dct4 := to_char(to_number(g_sp_calc_dct4),fnd_currency.get_format_mask('JPY',40));
728 g_sp_calc_dct_range5a := to_char(to_number(g_sp_calc_dct_range5a),fnd_currency.get_format_mask('JPY',40));
729 g_sp_calc_dct_range5b := to_char(to_number(g_sp_calc_dct_range5b),fnd_currency.get_format_mask('JPY',40));
730 g_sp_calc_dct5 := to_char(to_number(g_sp_calc_dct5),fnd_currency.get_format_mask('JPY',40));
731 g_sp_calc_dct_range6a := to_char(to_number(g_sp_calc_dct_range6a),fnd_currency.get_format_mask('JPY',40));
732 g_sp_calc_dct_range6b := to_char(to_number(g_sp_calc_dct_range6b),fnd_currency.get_format_mask('JPY',40));
733 g_sp_calc_dct6 := to_char(to_number(g_sp_calc_dct6),fnd_currency.get_format_mask('JPY',40));
734 g_sp_calc_dct_range7a := to_char(to_number(g_sp_calc_dct_range7a),fnd_currency.get_format_mask('JPY',40));
735 g_sp_calc_dct_range7b := to_char(to_number(g_sp_calc_dct_range7b),fnd_currency.get_format_mask('JPY',40));
736 g_sp_calc_dct7 := to_char(to_number(g_sp_calc_dct7),fnd_currency.get_format_mask('JPY',40));
737 g_sp_calc_dct_range8a := to_char(to_number(g_sp_calc_dct_range8a),fnd_currency.get_format_mask('JPY',40));
738 g_sp_calc_dct_range8b := to_char(to_number(g_sp_calc_dct_range8b),fnd_currency.get_format_mask('JPY',40));
739 g_sp_calc_dct8 := to_char(to_number(g_sp_calc_dct8),fnd_currency.get_format_mask('JPY',40));
740 g_sp_calc_dct_range9a := to_char(to_number(g_sp_calc_dct_range9a),fnd_currency.get_format_mask('JPY',40));
741 g_sp_calc_dct_range9b := to_char(to_number(g_sp_calc_dct_range9b),fnd_currency.get_format_mask('JPY',40));
742 g_sp_calc_dct9 := to_char(to_number(g_sp_calc_dct9),fnd_currency.get_format_mask('JPY',40));
743 --
744 end if;
745 --
746 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_FIRST');
747 fnd_message.set_token('RANGE_B',g_life_range1b);
748 g_msg_life_range1 := fnd_message.get;
749 --
750 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_MID');
751 fnd_message.set_token('RANGE_A',g_life_range2a);
752 fnd_message.set_token('RANGE_B',g_life_range2b);
753 g_msg_life_range2 := fnd_message.get;
754 --
755 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_MID');
756 fnd_message.set_token('RANGE_A',g_life_range3a);
757 fnd_message.set_token('RANGE_B',g_life_range3b);
758 g_msg_life_range3 := fnd_message.get;
759 --
760 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_LAST');
761 fnd_message.set_token('RANGE_A',g_life_range4a);
762 g_msg_life_range4 := fnd_message.get;
763 --
764 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_DCT_MID');
765 fnd_message.set_token('CALC',g_life_calc2);
766 g_msg_life_calc2 := fnd_message.get;
767 --
768 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_DCT_MID');
769 fnd_message.set_token('CALC',g_life_calc3);
770 g_msg_life_calc3 := fnd_message.get;
771 --
772 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_DCT_LAST');
773 fnd_message.set_token('CALC',g_life_calc4);
774 g_msg_life_calc4 := fnd_message.get;
775 --
776 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
777 fnd_message.set_token('MAX_VAL',g_life_gen_max);
778 g_msg_life_gen_max := fnd_message.get;
779 --
780 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
781 fnd_message.set_token('MAX_VAL',g_life_pens_max);
782 g_msg_life_pens_max := fnd_message.get;
783 --
784 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
785 fnd_message.set_token('MAX_VAL',g_life_ins_max);
786 g_msg_life_ins_max := fnd_message.get;
787 --
788 fnd_message.set_name('PAY','PAY_JP_ISDF_P_NONLIFE_2007');
789 g_msg_nonlife_2007 := fnd_message.get;
790 --
791 fnd_message.set_name('PAY','PAY_JP_ISDF_P_NONLIFE_AP_2007');
792 g_msg_nonlife_ap_2007 := fnd_message.get;
793 --
794 fnd_message.set_name('PAY','PAY_JP_ISDF_P_EQNONLIFE_S_2007');
795 g_msg_eqnonlife_s_2007 := fnd_message.get;
796 --
797 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LNONLIFE_S_2007');
798 g_msg_lnonlife_s_2007 := fnd_message.get;
799 --
800 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LNONLIFE');
801 fnd_message.set_token('YEAR',g_lnonlife_year);
802 g_msg_lnonlife := fnd_message.get;
803 --
804 fnd_message.set_name('PAY','PAY_JP_ISDF_P_EQNONLIFE_2007');
805 g_msg_eqnonlife_2007 := fnd_message.get;
806 --
807 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LNONLIFE_2007');
808 g_msg_lnonlife_2007 := fnd_message.get;
809 --
810 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LNONLIFE_DCT');
811 fnd_message.set_token('RANGE_B',g_lnonlife_range1b);
812 fnd_message.set_token('CALC',g_lnonlife_calc2);
813 g_msg_lnonlife_dct := fnd_message.get;
814 --
815 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SNONLIFE_DCT');
816 fnd_message.set_token('RANGE_B',g_snonlife_range1b);
817 fnd_message.set_token('CALC',g_snonlife_calc2);
818 g_msg_snonlife_dct := fnd_message.get;
819 --
820 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LNONL_DCT_2007');
821 fnd_message.set_token('RANGE_B',g_lnonlife_range1b);
822 fnd_message.set_token('CALC',g_lnonlife_calc2);
823 g_msg_lnonlife_dct_2007 := fnd_message.get;
824 --
825 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
826 fnd_message.set_token('MAX_VAL',g_earthquake_max);
827 g_msg_earthquake_max := fnd_message.get;
828 --
829 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
830 fnd_message.set_token('MAX_VAL',g_lnonlife_max);
831 g_msg_nonlife_long_max := fnd_message.get;
832 --
833 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
834 fnd_message.set_token('MAX_VAL',g_snonlife_max);
835 g_msg_nonlife_short_max := fnd_message.get;
836 --
837 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
838 fnd_message.set_token('MAX_VAL',g_nonlife_max);
839 g_msg_nonlife_ins_max := fnd_message.get;
840 --
841 fnd_message.set_name('PAY','PAY_JP_ISDF_P_MAX');
842 fnd_message.set_token('MAX_VAL',g_nonlife_max_2007);
843 g_msg_nonlife_ins_max_2007 := fnd_message.get;
844 --
845 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_EMP_INC_MAX');
846 fnd_message.set_token('EMP_INC_MAX',g_sp_emp_inc_max);
847 g_msg_sp_emp_inc_max := fnd_message.get;
848 --
849 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_SP_INC_MAX');
850 fnd_message.set_token('SP_DCT_MAX',g_sp_spdct_max);
851 fnd_message.set_token('SP_INC_MAX',g_sp_spinc_max);
852 g_msg_sp_sp_inc_max := fnd_message.get;
853 --
854 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_CALC_EXP1');
855 fnd_message.set_token('SP_CALC_EXP1',g_sp_calc_cal1);
856 g_msg_sp_calc_cal1 := fnd_message.get;
857 --
858 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_CALC_EXP6');
859 fnd_message.set_token('SP_CALC_EXP6',g_sp_calc_cal6);
860 g_msg_sp_calc_cal6 := fnd_message.get;
861 --
862 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
863 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range1a);
864 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range1b);
865 g_msg_sp_calc_dct_range1 := fnd_message.get;
866 --
867 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
868 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range2a);
869 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range2b);
870 g_msg_sp_calc_dct_range2 := fnd_message.get;
871 --
872 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
873 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range3a);
874 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range3b);
875 g_msg_sp_calc_dct_range3 := fnd_message.get;
876 --
877 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
878 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range4a);
879 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range4b);
880 g_msg_sp_calc_dct_range4 := fnd_message.get;
881 --
882 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
883 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range5a);
884 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range5b);
885 g_msg_sp_calc_dct_range5 := fnd_message.get;
886 --
887 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
888 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range6a);
889 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range6b);
890 g_msg_sp_calc_dct_range6 := fnd_message.get;
891 --
892 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
893 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range7a);
894 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range7b);
895 g_msg_sp_calc_dct_range7 := fnd_message.get;
896 --
897 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
898 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range8a);
899 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range8b);
900 g_msg_sp_calc_dct_range8 := fnd_message.get;
901 --
902 fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT_RANGE');
903 fnd_message.set_token('RANGE_A',g_sp_calc_dct_range9a);
904 fnd_message.set_token('RANGE_B',g_sp_calc_dct_range9b);
905 g_msg_sp_calc_dct_range9 := fnd_message.get;
906 --
907 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
908 --fnd_message.set_token('DCT',g_sp_calc_dct1);
909 --g_msg_sp_calc_dct1 := fnd_message.get;
910 g_msg_sp_calc_dct1 := g_sp_calc_dct1;
911 --
912 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
913 --fnd_message.set_token('DCT',g_sp_calc_dct2);
914 --g_msg_sp_calc_dct2 := fnd_message.get;
915 g_msg_sp_calc_dct2 := g_sp_calc_dct2;
916 --
917 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
918 --fnd_message.set_token('DCT',g_sp_calc_dct3);
919 --g_msg_sp_calc_dct3 := fnd_message.get;
920 g_msg_sp_calc_dct3 := g_sp_calc_dct3;
921 --
922 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
923 --fnd_message.set_token('DCT',g_sp_calc_dct4);
924 --g_msg_sp_calc_dct4 := fnd_message.get;
925 g_msg_sp_calc_dct4 := g_sp_calc_dct4;
926 --
927 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
928 --fnd_message.set_token('DCT',g_sp_calc_dct5);
929 --g_msg_sp_calc_dct5 := fnd_message.get;
930 g_msg_sp_calc_dct5 := g_sp_calc_dct5;
931 --
932 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
933 --fnd_message.set_token('DCT',g_sp_calc_dct6);
934 --g_msg_sp_calc_dct6 := fnd_message.get;
935 g_msg_sp_calc_dct6 := g_sp_calc_dct6;
936 --
937 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
938 --fnd_message.set_token('DCT',g_sp_calc_dct7);
939 --g_msg_sp_calc_dct7 := fnd_message.get;
940 g_msg_sp_calc_dct7 := g_sp_calc_dct7;
941 --
942 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
943 --fnd_message.set_token('DCT',g_sp_calc_dct8);
944 --g_msg_sp_calc_dct8 := fnd_message.get;
945 g_msg_sp_calc_dct8 := g_sp_calc_dct8;
946 --
947 --fnd_message.set_name('PAY','PAY_JP_ISDF_P_SP_DCT');
948 --fnd_message.set_token('DCT',g_sp_calc_dct9);
949 --g_msg_sp_calc_dct9 := fnd_message.get;
950 g_msg_sp_calc_dct9 := g_sp_calc_dct9;
951 --
952 end if;
953 --
954 if g_debug then
955 hr_utility.trace('g_life_range1b : '||g_life_range1b);
956 hr_utility.trace('g_life_range2a : '||g_life_range2a);
957 hr_utility.trace('g_life_range2b : '||g_life_range2b);
958 hr_utility.trace('g_life_range3a : '||g_life_range3a);
959 hr_utility.trace('g_life_range3b : '||g_life_range3b);
960 hr_utility.trace('g_life_range4a : '||g_life_range4a);
961 hr_utility.trace('g_life_calc2 : '||g_life_calc2);
962 hr_utility.trace('g_life_calc3 : '||g_life_calc3);
963 hr_utility.trace('g_life_calc4 : '||g_life_calc4);
964 hr_utility.trace('g_life_gen_max : '||g_life_gen_max);
965 hr_utility.trace('g_life_pens_max : '||g_life_pens_max);
966 hr_utility.trace('g_life_ins_max : '||g_life_ins_max);
967 hr_utility.trace('g_earthquake_max : '||g_earthquake_max);
968 hr_utility.trace('g_lnonlife_range1b : '||g_lnonlife_range1b);
969 hr_utility.trace('g_lnonlife_calc2 : '||g_lnonlife_calc2);
970 hr_utility.trace('g_lnonlife_year : '||g_lnonlife_year);
971 hr_utility.trace('g_snonlife_range1b : '||g_snonlife_range1b);
972 hr_utility.trace('g_snonlife_calc2 : '||g_snonlife_calc2);
973 hr_utility.trace('g_lnonlife_max : '||g_lnonlife_max);
974 hr_utility.trace('g_snonlife_max : '||g_snonlife_max);
975 hr_utility.trace('g_nonlife_max : '||g_nonlife_max);
976 hr_utility.trace('g_sp_calc_unit : '||g_sp_calc_unit);
977 hr_utility.trace('g_sp_emp_inc_max : '||g_sp_emp_inc_max);
978 hr_utility.trace('g_sp_spdct_max : '||g_sp_spdct_max);
979 hr_utility.trace('g_sp_spinc_max : '||g_sp_spinc_max);
980 hr_utility.trace('g_sp_calc_exp1b : '||g_sp_calc_exp1b);
981 hr_utility.trace('g_sp_calc_exp1b_fmt : '||g_sp_calc_exp1b_fmt);
982 hr_utility.trace('g_sp_calc_cal1 : '||g_sp_calc_cal1);
983 hr_utility.trace('g_sp_calc_cal6 : '||g_sp_calc_cal6);
984 hr_utility.trace('g_sp_calc_dct_range1a : '||g_sp_calc_dct_range1a);
985 hr_utility.trace('g_sp_calc_dct_range1b : '||g_sp_calc_dct_range1b);
986 hr_utility.trace('g_sp_calc_dct1 : '||g_sp_calc_dct1);
987 hr_utility.trace('g_sp_calc_dct_range2a : '||g_sp_calc_dct_range2a);
988 hr_utility.trace('g_sp_calc_dct_range2b : '||g_sp_calc_dct_range2b);
989 hr_utility.trace('g_sp_calc_dct2 : '||g_sp_calc_dct2);
990 hr_utility.trace('g_sp_calc_dct_range3a : '||g_sp_calc_dct_range3a);
991 hr_utility.trace('g_sp_calc_dct_range3b : '||g_sp_calc_dct_range3b);
992 hr_utility.trace('g_sp_calc_dct3 : '||g_sp_calc_dct3);
993 hr_utility.trace('g_sp_calc_dct_range4a : '||g_sp_calc_dct_range4a);
994 hr_utility.trace('g_sp_calc_dct_range4b : '||g_sp_calc_dct_range4b);
995 hr_utility.trace('g_sp_calc_dct4 : '||g_sp_calc_dct4);
996 hr_utility.trace('g_sp_calc_dct_range5a : '||g_sp_calc_dct_range5a);
997 hr_utility.trace('g_sp_calc_dct_range5b : '||g_sp_calc_dct_range5b);
998 hr_utility.trace('g_sp_calc_dct5 : '||g_sp_calc_dct5);
999 hr_utility.trace('g_sp_calc_dct_range6a : '||g_sp_calc_dct_range6a);
1000 hr_utility.trace('g_sp_calc_dct_range6b : '||g_sp_calc_dct_range6b);
1001 hr_utility.trace('g_sp_calc_dct6 : '||g_sp_calc_dct6);
1002 hr_utility.trace('g_sp_calc_dct_range7a : '||g_sp_calc_dct_range7a);
1003 hr_utility.trace('g_sp_calc_dct_range7b : '||g_sp_calc_dct_range7b);
1004 hr_utility.trace('g_sp_calc_dct7 : '||g_sp_calc_dct7);
1005 hr_utility.trace('g_sp_calc_dct_range8a : '||g_sp_calc_dct_range8a);
1006 hr_utility.trace('g_sp_calc_dct_range8b : '||g_sp_calc_dct_range8b);
1007 hr_utility.trace('g_sp_calc_dct8 : '||g_sp_calc_dct8);
1008 hr_utility.trace('g_sp_calc_dct_range9a : '||g_sp_calc_dct_range9a);
1009 hr_utility.trace('g_sp_calc_dct_range9b : '||g_sp_calc_dct_range9b);
1010 hr_utility.trace('g_sp_calc_dct9 : '||g_sp_calc_dct9);
1011 end if;
1012 --
1013 if g_debug then
1014 hr_utility.trace('g_msg_life_range1 : '||g_msg_life_range1);
1015 hr_utility.trace('g_msg_life_range2 : '||g_msg_life_range2);
1016 hr_utility.trace('g_msg_life_range3 : '||g_msg_life_range3);
1017 hr_utility.trace('g_msg_life_range4 : '||g_msg_life_range4);
1018 hr_utility.trace('g_msg_life_calc2 : '||g_msg_life_calc2);
1019 hr_utility.trace('g_msg_life_calc3 : '||g_msg_life_calc3);
1020 hr_utility.trace('g_msg_life_calc4 : '||g_msg_life_calc4);
1021 hr_utility.trace('g_msg_life_gen_max : '||g_msg_life_gen_max);
1022 hr_utility.trace('g_msg_life_pens_max : '||g_msg_life_pens_max);
1023 hr_utility.trace('g_msg_life_ins_max : '||g_msg_life_ins_max);
1024 hr_utility.trace('g_msg_nonlife_2007 : '||g_msg_nonlife_2007);
1025 hr_utility.trace('g_msg_nonlife_ap_2007 : '||g_msg_nonlife_ap_2007);
1026 hr_utility.trace('g_msg_eqnonlife_s_2007 : '||g_msg_eqnonlife_s_2007);
1027 hr_utility.trace('g_msg_lnonlife_s_2007 : '||g_msg_lnonlife_s_2007);
1028 hr_utility.trace('g_msg_lnonlife : '||g_msg_lnonlife);
1029 hr_utility.trace('g_msg_eqnonlife_2007 : '||g_msg_eqnonlife_2007);
1030 hr_utility.trace('g_msg_lnonlife_2007 : '||g_msg_lnonlife_2007);
1031 hr_utility.trace('g_msg_lnonlife_dct : '||g_msg_lnonlife_dct);
1032 hr_utility.trace('g_msg_snonlife_dct : '||g_msg_snonlife_dct);
1033 hr_utility.trace('g_msg_lnonlife_dct_2007 : '||g_msg_lnonlife_dct_2007);
1034 hr_utility.trace('g_msg_earthquake_max : '||g_msg_earthquake_max);
1035 hr_utility.trace('g_msg_nonlife_long_max : '||g_msg_nonlife_long_max);
1036 hr_utility.trace('g_msg_nonlife_short_max : '||g_msg_nonlife_short_max);
1037 hr_utility.trace('g_msg_nonlife_ins_max : '||g_msg_nonlife_ins_max);
1038 hr_utility.trace('g_msg_nonlife_ins_max_2007 : '||g_msg_nonlife_ins_max_2007);
1039 hr_utility.trace('g_msg_sp_emp_inc_max : '||g_msg_sp_emp_inc_max);
1040 hr_utility.trace('g_msg_sp_sp_inc_max : '||g_msg_sp_sp_inc_max);
1041 hr_utility.trace('g_msg_sp_calc_cal1 : '||g_msg_sp_calc_cal1);
1042 hr_utility.trace('g_msg_sp_calc_cal6 : '||g_msg_sp_calc_cal6);
1043 hr_utility.trace('g_msg_sp_calc_dct_range1 : '||g_msg_sp_calc_dct_range1);
1044 hr_utility.trace('g_msg_sp_calc_dct_range2 : '||g_msg_sp_calc_dct_range2);
1045 hr_utility.trace('g_msg_sp_calc_dct_range3 : '||g_msg_sp_calc_dct_range3);
1046 hr_utility.trace('g_msg_sp_calc_dct_range4 : '||g_msg_sp_calc_dct_range4);
1047 hr_utility.trace('g_msg_sp_calc_dct_range5 : '||g_msg_sp_calc_dct_range5);
1048 hr_utility.trace('g_msg_sp_calc_dct_range6 : '||g_msg_sp_calc_dct_range6);
1049 hr_utility.trace('g_msg_sp_calc_dct_range7 : '||g_msg_sp_calc_dct_range7);
1050 hr_utility.trace('g_msg_sp_calc_dct_range8 : '||g_msg_sp_calc_dct_range8);
1051 hr_utility.trace('g_msg_sp_calc_dct_range9 : '||g_msg_sp_calc_dct_range9);
1052 hr_utility.trace('g_msg_sp_calc_dct1 : '||g_msg_sp_calc_dct1);
1053 hr_utility.trace('g_msg_sp_calc_dct2 : '||g_msg_sp_calc_dct2);
1054 hr_utility.trace('g_msg_sp_calc_dct3 : '||g_msg_sp_calc_dct3);
1055 hr_utility.trace('g_msg_sp_calc_dct4 : '||g_msg_sp_calc_dct4);
1056 hr_utility.trace('g_msg_sp_calc_dct5 : '||g_msg_sp_calc_dct5);
1057 hr_utility.trace('g_msg_sp_calc_dct6 : '||g_msg_sp_calc_dct6);
1058 hr_utility.trace('g_msg_sp_calc_dct7 : '||g_msg_sp_calc_dct7);
1059 hr_utility.trace('g_msg_sp_calc_dct8 : '||g_msg_sp_calc_dct8);
1060 hr_utility.trace('g_msg_sp_calc_dct9 : '||g_msg_sp_calc_dct9);
1061 end if;
1062 --
1063 if g_debug then
1064 hr_utility.set_location(l_proc,1000);
1065 end if;
1066 --
1067 end set_form_pg_prompt;
1068 --
1069 -- -------------------------------------------------------------------------
1070 -- set_form_pg_prompt2012
1071 -- -------------------------------------------------------------------------
1072 procedure set_form_pg_prompt2012(
1073 p_action_information_id in number)
1074 is
1075 --
1076 l_proc varchar2(80) := c_package||'get_formpg_prompt2012';
1077 l_rate pay_user_column_instances_f.value%type;
1078 l_add_adj pay_user_column_instances_f.value%type;
1079 l_legislation_code varchar2(2);
1080 --
1081 cursor csr_udt_row(
1082 p_udt_name in varchar2,
1083 p_effective_date in date)
1084 is
1085 select /* +ORDERED */
1086 put.user_table_id,
1087 pur.user_row_id,
1088 pur.display_sequence,
1089 pur.row_low_range_or_name,
1090 pur.row_high_range
1091 from pay_user_tables put,
1092 pay_user_rows_f pur
1093 where put.user_table_name = p_udt_name
1094 and nvl(put.legislation_code,'X') = nvl(l_legislation_code,nvl(put.legislation_code,'X'))
1095 and pur.user_table_id = put.user_table_id
1096 and p_effective_date
1097 between pur.effective_start_date and pur.effective_end_date
1098 order by 3, fnd_number.canonical_to_number(pur.row_low_range_or_name);
1099 --
1100 cursor csr_udt_val(
1101 p_user_table_id in number,
1102 p_row_id in number,
1103 p_effective_date in date)
1104 is
1105 select /* +ORDERED */
1106 puc.user_column_name,
1107 puci.value
1108 from pay_user_columns puc,
1109 pay_user_column_instances_f puci
1110 where puc.user_table_id = p_user_table_id
1111 and puci.user_column_id = puc.user_column_id
1112 and puci.user_row_id = p_row_id
1113 and p_effective_date
1114 between puci.effective_start_date and puci.effective_end_date
1115 order by 1;
1116 --
1117 l_csr_udt_row csr_udt_row%rowtype;
1118 l_csr_udt_val csr_udt_val%rowtype;
1119 --
1120 begin
1121 --
1122 if g_debug then
1123 hr_utility.set_location(l_proc,0);
1124 end if;
1125 --
1126 l_legislation_code := 'JP';
1127
1128 fnd_message.set_name('PAY','PAY_JP_ISDF_NEW_OLD_CLASS_2012');
1129 g_new_old_class_2012 := fnd_message.get;
1130
1131 fnd_message.set_name('PAY','PAY_JP_ISDF_NEW_INS_PREM_2012');
1132 g_new_ins_prem_2012 := fnd_message.get;
1133
1134 fnd_message.set_name('PAY','PAY_JP_ISDF_OLD_INS_PREM_2012');
1135 g_old_ins_prem_2012 := fnd_message.get;
1136
1137 fnd_message.set_name('PAY','PAY_JP_ISDF_NEW_DEDN_INS_2012');
1138 g_new_dedn_ins_2012 := fnd_message.get;
1139
1140 fnd_message.set_name('PAY','PAY_JP_ISDF_OLD_DEDN_INS_2012');
1141 g_old_dedn_ins_2012 := fnd_message.get;
1142
1143 fnd_message.set_name('PAY','PAY_JP_ISDF_TOT_INS_2012');
1144 g_tot_ins_2012 := fnd_message.get;
1145
1146 fnd_message.set_name('PAY','PAY_JP_ISDF_FIN_INS_2012');
1147 g_fin_ins_2012 := fnd_message.get;
1148
1149 fnd_message.set_name('PAY','PAY_JP_ISDF_CMI_PREM_2012');
1150 g_cmi_prem_2012 := fnd_message.get;
1151
1152 fnd_message.set_name('PAY','PAY_JP_ISDF_CMI_DEDN_2012');
1153 g_cmi_dedn_2012 := fnd_message.get;
1154
1155 fnd_message.set_name('PAY','PAY_JP_ISDF_CMI_TOT_2012');
1156 g_cmi_tot_2012 := fnd_message.get;
1157
1158 fnd_message.set_name('PAY','PAY_JP_ISDF_NEW_DEDN_PENS_2012');
1159 g_new_dedn_pens_2012 := fnd_message.get;
1160
1161 fnd_message.set_name('PAY','PAY_JP_ISDF_OLD_DEDN_PENS_2012');
1162 g_old_dedn_pens_2012 := fnd_message.get;
1163
1164 fnd_message.set_name('PAY','PAY_JP_ISDF_TOT_PENS_2012');
1165 g_tot_pens_2012 := fnd_message.get;
1166
1167 fnd_message.set_name('PAY','PAY_JP_ISDF_FIN_PENS_2012');
1168 g_fin_pens_2012 := fnd_message.get;
1169
1170 fnd_message.set_name('PAY','PAY_JP_ISDF_PENS_TOT_2012');
1171 g_pens_tot_2012 := fnd_message.get;
1172
1173 fnd_message.set_name('PAY','PAY_JP_ISDF_LIFE_TAB_NEW_2012');
1174 g_life_tab_new_2012 := fnd_message.get;
1175
1176 fnd_message.set_name('PAY','PAY_JP_ISDF_COL1_NEW_2012');
1177 g_col1_new_2012 := fnd_message.get;
1178
1179 fnd_message.set_name('PAY','PAY_JP_ISDF_FORM_DEDN_AMT_2012');
1180 g_form_dedn_amt_2012 := fnd_message.get;
1181
1182 fnd_message.set_name('PAY','PAY_JP_ISDF_ROW1_COL2_2012');
1183 g_row1_col2_2012 := fnd_message.get;
1184
1185 fnd_message.set_name('PAY','PAY_JP_ISDF_LIFE_TAB_OLD_2012');
1186 g_life_tab_old_2012 := fnd_message.get;
1187
1188 fnd_message.set_name('PAY','PAY_JP_ISDF_COL3_NEW_2012');
1189 g_col3_new_2012 := fnd_message.get;
1190
1191 fnd_message.set_name('PAY','PAY_JP_ISDF_ROW1_COL4_2012');
1192 g_row1_col4_2012 := fnd_message.get;
1193
1194 fnd_message.set_name('PAY','PAY_JP_ISDF_TOT_LID_2012');
1195 g_tot_lid_2012 := fnd_message.get;
1196
1197 fnd_message.set_name('PAY','PAY_JP_ISDF_CORP_TYPE_2012');
1198 g_corp_type_2012 := fnd_message.get;
1199
1200 -- messages for new table
1201 --
1202 open csr_udt_row(c_life_gen_new_calc_udt,c_st_upd_date_2012);
1203 loop
1204 --
1205 fetch csr_udt_row into l_csr_udt_row;
1206 exit when csr_udt_row%notfound;
1207 --
1208 if csr_udt_row%rowcount = 1 then
1209 --
1210 g_new_life_range1b := l_csr_udt_row.row_high_range;
1211 g_new_life_range1b := to_char(to_number(g_new_life_range1b),fnd_currency.get_format_mask('JPY',40));
1212 --
1213 elsif csr_udt_row%rowcount = 2 then
1214 --
1215 g_new_life_range2a := l_csr_udt_row.row_low_range_or_name;
1216 g_new_life_range2b := l_csr_udt_row.row_high_range;
1217 g_new_life_range2a := to_char(to_number(g_new_life_range2a),fnd_currency.get_format_mask('JPY',40));
1218 g_new_life_range2b := to_char(to_number(g_new_life_range2b),fnd_currency.get_format_mask('JPY',40));
1219 --
1220 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,c_st_upd_date_2012);
1221 loop
1222 --
1223 fetch csr_udt_val into l_csr_udt_val;
1224 exit when csr_udt_val%notfound;
1225 --
1226 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
1227 l_add_adj := l_csr_udt_val.value;
1228 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
1229 l_rate := l_csr_udt_val.value;
1230 end if;
1231 --
1232 end loop;
1233 close csr_udt_val;
1234 --
1235 if fnd_number.canonical_to_number(l_rate) = 0.5 then
1236 l_rate := '1/2';
1237 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
1238 l_rate := '1/4';
1239 end if;
1240 --
1241 g_new_life_calc2a := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
1242 --
1243 elsif csr_udt_row%rowcount = 3 then
1244 --
1245 g_new_life_range3a := l_csr_udt_row.row_low_range_or_name;
1246 g_new_life_range3b := l_csr_udt_row.row_high_range;
1247 g_new_life_range3a := to_char(to_number(g_new_life_range3a),fnd_currency.get_format_mask('JPY',40));
1248 g_new_life_range3b := to_char(to_number(g_new_life_range3b),fnd_currency.get_format_mask('JPY',40));
1249 --
1250 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,c_st_upd_date_2012);
1251 loop
1252 --
1253 fetch csr_udt_val into l_csr_udt_val;
1254 exit when csr_udt_val%notfound;
1255 --
1256 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
1257 l_add_adj := l_csr_udt_val.value;
1258 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
1259 l_rate := l_csr_udt_val.value;
1260 end if;
1261 --
1262 end loop;
1263 close csr_udt_val;
1264 --
1265 if fnd_number.canonical_to_number(l_rate) = 0.5 then
1266 l_rate := '1/2';
1267 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
1268 l_rate := '1/4';
1269 end if;
1270 --
1271 g_new_life_calc3a := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
1272 --
1273 elsif csr_udt_row%rowcount = 4 then
1274 --
1275 g_new_life_range4a := l_csr_udt_row.row_low_range_or_name;
1276 g_new_life_range4a := to_char(to_number(g_new_life_range4a),fnd_currency.get_format_mask('JPY',40));
1277 --
1278 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,c_st_upd_date_2012);
1279 loop
1280 --
1281 fetch csr_udt_val into l_csr_udt_val;
1282 exit when csr_udt_val%notfound;
1283 --
1284 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
1285 l_add_adj := l_csr_udt_val.value;
1286 end if;
1287 --
1288 end loop;
1289 close csr_udt_val;
1290 --
1291 g_new_life_calc4a := to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
1292 --
1293 end if;
1294 --
1295 end loop;
1296 close csr_udt_row;
1297
1298 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_FIRST');
1299 fnd_message.set_token('RANGE_B',g_new_life_range1b);
1300 g_new_life_range1 := fnd_message.get;
1301 --
1302 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_MID');
1303 fnd_message.set_token('RANGE_A',g_new_life_range2a);
1304 fnd_message.set_token('RANGE_B',g_new_life_range2b);
1305 g_new_life_range2 := fnd_message.get;
1306 --
1307 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_MID');
1308 fnd_message.set_token('RANGE_A',g_new_life_range3a);
1309 fnd_message.set_token('RANGE_B',g_new_life_range3b);
1310 g_new_life_range3 := fnd_message.get;
1311 --
1312 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_LAST');
1313 fnd_message.set_token('RANGE_A',g_new_life_range4a);
1314 g_new_life_range4 := fnd_message.get;
1315 --
1316 fnd_message.set_name('PAY','PAY_JP_ISDF_ROW1_COL2_2012');
1317 g_new_life_calc1 := fnd_message.get;
1318 --
1319 fnd_message.set_name('PAY','PAY_JP_ISDF_NEW_INDX_2012');
1320 fnd_message.set_token('CALC',g_new_life_calc2a);
1321 g_new_life_calc2 := fnd_message.get;
1322 --
1323 fnd_message.set_name('PAY','PAY_JP_ISDF_NEW_INDX_2012');
1324 fnd_message.set_token('CALC',g_new_life_calc3a);
1325 g_new_life_calc3 := fnd_message.get;
1326 --
1327 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_DCT_LAST');
1328 fnd_message.set_token('CALC',g_new_life_calc4a);
1329 g_new_life_calc4 := fnd_message.get;
1330 --
1331 -- messages for old table
1332 --
1333 open csr_udt_row(c_life_gen_calc_udt,c_st_upd_date_2012);
1334 loop
1335 --
1336 fetch csr_udt_row into l_csr_udt_row;
1337 exit when csr_udt_row%notfound;
1338 --
1339 if csr_udt_row%rowcount = 1 then
1340 --
1341 g_old_life_range1b := l_csr_udt_row.row_high_range;
1342 g_old_life_range1b := to_char(to_number(g_old_life_range1b),fnd_currency.get_format_mask('JPY',40));
1343 --
1344 elsif csr_udt_row%rowcount = 2 then
1345 --
1346 g_old_life_range2a := l_csr_udt_row.row_low_range_or_name;
1347 g_old_life_range2b := l_csr_udt_row.row_high_range;
1348 g_old_life_range2a := to_char(to_number(g_old_life_range2a),fnd_currency.get_format_mask('JPY',40));
1349 g_old_life_range2b := to_char(to_number(g_old_life_range2b),fnd_currency.get_format_mask('JPY',40));
1350
1351 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,c_st_upd_date_2012);
1352 loop
1353 --
1354 fetch csr_udt_val into l_csr_udt_val;
1355 exit when csr_udt_val%notfound;
1356 --
1357 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
1358 l_add_adj := l_csr_udt_val.value;
1359 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
1360 l_rate := l_csr_udt_val.value;
1361 end if;
1362 --
1363 end loop;
1364 close csr_udt_val;
1365 --
1366 if fnd_number.canonical_to_number(l_rate) = 0.5 then
1367 l_rate := '1/2';
1368 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
1369 l_rate := '1/4';
1370 end if;
1371 --
1372 g_old_life_calc2a := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
1373 --
1374 elsif csr_udt_row%rowcount = 3 then
1375 --
1376 g_old_life_range3a := l_csr_udt_row.row_low_range_or_name;
1377 g_old_life_range3b := l_csr_udt_row.row_high_range;
1378 g_old_life_range3a := to_char(to_number(g_old_life_range3a),fnd_currency.get_format_mask('JPY',40));
1379 g_old_life_range3b := to_char(to_number(g_old_life_range3b),fnd_currency.get_format_mask('JPY',40));
1380
1381 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,c_st_upd_date_2012);
1382 loop
1383 --
1384 fetch csr_udt_val into l_csr_udt_val;
1385 exit when csr_udt_val%notfound;
1386 --
1387 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
1388 l_add_adj := l_csr_udt_val.value;
1389 elsif l_csr_udt_val.user_column_name = c_rate_udtcol then
1390 l_rate := l_csr_udt_val.value;
1391 end if;
1392 --
1393 end loop;
1394 close csr_udt_val;
1395 --
1396 if fnd_number.canonical_to_number(l_rate) = 0.5 then
1397 l_rate := '1/2';
1398 elsif fnd_number.canonical_to_number(l_rate) = 0.25 then
1399 l_rate := '1/4';
1400 end if;
1401 --
1402 g_old_life_calc3a := 'x '||l_rate||' + '||to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
1403 --
1404 elsif csr_udt_row%rowcount = 4 then
1405 --
1406 g_old_life_range4a := l_csr_udt_row.row_low_range_or_name;
1407 g_old_life_range4a := to_char(to_number(g_old_life_range4a),fnd_currency.get_format_mask('JPY',40));
1408
1409 open csr_udt_val(l_csr_udt_row.user_table_id,l_csr_udt_row.user_row_id,c_st_upd_date_2012);
1410 loop
1411 --
1412 fetch csr_udt_val into l_csr_udt_val;
1413 exit when csr_udt_val%notfound;
1414 --
1415 if l_csr_udt_val.user_column_name = c_add_adj_udtcol then
1416 l_add_adj := l_csr_udt_val.value;
1417 end if;
1418 --
1419 end loop;
1420 close csr_udt_val;
1421 --
1422 g_old_life_calc4a := to_char(to_number(l_add_adj),fnd_currency.get_format_mask('JPY',40));
1423 --
1424 end if;
1425 --
1426 end loop;
1427 close csr_udt_row;
1428
1429 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_FIRST');
1430 fnd_message.set_token('RANGE_B',g_old_life_range1b);
1431 g_old_life_range1 := fnd_message.get;
1432 --
1433 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_MID');
1434 fnd_message.set_token('RANGE_A',g_old_life_range2a);
1435 fnd_message.set_token('RANGE_B',g_old_life_range2b);
1436 g_old_life_range2 := fnd_message.get;
1437 --
1438 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_MID');
1439 fnd_message.set_token('RANGE_A',g_old_life_range3a);
1440 fnd_message.set_token('RANGE_B',g_old_life_range3b);
1441 g_old_life_range3 := fnd_message.get;
1442 --
1443 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_RANGE_LAST');
1444 fnd_message.set_token('RANGE_A',g_old_life_range4a);
1445 g_old_life_range4 := fnd_message.get;
1446 --
1447 fnd_message.set_name('PAY','PAY_JP_ISDF_ROW1_COL4_2012');
1448 g_old_life_calc1 := fnd_message.get;
1449 --
1450 fnd_message.set_name('PAY','PAY_JP_ISDF_OLD_INDX_2012');
1451 fnd_message.set_token('CALC',g_old_life_calc2a);
1452 g_old_life_calc2 := fnd_message.get;
1453 --
1454 fnd_message.set_name('PAY','PAY_JP_ISDF_OLD_INDX_2012');
1455 fnd_message.set_token('CALC',g_old_life_calc3a);
1456 g_old_life_calc3 := fnd_message.get;
1457 --
1458 fnd_message.set_name('PAY','PAY_JP_ISDF_P_LIFE_DCT_LAST');
1459 fnd_message.set_token('CALC',g_old_life_calc4a);
1460 g_old_life_calc4 := fnd_message.get;
1461 --
1462
1463 end set_form_pg_prompt2012;
1464 --
1465 -- -------------------------------------------------------------------------
1466 -- do_new
1467 -- -------------------------------------------------------------------------
1468 procedure do_new(
1469 p_action_information_id in number,
1470 p_object_version_number in out nocopy number)
1471 is
1472 --
1473 l_proc varchar2(80) := c_package||'do_new';
1474 l_submission_date date;
1475 l_assact_rec pay_jp_isdf_assact_v%rowtype;
1476 l_payroll_action_id number;
1477 --
1478 cursor csr_pact
1479 is
1480 select paa.payroll_action_id
1481 from pay_assignment_actions paa
1482 where paa.assignment_action_id = l_assact_rec.assignment_action_id;
1483 --
1484 begin
1485 --
1486 if g_debug then
1487 hr_utility.set_location(l_proc,0);
1488 end if;
1489 --
1490 l_submission_date := check_submission_period(p_action_information_id);
1491 --
1492 if g_debug then
1493 hr_utility.set_location(l_proc,10);
1494 hr_utility.trace('submission_date : '||fnd_date.date_to_canonical(l_submission_date));
1495 end if;
1496 --
1497 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
1498 --
1499 if l_assact_rec.transaction_status not in ('U', 'N') then
1500 fnd_message.set_name('PAY','PAY_JP_DEF_INVALID_TXN_STATUS');
1501 fnd_message.raise_error;
1502 end if;
1503 --
1504 if g_debug then
1505 hr_utility.set_location(l_proc,20);
1506 hr_utility.trace('action_information_id : '||p_action_information_id);
1507 hr_utility.trace('object_version_number : '||p_object_version_number);
1508 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
1509 hr_utility.trace('start delete preset archive');
1510 end if;
1511 --
1512 -- recreate archive data (available for existing data of transaction_status N or U)
1513 --
1514 delete
1515 from pay_action_information
1516 where action_context_id = l_assact_rec.assignment_action_id
1517 and action_context_type = 'AAP'
1518 and action_information_category <> 'JP_ISDF_ASSACT';
1519 --
1520 if g_debug then
1521 hr_utility.trace('end delete preset archive');
1522 hr_utility.set_location(l_proc,30);
1523 hr_utility.trace('start archive_assact');
1524 end if;
1525 --
1526 -- set global argument of pact in pay_jp_isdf_archive_pkg
1527 open csr_pact;
1528 fetch csr_pact into l_payroll_action_id;
1529 close csr_pact;
1530 --
1531 if g_debug then
1532 hr_utility.set_location(l_proc,40);
1533 end if;
1534 --
1535 pay_jp_isdf_archive_pkg.init_pact(
1536 p_payroll_action_id => l_payroll_action_id);
1537 --
1538 -- reset to force archive because of concurrent parameter might be N
1539 pay_jp_isdf_archive_pkg.g_archive_default_flag := 'Y';
1540 --
1541 if g_debug then
1542 hr_utility.set_location(l_proc,50);
1543 end if;
1544 --
1545 -- set global argument of assact in pay_jp_isdf_archive_pkg
1546 pay_jp_isdf_archive_pkg.init_assact(
1547 p_assignment_action_id => l_assact_rec.assignment_action_id,
1548 p_assignment_id => l_assact_rec.assignment_id);
1549 --
1550 if g_debug then
1551 hr_utility.set_location(l_proc,60);
1552 end if;
1553 --
1554 pay_jp_isdf_archive_pkg.archive_assact(
1555 p_assignment_action_id => l_assact_rec.assignment_action_id,
1556 p_assignment_id => l_assact_rec.assignment_id);
1557 --
1558 if g_debug then
1559 hr_utility.trace('end archive_assact');
1560 hr_utility.set_location(l_proc,70);
1561 hr_utility.trace('start update_assact');
1562 end if;
1563 --
1564 p_object_version_number := l_assact_rec.object_version_number + 1;
1565 --
1566 --api is disable because assact has been locked.
1567 --pay_jp_isdf_dml_pkg.update_assact(
1568 -- p_action_information_id => l_assact_rec.assignment_action_id,
1569 -- p_object_version_number => p_object_version_number,
1570 -- p_transaction_status => 'N',
1571 -- p_finalized_date => l_assact_rec.finalized_date,
1572 -- p_finalized_by => l_assact_rec.finalized_by,
1573 -- p_user_comments => l_assact_rec.user_comments,
1574 -- p_admin_comments => l_assact_rec.admin_comments,
1575 -- p_transfer_status => l_assact_rec.transfer_status,
1576 -- p_transfer_date => l_assact_rec.transfer_date,
1577 -- p_expiry_date => l_assact_rec.expiry_date);
1578 update pay_jp_isdf_assact_dml_v
1579 set object_version_number = p_object_version_number,
1580 transaction_status = 'N'
1581 where row_id = l_assact_rec.row_id;
1582 --
1583 if g_debug then
1584 hr_utility.trace('end update_assact');
1585 hr_utility.set_location(l_proc,1000);
1586 end if;
1587 --
1588 end do_new;
1589 --
1590 -- -------------------------------------------------------------------------
1591 -- do_apply
1592 -- -------------------------------------------------------------------------
1593 procedure do_apply(
1594 p_action_information_id in number,
1595 p_object_version_number in out nocopy number)
1596 is
1597 l_proc varchar2(80) := c_package||'do_apply';
1598 l_submission_date date;
1599 l_assact_rec pay_jp_isdf_assact_v%rowtype;
1600 begin
1601 --
1602 if g_debug then
1603 hr_utility.set_location(l_proc,0);
1604 end if;
1605 --
1606 l_submission_date := check_submission_period(p_action_information_id);
1607 --
1608 if g_debug then
1609 hr_utility.set_location(l_proc,10);
1610 hr_utility.trace('submission_date : '||fnd_date.date_to_canonical(l_submission_date));
1611 end if;
1612 --
1613 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
1614 --
1615 if l_assact_rec.transaction_status <> 'N' then
1616 fnd_message.set_name('PAY','PAY_JP_DEF_INVALID_TXN_STATUS');
1617 fnd_message.raise_error;
1618 end if;
1619 --
1620 if g_debug then
1621 hr_utility.set_location(l_proc,20);
1622 hr_utility.set_location(l_proc,20);
1623 hr_utility.trace('action_information_id : '||p_action_information_id);
1624 hr_utility.trace('object_version_number : '||p_object_version_number);
1625 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
1626 hr_utility.trace('start update_assact');
1627 end if;
1628 --
1629 p_object_version_number := l_assact_rec.object_version_number + 1;
1630 --
1631 --api is disable because assact has been locked.
1632 --pay_jp_isdf_dml_pkg.update_assact(
1633 -- p_action_information_id => l_assact_rec.assignment_action_id,
1634 -- p_object_version_number => p_object_version_number,
1635 -- p_transaction_status => l_assact_rec.transaction_status,
1636 -- p_finalized_date => l_assact_rec.finalized_date,
1637 -- p_finalized_by => l_assact_rec.finalized_by,
1638 -- p_user_comments => l_assact_rec.user_comments,
1639 -- p_admin_comments => l_assact_rec.admin_comments,
1640 -- p_transfer_status => l_assact_rec.transfer_status,
1641 -- p_transfer_date => l_assact_rec.transfer_date,
1642 -- p_expiry_date => l_assact_rec.expiry_date);
1643 update pay_jp_isdf_assact_dml_v
1644 set object_version_number = p_object_version_number
1645 where row_id = l_assact_rec.row_id;
1646 --
1647 if g_debug then
1648 hr_utility.trace('end update_assact');
1649 hr_utility.set_location(l_proc,1000);
1650 end if;
1651 --
1652 end do_apply;
1653 --
1654 -- -------------------------------------------------------------------------
1655 -- calc_total
1656 -- -------------------------------------------------------------------------
1657 procedure calc_total(
1658 p_assignment_action_id in number,
1659 p_calc_total_rec out nocopy t_calc_total_rec)
1660 is
1661 --
1662 l_proc varchar2(80) := c_package||'calc_total';
1663 l_action_info_tbl t_action_info_tbl;
1664 --
1665 l_archive_cnt number := 0;
1666 --
1667 cursor csr_archive_data
1668 is
1669 select action_information_id,
1670 action_context_id,
1671 action_context_type,
1672 object_version_number,
1673 action_information_category,
1674 action_information1,
1675 action_information2,
1676 action_information3,
1677 action_information4,
1678 action_information5,
1679 action_information6,
1680 action_information7,
1681 action_information8,
1682 action_information9,
1683 action_information10,
1684 action_information11,
1685 action_information12,
1686 action_information13,
1687 action_information14,
1688 action_information15,
1689 action_information16,
1690 action_information17,
1691 action_information18,
1692 action_information19,
1693 action_information20,
1694 action_information21,
1695 action_information22,
1696 action_information23,
1697 action_information24,
1698 action_information25,
1699 action_information26,
1700 action_information27,
1701 action_information28,
1702 action_information29,
1703 action_information30,
1704 effective_date,
1705 assignment_id
1706 from pay_action_information pai
1707 where pai.action_context_id = p_assignment_action_id
1708 and pai.action_context_type = 'AAP'
1709 and pai.action_information_category in ('JP_ISDF_LIFE_GEN',
1710 'JP_ISDF_LIFE_PENS',
1711 'JP_ISDF_NONLIFE',
1712 'JP_ISDF_SOCIAL',
1713 'JP_ISDF_MUTUAL_AID',
1714 'JP_ISDF_SPOUSE',
1715 'JP_ISDF_SPOUSE_INC',
1716 'JP_ISDF_CARE_MED')
1717 and pai.action_information1 <> 'D';
1718 --
1719 begin
1720 --
1721 if g_debug then
1722 hr_utility.set_location(l_proc,0);
1723 hr_utility.trace('csr_archive_data bulk collect start');
1724 end if;
1725 --
1726 -- #2243411 bulk collect bug fix is available from 9.2
1727 open csr_archive_data;
1728 --fetch csr_archive_data bulk collect into l_action_info_tbl;
1729 loop
1730 --
1731 l_archive_cnt := l_archive_cnt + 1;
1732 --
1733 fetch csr_archive_data into l_action_info_tbl(l_archive_cnt);
1734 exit when csr_archive_data%notfound;
1735 --
1736 end loop;
1737 close csr_archive_data;
1738 --
1739 if g_debug then
1740 hr_utility.set_location(l_proc,10);
1741 hr_utility.trace('csr_archive_data bulk collect end');
1742 hr_utility.trace('csr_archive_data count : '||l_action_info_tbl.count);
1743 end if;
1744 --
1745 p_calc_total_rec.life_gen := 0;
1746 p_calc_total_rec.life_pens := 0;
1747 p_calc_total_rec.life_gen_new := 0;
1748 p_calc_total_rec.life_pens_new := 0;
1749 p_calc_total_rec.care_med_new := 0;
1750 p_calc_total_rec.earthquake := 0;
1751 p_calc_total_rec.nonlife_long := 0;
1752 p_calc_total_rec.nonlife_short := 0;
1753 p_calc_total_rec.national_pens := 0;
1754 p_calc_total_rec.social := 0;
1755 p_calc_total_rec.mutual_aid_ec := 0;
1756 p_calc_total_rec.mutual_aid_p := 0;
1757 p_calc_total_rec.mutual_aid_dsc := 0;
1758 p_calc_total_rec.sp_emp_inc := 0;
1759 p_calc_total_rec.sp_spouse_inc := 0;
1760 p_calc_total_rec.sp_sp_type := null;
1761 p_calc_total_rec.sp_wid_type := null;
1762 p_calc_total_rec.sp_dct_exc := null;
1763 p_calc_total_rec.sp_inc_cnt := 0;
1764 p_calc_total_rec.sp_earned_inc := 0;
1765 p_calc_total_rec.sp_earned_inc_exp := 0;
1766 p_calc_total_rec.sp_business_inc := 0;
1767 p_calc_total_rec.sp_business_inc_exp := 0;
1768 p_calc_total_rec.sp_miscellaneous_inc := 0;
1769 p_calc_total_rec.sp_miscellaneous_inc_exp := 0;
1770 p_calc_total_rec.sp_dividend_inc := 0;
1771 p_calc_total_rec.sp_dividend_inc_exp := 0;
1772 p_calc_total_rec.sp_real_estate_inc := 0;
1773 p_calc_total_rec.sp_real_estate_inc_exp := 0;
1774 p_calc_total_rec.sp_retirement_inc := 0;
1775 p_calc_total_rec.sp_retirement_inc_exp := 0;
1776 p_calc_total_rec.sp_other_inc := 0;
1777 p_calc_total_rec.sp_other_inc_exp := 0;
1778 p_calc_total_rec.sp_other_inc_exp_dct := 0;
1779 p_calc_total_rec.sp_other_inc_exp_tmp := 0;
1780 p_calc_total_rec.sp_other_inc_exp_tmp_exp := 0;
1781 --
1782 if g_debug then
1783 hr_utility.set_location(l_proc,20);
1784 end if;
1785 --
1786 for i in 1..l_action_info_tbl.count loop
1787 --
1788 if l_action_info_tbl(i).action_information_category = 'JP_ISDF_LIFE_GEN' then
1789 --
1790 if nvl(l_action_info_tbl(i).action_information13,'O') = 'O' then
1791 p_calc_total_rec.life_gen := nvl(p_calc_total_rec.life_gen,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information12),0);
1792 else
1793 p_calc_total_rec.life_gen_new := nvl(p_calc_total_rec.life_gen_new,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information12),0);
1794 end if;
1795 --
1796 elsif l_action_info_tbl(i).action_information_category = 'JP_ISDF_CARE_MED' then
1797 --
1798 if l_action_info_tbl(i).action_information13 = 'N' then
1799 p_calc_total_rec.care_med_new := nvl(p_calc_total_rec.care_med_new,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information12),0);
1800 end if;
1801 --
1802 elsif l_action_info_tbl(i).action_information_category = 'JP_ISDF_LIFE_PENS' then
1803 --
1804 if nvl(l_action_info_tbl(i).action_information14,'O') = 'O' then
1805 p_calc_total_rec.life_pens := nvl(p_calc_total_rec.life_pens,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information13),0);
1806 else
1807 p_calc_total_rec.life_pens_new := nvl(p_calc_total_rec.life_pens_new,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information13),0);
1808 end if;
1809 --
1810 elsif l_action_info_tbl(i).action_information_category = 'JP_ISDF_NONLIFE' then
1811 --
1812 -- non support calc for negative amount since deduction from multiple type is acceptable, it is not feasible in system.
1813 if nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information10),0) > 0 then
1814 --
1815 if l_action_info_tbl(i).action_information2 = 'EQ' then
1816 p_calc_total_rec.earthquake := nvl(p_calc_total_rec.earthquake,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information10),0);
1817 elsif l_action_info_tbl(i).action_information2 = 'L' then
1818 p_calc_total_rec.nonlife_long := nvl(p_calc_total_rec.nonlife_long,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information10),0);
1819 elsif l_action_info_tbl(i).action_information2 = 'S' then
1820 p_calc_total_rec.nonlife_short := nvl(p_calc_total_rec.nonlife_short,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information10),0);
1821 end if;
1822 --
1823 end if;
1824 --
1825 elsif l_action_info_tbl(i).action_information_category = 'JP_ISDF_SOCIAL' then
1826 --
1827 if l_action_info_tbl(i).action_information7 = 'Y' then
1828 p_calc_total_rec.national_pens := nvl(p_calc_total_rec.national_pens,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information6),0);
1829 end if;
1830 --
1831 p_calc_total_rec.social := nvl(p_calc_total_rec.social,0) + nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information6),0);
1832 --
1833 elsif l_action_info_tbl(i).action_information_category = 'JP_ISDF_MUTUAL_AID' then
1834 --
1835 p_calc_total_rec.mutual_aid_ec := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information2),0);
1836 p_calc_total_rec.mutual_aid_p := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information3),0);
1837 p_calc_total_rec.mutual_aid_dsc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information4),0);
1838 --
1839 elsif l_action_info_tbl(i).action_information_category = 'JP_ISDF_SPOUSE' then
1840 --
1841 p_calc_total_rec.sp_emp_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information6),0);
1842 p_calc_total_rec.sp_spouse_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information10),0);
1843 p_calc_total_rec.sp_sp_type := l_action_info_tbl(i).action_information7;
1844 p_calc_total_rec.sp_wid_type := l_action_info_tbl(i).action_information8;
1845 p_calc_total_rec.sp_dct_exc := l_action_info_tbl(i).action_information9;
1846 --
1847 elsif l_action_info_tbl(i).action_information_category = 'JP_ISDF_SPOUSE_INC' then
1848 --
1849 p_calc_total_rec.sp_inc_cnt := p_calc_total_rec.sp_inc_cnt + 1;
1850 p_calc_total_rec.sp_earned_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information2),0);
1851 p_calc_total_rec.sp_earned_inc_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information3),c_sp_earned_inc_exp);
1852 p_calc_total_rec.sp_business_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information4),0);
1853 p_calc_total_rec.sp_business_inc_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information5),0);
1854 p_calc_total_rec.sp_miscellaneous_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information6),0);
1855 p_calc_total_rec.sp_miscellaneous_inc_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information7),0);
1856 p_calc_total_rec.sp_dividend_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information8),0);
1857 p_calc_total_rec.sp_dividend_inc_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information9),0);
1858 p_calc_total_rec.sp_real_estate_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information10),0);
1859 p_calc_total_rec.sp_real_estate_inc_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information11),0);
1860 p_calc_total_rec.sp_retirement_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information12),0);
1861 p_calc_total_rec.sp_retirement_inc_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information13),0);
1862 p_calc_total_rec.sp_other_inc := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information14),0);
1863 p_calc_total_rec.sp_other_inc_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information15),0);
1864 p_calc_total_rec.sp_other_inc_exp_dct := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information16),0);
1865 p_calc_total_rec.sp_other_inc_exp_tmp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information17),0);
1866 p_calc_total_rec.sp_other_inc_exp_tmp_exp := nvl(fnd_number.canonical_to_number(l_action_info_tbl(i).action_information18),0);
1867 --
1868 end if;
1869 --
1870 end loop;
1871 --
1872 if g_debug then
1873 hr_utility.trace('life_gen : '||to_char(p_calc_total_rec.life_gen));
1874 hr_utility.trace('life_pens : '||to_char(p_calc_total_rec.life_pens));
1875 hr_utility.trace('life_gen_new : '||to_char(p_calc_total_rec.life_gen_new));
1876 hr_utility.trace('life_pens_new : '||to_char(p_calc_total_rec.life_pens_new));
1877 hr_utility.trace('care_med_new : '||to_char(p_calc_total_rec.care_med_new));
1878 hr_utility.trace('earthquake : '||to_char(p_calc_total_rec.earthquake));
1879 hr_utility.trace('nonlife_long : '||to_char(p_calc_total_rec.nonlife_long));
1880 hr_utility.trace('nonlife_short : '||to_char(p_calc_total_rec.nonlife_short));
1881 hr_utility.trace('national_pens : '||to_char(p_calc_total_rec.national_pens));
1882 hr_utility.trace('social : '||to_char(p_calc_total_rec.social));
1883 hr_utility.trace('mutual_aid_ec : '||to_char(p_calc_total_rec.mutual_aid_ec));
1884 hr_utility.trace('mutual_aid_p : '||to_char(p_calc_total_rec.mutual_aid_p));
1885 hr_utility.trace('mutual_aid_dsc : '||to_char(p_calc_total_rec.mutual_aid_dsc));
1886 hr_utility.trace('sp_emp_inc : '||to_char(p_calc_total_rec.sp_emp_inc));
1887 hr_utility.trace('sp_spouse_inc : '||to_char(p_calc_total_rec.sp_spouse_inc));
1888 hr_utility.trace('sp_type : '||p_calc_total_rec.sp_sp_type);
1889 hr_utility.trace('sp_wid_type : '||p_calc_total_rec.sp_wid_type);
1890 hr_utility.trace('sp_dct_exc : '||p_calc_total_rec.sp_dct_exc);
1891 hr_utility.trace('sp_inc_cnt : '||to_char(p_calc_total_rec.sp_inc_cnt));
1892 hr_utility.trace('sp_earned_inc : '||to_char(p_calc_total_rec.sp_earned_inc));
1893 hr_utility.trace('sp_earned_inc_exp : '||to_char(p_calc_total_rec.sp_earned_inc_exp));
1894 hr_utility.trace('sp_business_inc : '||to_char(p_calc_total_rec.sp_business_inc));
1895 hr_utility.trace('sp_business_inc_exp : '||to_char(p_calc_total_rec.sp_business_inc_exp));
1896 hr_utility.trace('sp_miscellaneous_inc : '||to_char(p_calc_total_rec.sp_miscellaneous_inc));
1897 hr_utility.trace('sp_miscellaneous_inc_exp : '||to_char(p_calc_total_rec.sp_miscellaneous_inc_exp));
1898 hr_utility.trace('sp_dividend_inc : '||to_char(p_calc_total_rec.sp_dividend_inc));
1899 hr_utility.trace('sp_dividend_inc_exp : '||to_char(p_calc_total_rec.sp_dividend_inc_exp));
1900 hr_utility.trace('sp_real_estate_inc : '||to_char(p_calc_total_rec.sp_real_estate_inc));
1901 hr_utility.trace('sp_real_estate_inc_exp : '||to_char(p_calc_total_rec.sp_real_estate_inc_exp));
1902 hr_utility.trace('sp_retirement_inc : '||to_char(p_calc_total_rec.sp_retirement_inc));
1903 hr_utility.trace('sp_retirement_inc_exp : '||to_char(p_calc_total_rec.sp_retirement_inc_exp));
1904 hr_utility.trace('sp_other_inc : '||to_char(p_calc_total_rec.sp_other_inc));
1905 hr_utility.trace('sp_other_inc_exp : '||to_char(p_calc_total_rec.sp_other_inc_exp));
1906 hr_utility.trace('sp_other_inc_exp_dct : '||to_char(p_calc_total_rec.sp_other_inc_exp_dct));
1907 hr_utility.trace('sp_other_inc_exp_tmp : '||to_char(p_calc_total_rec.sp_other_inc_exp_tmp));
1908 hr_utility.trace('sp_other_inc_exp_tmp_exp : '||to_char(p_calc_total_rec.sp_other_inc_exp_tmp_exp));
1909 hr_utility.set_location(l_proc,1000);
1910 end if;
1911 --
1912 end calc_total;
1913 --
1914 -- -------------------------------------------------------------------------
1915 -- calc_life_ins_dct
1916 -- -------------------------------------------------------------------------
1917 procedure calc_life_ins_dct(
1918 p_life_gen_i in number,
1919 p_life_pens_i in number,
1920 p_life_gen_new_i in number,
1921 p_life_pens_new_i in number,
1922 p_care_med_new_i in number,
1923 p_business_group_id in number,
1924 p_effective_date in date,
1925 p_life_ins_dct_o out nocopy number,
1926 p_life_gen_o out nocopy number,
1927 p_life_pens_o out nocopy number,
1928 p_life_gen_new_o out nocopy number,
1929 p_life_pens_new_o out nocopy number,
1930 p_care_med_new_o out nocopy number)
1931 is
1932 --
1933 l_proc varchar2(80) := c_package||'calc_total';
1934 i_life_gen number := nvl(p_life_gen_i,0);
1935 i_life_pens number := nvl(p_life_pens_i,0);
1936 i_life_gen_new number := nvl(p_life_gen_new_i,0);
1937 i_life_pens_new number := nvl(p_life_pens_new_i,0);
1938 i_care_med_new number := nvl(p_care_med_new_i,0);
1939 o_life_pens number := 0;
1940 o_life_gen number := 0;
1941 o_life_gen_new number := 0;
1942 o_life_pens_new number := 0;
1943 o_care_med_new number := 0;
1944 --
1945 begin
1946 --
1947 if g_debug then
1948 hr_utility.set_location(l_proc,0);
1949 hr_utility.trace('p_life_gen_i : '||to_char(p_life_gen_i));
1950 hr_utility.trace('p_life_pens_i : '||to_char(p_life_pens_i));
1951 hr_utility.trace('p_life_gen_new_i : '||to_char(p_life_gen_new_i));
1952 hr_utility.trace('p_life_pens_new_i : '||to_char(p_life_pens_new_i));
1953 hr_utility.trace('p_care_med_new_i : '||to_char(p_care_med_new_i));
1954 hr_utility.trace('p_business_group_id : '||to_char(p_business_group_id));
1955 hr_utility.trace('p_effective_date : '||to_char(p_effective_date,'YYYY/MM/DD'));
1956 hr_utility.trace('i_life_gen : '||to_char(i_life_gen));
1957 hr_utility.trace('i_life_pens : '||to_char(i_life_pens));
1958 hr_utility.trace('i_life_gen_new : '||to_char(i_life_gen_new));
1959 hr_utility.trace('i_life_pens_new : '||to_char(i_life_pens_new));
1960 hr_utility.trace('i_care_med_new : '||to_char(i_care_med_new));
1961 end if;
1962 --
1963 -- formula datetrack
1964 if (p_effective_date >= hr_api.g_sot
1965 and p_effective_date <= hr_api.g_eot) then
1966 --
1967 if g_debug then
1968 hr_utility.set_location(l_proc,10);
1969 end if;
1970 --
1971 if i_life_gen > 0 then
1972 --
1973 if g_debug then
1974 hr_utility.set_location(l_proc,20);
1975 end if;
1976 --
1977 -- udt satisfy validation of max value
1978 o_life_gen := round(i_life_gen
1979 * to_number(pay_jp_report_pkg.get_udt_value(
1980 p_business_group_id,
1981 c_life_gen_calc_udt,
1982 c_rate_udtcol,
1983 to_char(i_life_gen),
1984 p_effective_date))
1985 + to_number(pay_jp_report_pkg.get_udt_value(
1986 p_business_group_id,
1987 c_life_gen_calc_udt,
1988 c_add_adj_udtcol,
1989 to_char(i_life_gen),
1990 p_effective_date)));
1991 --
1992 if g_debug then
1993 hr_utility.set_location(l_proc,30);
1994 end if;
1995 --
1996 end if;
1997 --
1998 if i_life_gen_new > 0 then
1999 --
2000 if g_debug then
2001 hr_utility.set_location(l_proc,40);
2002 end if;
2003 --
2004 -- udt satisfy validation of max value
2005 o_life_gen_new := round(i_life_gen_new
2006 * to_number(pay_jp_report_pkg.get_udt_value(
2007 p_business_group_id,
2008 c_life_gen_new_calc_udt,
2009 c_rate_udtcol,
2010 to_char(i_life_gen_new),
2011 p_effective_date))
2012 + to_number(pay_jp_report_pkg.get_udt_value(
2013 p_business_group_id,
2014 c_life_gen_new_calc_udt,
2015 c_add_adj_udtcol,
2016 to_char(i_life_gen_new),
2017 p_effective_date)));
2018 --
2019 if g_debug then
2020 hr_utility.set_location(l_proc,45);
2021 end if;
2022 --
2023 end if;
2024
2025
2026 if i_care_med_new > 0 then
2027 --
2028 if g_debug then
2029 hr_utility.set_location(l_proc,40);
2030 end if;
2031 --
2032 -- udt satisfy validation of max value
2033 o_care_med_new := round(i_care_med_new
2034 * to_number(pay_jp_report_pkg.get_udt_value(
2035 p_business_group_id,
2036 c_life_gen_new_calc_udt,
2037 c_rate_udtcol,
2038 to_char(i_care_med_new),
2039 p_effective_date))
2040 + to_number(pay_jp_report_pkg.get_udt_value(
2041 p_business_group_id,
2042 c_life_gen_new_calc_udt,
2043 c_add_adj_udtcol,
2044 to_char(i_care_med_new),
2045 p_effective_date)));
2046 --
2047 if g_debug then
2048 hr_utility.set_location(l_proc,45);
2049 end if;
2050 --
2051 end if;
2052
2053
2054 if g_debug then
2055 hr_utility.set_location(l_proc,49);
2056 end if;
2057 --
2058 if i_life_pens > 0 then
2059 --
2060 if g_debug then
2061 hr_utility.set_location(l_proc,50);
2062 end if;
2063 --
2064 -- udt satisfy validation of max value
2065 o_life_pens := round(i_life_pens
2066 * to_number(pay_jp_report_pkg.get_udt_value(
2067 p_business_group_id,
2068 c_life_pens_calc_udt,
2069 c_rate_udtcol,
2070 to_char(i_life_pens),
2071 p_effective_date))
2072 + to_number(pay_jp_report_pkg.get_udt_value(
2073 p_business_group_id,
2074 c_life_pens_calc_udt,
2075 c_add_adj_udtcol,
2076 to_char(i_life_pens),
2077 p_effective_date)));
2078 --
2079 if g_debug then
2080 hr_utility.set_location(l_proc,60);
2081 end if;
2082 --
2083 end if;
2084 --
2085 if i_life_pens_new > 0 then
2086 --
2087 if g_debug then
2088 hr_utility.set_location(l_proc,65);
2089 end if;
2090 --
2091 -- udt satisfy validation of max value
2092 o_life_pens_new := round(i_life_pens_new
2093 * to_number(pay_jp_report_pkg.get_udt_value(
2094 p_business_group_id,
2095 c_life_pens_new_calc_udt,
2096 c_rate_udtcol,
2097 to_char(i_life_pens_new),
2098 p_effective_date))
2099 + to_number(pay_jp_report_pkg.get_udt_value(
2100 p_business_group_id,
2101 c_life_pens_new_calc_udt,
2102 c_add_adj_udtcol,
2103 to_char(i_life_pens_new),
2104 p_effective_date)));
2105 --
2106 if g_debug then
2107 hr_utility.set_location(l_proc,70);
2108 end if;
2109 --
2110 end if;
2111
2112 end if;
2113 --
2114 p_life_gen_o := o_life_gen;
2115 p_life_pens_o := o_life_pens;
2116 p_life_gen_new_o := o_life_gen_new;
2117 p_life_pens_new_o := o_life_pens_new;
2118 p_care_med_new_o := o_care_med_new;
2119 if to_number(to_char(p_effective_date,'YYYY')) >= 2012 then
2120 p_life_ins_dct_o := least(greatest(least(o_life_gen+o_life_gen_new,40000),o_life_gen) +
2121 greatest(least(o_life_pens+o_life_pens_new,40000),o_life_pens) +
2122 least(o_care_med_new,40000),120000);
2123 else
2124 p_life_ins_dct_o := o_life_gen + o_life_pens;
2125 end if;
2126 --
2127 if g_debug then
2128 hr_utility.trace('o_life_gen : '||to_char(o_life_gen));
2129 hr_utility.trace('o_life_pens : '||to_char(o_life_pens));
2130 hr_utility.trace('o_life_gen_new : '||to_char(o_life_gen_new));
2131 hr_utility.trace('o_life_pens_new : '||to_char(o_life_pens_new));
2132 hr_utility.trace('p_life_gen_o : '||to_char(p_life_gen_o));
2133 hr_utility.trace('p_life_pens_o : '||to_char(p_life_pens_o));
2134 hr_utility.trace('p_life_gen_new_o : '||to_char(p_life_gen_new_o));
2135 hr_utility.trace('p_life_pens_new_o : '||to_char(p_life_pens_new_o));
2136 hr_utility.trace('p_life_ins_dct_o : '||to_char(p_life_ins_dct_o));
2137 hr_utility.set_location(l_proc,1000);
2138 end if;
2139 --
2140 end calc_life_ins_dct;
2141 --
2142 -- -------------------------------------------------------------------------
2143 -- calc_nonlife
2144 -- -------------------------------------------------------------------------
2145 procedure calc_nonlife_dct(
2146 p_earthquake_i in number,
2147 p_nonlife_long_i in number,
2148 p_nonlife_short_i in number,
2149 p_business_group_id in number,
2150 p_effective_date in date,
2151 p_nonlife_dct_o out nocopy number,
2152 p_earthquake_o out nocopy number,
2153 p_nonlife_long_o out nocopy number,
2154 p_nonlife_short_o out nocopy number)
2155 is
2156 --
2157 l_proc varchar2(80) := c_package||'calc_total';
2158 i_earthquake number := nvl(p_earthquake_i,0);
2159 i_nonlife_long number := nvl(p_nonlife_long_i,0);
2160 i_nonlife_short number := nvl(p_nonlife_short_i,0);
2161 o_earthquake number := 0;
2162 o_nonlife_long number := 0;
2163 o_nonlife_short number := 0;
2164 o_nonlife_dct number;
2165 --
2166 begin
2167 --
2168 if g_debug then
2169 hr_utility.set_location(l_proc,0);
2170 hr_utility.trace('p_earthquake_i : '||to_char(p_earthquake_i));
2171 hr_utility.trace('p_nonlife_long_i : '||to_char(p_nonlife_long_i));
2172 hr_utility.trace('p_nonlife_long_i : '||to_char(p_nonlife_short_i));
2173 hr_utility.trace('p_business_group_id : '||to_char(p_business_group_id));
2174 hr_utility.trace('p_effective_date : '||to_char(p_effective_date,'YYYY/MM/DD'));
2175 hr_utility.trace('i_earthquake : '||to_char(i_earthquake));
2176 hr_utility.trace('i_nonlife_long : '||to_char(i_nonlife_long));
2177 hr_utility.trace('i_nonlife_short : '||to_char(i_nonlife_short));
2178 end if;
2179 --
2180 -- formula datetrack
2181 if (p_effective_date >= hr_api.g_sot
2182 and p_effective_date < c_st_upd_date_2007) then
2183 --
2184 if g_debug then
2185 hr_utility.set_location(l_proc,10);
2186 end if;
2187 --
2188 o_earthquake := null;
2189 --
2190 if i_nonlife_long > 0 then
2191 --
2192 if g_debug then
2193 hr_utility.set_location(l_proc,20);
2194 end if;
2195 --
2196 -- udt satisfy validation of max value
2197 o_nonlife_long := round(i_nonlife_long
2198 * to_number(pay_jp_report_pkg.get_udt_value(
2199 p_business_group_id,
2200 c_nonlife_long_calc_udt,
2201 c_rate_udtcol,
2202 to_char(i_nonlife_long),
2203 p_effective_date))
2204 + to_number(pay_jp_report_pkg.get_udt_value(
2205 p_business_group_id,
2206 c_nonlife_long_calc_udt,
2207 c_add_adj_udtcol,
2208 to_char(i_nonlife_long),
2209 p_effective_date)));
2210 --
2211 if g_debug then
2212 hr_utility.set_location(l_proc,30);
2213 end if;
2214 --
2215 end if;
2216 --
2217 if g_debug then
2218 hr_utility.set_location(l_proc,40);
2219 end if;
2220 --
2221 if i_nonlife_short > 0 then
2222 --
2223 if g_debug then
2224 hr_utility.set_location(l_proc,50);
2225 end if;
2226 --
2227 -- udt satisfy validation of max value
2228 o_nonlife_short := round(i_nonlife_short
2229 * to_number(pay_jp_report_pkg.get_udt_value(
2230 p_business_group_id,
2231 c_nonlife_short_calc_udt,
2232 c_rate_udtcol,
2233 to_char(i_nonlife_short),
2234 p_effective_date))
2235 + to_number(pay_jp_report_pkg.get_udt_value(
2236 p_business_group_id,
2237 c_nonlife_short_calc_udt,
2238 c_add_adj_udtcol,
2239 to_char(i_nonlife_short),
2240 p_effective_date)));
2241 --
2242 if g_debug then
2243 hr_utility.set_location(l_proc,60);
2244 end if;
2245 --
2246 end if;
2247 --
2248 o_nonlife_dct := o_nonlife_long + o_nonlife_short;
2249 --
2250 if g_effective_date <> p_effective_date
2251 or g_effective_date is null
2252 or c_nonlife_max is null then
2253 --
2254 -- need always reset cache has problem in case date is switched between 2006 and 2007.
2255 c_nonlife_max := to_number(pay_jp_report_pkg.get_udt_value(
2256 p_business_group_id,
2257 c_yea_calc_max_udt,
2258 c_max_udtcol,
2259 c_nonlife_udtrow,
2260 p_effective_date));
2261 --
2262 end if;
2263 --
2264 if g_debug then
2265 hr_utility.set_location(l_proc,70);
2266 hr_utility.trace('o_nonlife_dct : '||to_char(o_nonlife_dct));
2267 hr_utility.trace('c_nonlife_max : '||to_char(c_nonlife_max));
2268 end if;
2269 --
2270 if o_nonlife_dct > c_nonlife_max then
2271 o_nonlife_dct := c_nonlife_max;
2272 end if;
2273 --
2274 if g_debug then
2275 hr_utility.set_location(l_proc,80);
2276 end if;
2277 --
2278 elsif (p_effective_date >= c_st_upd_date_2007
2279 and p_effective_date <= hr_api.g_eot) then
2280 --
2281 if g_debug then
2282 hr_utility.set_location(l_proc,90);
2283 end if;
2284 --
2285 o_nonlife_short := null;
2286 --
2287 if i_earthquake > 0 then
2288 --
2289 if g_debug then
2290 hr_utility.set_location(l_proc,100);
2291 end if;
2292 --
2293 o_earthquake := round(i_earthquake);
2294 if c_earthquake_max is null then
2295 c_earthquake_max := to_number(pay_jp_report_pkg.get_udt_value(
2296 p_business_group_id,
2297 c_yea_calc_max_udt,
2298 c_max_udtcol,
2299 c_earthquake_udtrow,
2300 p_effective_date));
2301 end if;
2302 --
2303 if g_debug then
2304 hr_utility.set_location(l_proc,110);
2305 hr_utility.trace('o_earthquake : '||to_char(o_earthquake));
2306 hr_utility.trace('c_earthquake_max : '||to_char(c_earthquake_max));
2307 end if;
2308 --
2309 if o_earthquake > c_earthquake_max then
2310 o_earthquake := c_earthquake_max;
2311 end if;
2312 --
2313 if g_debug then
2314 hr_utility.set_location(l_proc,120);
2315 end if;
2316 --
2317 end if;
2318 --
2319 if i_nonlife_long > 0 then
2320 --
2321 if g_debug then
2322 hr_utility.set_location(l_proc,130);
2323 end if;
2324 --
2325 -- udt satisfy validation of max value
2326 o_nonlife_long := round(i_nonlife_long
2327 * to_number(pay_jp_report_pkg.get_udt_value(
2328 p_business_group_id,
2329 c_nonlife_long_calc_udt,
2330 c_rate_udtcol,
2331 to_char(i_nonlife_long),
2332 p_effective_date))
2333 + to_number(pay_jp_report_pkg.get_udt_value(
2334 p_business_group_id,
2335 c_nonlife_long_calc_udt,
2336 c_add_adj_udtcol,
2337 to_char(i_nonlife_long),
2338 p_effective_date)));
2339 --
2340 if g_debug then
2341 hr_utility.set_location(l_proc,140);
2342 end if;
2343 --
2344 end if;
2345 --
2346 if g_debug then
2347 hr_utility.set_location(l_proc,150);
2348 end if;
2349 --
2350 o_nonlife_dct := o_earthquake + o_nonlife_long;
2351 --
2352 if g_effective_date <> p_effective_date
2353 or g_effective_date is null
2354 or c_nonlife_max is null then
2355 --
2356 -- need always reset cache has problem in case date is switched between 2006 and 2007.
2357 c_nonlife_max := to_number(pay_jp_report_pkg.get_udt_value(
2358 p_business_group_id,
2359 c_yea_calc_max_udt,
2360 c_max_udtcol,
2361 c_nonlife_udtrow,
2362 p_effective_date));
2363 --
2364 end if;
2365 --
2366 if g_debug then
2367 hr_utility.set_location(l_proc,160);
2368 hr_utility.trace('o_nonlife_dct : '||to_char(o_nonlife_dct));
2369 hr_utility.trace('c_nonlife_max : '||to_char(c_nonlife_max));
2370 end if;
2371 --
2372 if o_nonlife_dct > c_nonlife_max then
2373 o_nonlife_dct := c_nonlife_max;
2374 end if;
2375 --
2376 if g_debug then
2377 hr_utility.set_location(l_proc,170);
2378 end if;
2379 --
2380 end if;
2381 --
2382 p_earthquake_o := o_earthquake;
2383 p_nonlife_long_o := o_nonlife_long;
2384 p_nonlife_short_o := o_nonlife_short;
2385 p_nonlife_dct_o := o_nonlife_dct;
2386 --
2387 if g_debug then
2388 hr_utility.trace('p_earthquake_o : '||to_char(p_earthquake_o));
2389 hr_utility.trace('p_nonlife_long_o : '||to_char(p_nonlife_long_o));
2390 hr_utility.trace('p_nonlife_short_o : '||to_char(p_nonlife_short_o));
2391 hr_utility.trace('p_nonlife_dct_o : '||to_char(p_nonlife_dct_o));
2392 hr_utility.trace('o_nonlife_long : '||to_char(o_nonlife_long));
2393 hr_utility.trace('o_nonlife_short : '||to_char(o_nonlife_short));
2394 hr_utility.trace('o_nonlife_dct : '||to_char(o_nonlife_dct));
2395 hr_utility.set_location(l_proc,1000);
2396 end if;
2397 --
2398 end calc_nonlife_dct;
2399 --
2400 -- -------------------------------------------------------------------------
2401 -- calc_nonlife_dct
2402 -- -------------------------------------------------------------------------
2403 -- wrapper, activate since 2007 statutory update
2404 procedure calc_nonlife_dct(
2405 p_earthquake_i in number,
2406 p_nonlife_long_i in number,
2407 p_business_group_id in number,
2408 p_effective_date in date,
2409 p_nonlife_dct_o out nocopy number,
2410 p_earthquake_o out nocopy number,
2411 p_nonlife_long_o out nocopy number)
2412 is
2413 --
2414 l_proc varchar2(80) := c_package||'calc_nonlife_dct';
2415 o_earthquake number;
2416 o_nonlife_long number;
2417 o_nonlife_short number;
2418 o_nonlife_dct number;
2419 --
2420 begin
2421 --
2422 if g_debug then
2423 hr_utility.set_location(l_proc,0);
2424 hr_utility.trace('calc_nonlife_dct wrapper');
2425 end if;
2426 --
2427 if (p_effective_date >= hr_api.g_sot
2428 and p_effective_date < c_st_upd_date_2007) then
2429 --
2430 if g_debug then
2431 hr_utility.set_location(l_proc,10);
2432 end if;
2433 --
2434 calc_nonlife_dct(
2435 p_earthquake_i => p_earthquake_i,
2436 p_nonlife_long_i => p_nonlife_long_i,
2437 p_nonlife_short_i => null,
2438 p_business_group_id => p_business_group_id,
2439 p_effective_date => p_effective_date,
2440 p_nonlife_dct_o => o_nonlife_dct,
2441 p_earthquake_o => o_earthquake,
2442 p_nonlife_long_o => o_nonlife_long,
2443 p_nonlife_short_o => o_nonlife_short);
2444 --
2445 end if;
2446 --
2447 p_earthquake_o := o_earthquake;
2448 p_nonlife_long_o := o_nonlife_long;
2449 p_nonlife_dct_o := o_nonlife_dct;
2450 --
2451 if g_debug then
2452 hr_utility.set_location(l_proc,1000);
2453 end if;
2454 --
2455 end calc_nonlife_dct;
2456 --
2457 -- -------------------------------------------------------------------------
2458 -- calc_social_dct
2459 -- -------------------------------------------------------------------------
2460 procedure calc_social_dct(
2461 p_social_i in number,
2462 p_business_group_id in number,
2463 p_effective_date in date,
2464 p_social_dct_o out nocopy number)
2465 is
2466 --
2467 l_proc varchar2(80) := c_package||'calc_total';
2468 i_social number := nvl(p_social_i,0);
2469 o_social_dct number;
2470 --
2471 begin
2472 --
2473 if g_debug then
2474 hr_utility.set_location(l_proc,0);
2475 hr_utility.trace('p_social_i : '||to_char(p_social_i));
2476 hr_utility.trace('p_business_group_id : '||to_char(p_business_group_id));
2477 hr_utility.trace('p_effective_date : '||to_char(p_effective_date,'YYYY/MM/DD'));
2478 hr_utility.trace('i_social : '||to_char(i_social));
2479 end if;
2480 --
2481 -- formula datetrack
2482 if (p_effective_date >= hr_api.g_sot
2483 and p_effective_date <= hr_api.g_eot) then
2484 --
2485 if g_debug then
2486 hr_utility.set_location(l_proc,10);
2487 end if;
2488 --
2489 if i_social < 0 then
2490 --
2491 if g_debug then
2492 hr_utility.set_location(l_proc,20);
2493 end if;
2494 --
2495 o_social_dct := 0;
2496 --
2497 else
2498 --
2499 o_social_dct := round(i_social);
2500 --
2501 if g_debug then
2502 hr_utility.set_location(l_proc,30);
2503 end if;
2504 --
2505 end if;
2506 --
2507 end if;
2508 --
2509 p_social_dct_o := o_social_dct;
2510 --
2511 if g_debug then
2512 hr_utility.trace('p_social_dct_o : '||to_char(p_social_dct_o));
2513 hr_utility.trace('o_social_dct : '||to_char(o_social_dct));
2514 hr_utility.set_location(l_proc,1000);
2515 end if;
2516 --
2517 end calc_social_dct;
2518 --
2519 -- -------------------------------------------------------------------------
2520 -- calc_mutual_aid_dct
2521 -- -------------------------------------------------------------------------
2522 procedure calc_mutual_aid_dct(
2523 p_mutual_aid_ec_i in number,
2524 p_mutual_aid_p_i in number,
2525 p_mutual_aid_dsc_i in number,
2526 p_business_group_id in number,
2527 p_effective_date in date,
2528 p_mutual_aid_dct_o out nocopy number)
2529 is
2530 --
2531 l_proc varchar2(80) := c_package||'calc_total';
2532 i_mutual_aid_ec number := nvl(p_mutual_aid_ec_i,0);
2533 i_mutual_aid_p number := nvl(p_mutual_aid_p_i,0);
2534 i_mutual_aid_dsc number := nvl(p_mutual_aid_dsc_i,0);
2535 o_mutual_aid_dct number;
2536 --
2537 begin
2538 --
2539 if g_debug then
2540 hr_utility.set_location(l_proc,0);
2541 hr_utility.trace('p_mutual_aid_ec_i : '||to_char(p_mutual_aid_ec_i));
2542 hr_utility.trace('p_mutual_aid_p_i : '||to_char(p_mutual_aid_p_i));
2543 hr_utility.trace('p_mutual_aid_dsc_i : '||to_char(p_mutual_aid_dsc_i));
2544 hr_utility.trace('p_business_group_id : '||to_char(p_business_group_id));
2545 hr_utility.trace('p_effective_date : '||to_char(p_effective_date,'YYYY/MM/DD'));
2546 hr_utility.trace('i_mutual_aid_ec : '||to_char(i_mutual_aid_ec));
2547 hr_utility.trace('i_mutual_aid_p : '||to_char(i_mutual_aid_p));
2548 hr_utility.trace('i_mutual_aid_dsc : '||to_char(i_mutual_aid_dsc));
2549 end if;
2550 --
2551 -- formula datetrack
2552 if (p_effective_date >= hr_api.g_sot
2553 and p_effective_date <= hr_api.g_eot) then
2554 --
2555 if g_debug then
2556 hr_utility.set_location(l_proc,10);
2557 end if;
2558 --
2559 o_mutual_aid_dct := round(i_mutual_aid_ec + i_mutual_aid_p + i_mutual_aid_dsc);
2560 --
2561 end if;
2562 --
2563 p_mutual_aid_dct_o := o_mutual_aid_dct;
2564 --
2565 if g_debug then
2566 hr_utility.trace('p_mutual_aid_dct_o : '||to_char(p_mutual_aid_dct_o));
2567 hr_utility.trace('o_mutual_aid_dct : '||to_char(o_mutual_aid_dct));
2568 hr_utility.set_location(l_proc,1000);
2569 end if;
2570 --
2571 end calc_mutual_aid_dct;
2572 --
2573 -- -------------------------------------------------------------------------
2574 -- calc_spouse_dct
2575 -- -------------------------------------------------------------------------
2576 procedure calc_spouse_dct(
2577 p_spouse_income_i in number,
2578 p_emp_income_i in number,
2579 p_sp_type_i in varchar2,
2580 p_wid_type_i in varchar2,
2581 p_dct_exc_i in varchar2,
2582 p_business_group_id in number,
2583 p_effective_date in date,
2584 p_spouse_dct_o out nocopy number)
2585 is
2586 --
2587 l_proc varchar2(80) := c_package||'calc_total';
2588 i_spouse_income number := nvl(p_spouse_income_i,0);
2589 i_emp_income number := nvl(p_emp_income_i,0);
2590 o_spouse_dct number := 0;
2591 --
2592 l_bg_itax_dpnt_ref_type varchar2(150);
2593 c_emp_income_max number;
2594 c_inc_spouse_dct_ma number;
2595 --
2596 begin
2597 --
2598 -- spouse_type validation is unnecessary. (just show it on form for confirmation)
2599 -- employer can distinguish the data validity between ss entry data and source data
2600 -- because employer can see archived spouse_type (source data) with ss entry data.
2601 -- spouse_type is fetched yea non-recurring entry so that it might not be setup
2602 -- data at the time when employer make archive data.
2603 -- spouse deduction on form will be calculated by based on ss entry data
2604 -- without message, even if ss entry data is not matched with source data,
2605 -- because employee cannot change spouse_type (source data) by themselves,
2606 -- specially in case when spouse_type is derived from eev (contact data can be changed).
2607 -- this might cause inconsistence between pay run result and form data,
2608 -- though employer should reject(ask employee to amend) ss entry data before pay run.
2609 --
2610 -- However, in this calculation, the calculated deduction is just information
2611 -- but as much as possible result should be same with actual yea run result,
2612 -- additionally spouse_type and widow_type are stored in recurring element,
2613 -- (dct_exc_flag is in non-recurring element), it means they probably will not be changed at yea run time
2614 -- and employer might has already setup the transferred override element for this ss form by manual,
2615 -- (actually this step is not desired.).
2616 -- finally the spouse_type, widow_type(set when spouse is inserted newly from ss
2617 -- or eev has been existed), dct_exc_flag(only case eev has been existed)
2618 -- their conditions are now included in current calculation logic like yea run formula.
2619 -- (At the calculated time, system cannot know final eev data at the yea runtime,
2620 -- so the result by this calculation might be different from final yea run result.)
2621 --
2622 if g_debug then
2623 hr_utility.set_location(l_proc,0);
2624 hr_utility.trace('p_spouse_income_i : '||to_char(p_spouse_income_i));
2625 hr_utility.trace('p_emp_income_i : '||to_char(p_emp_income_i));
2626 hr_utility.trace('p_business_group_id : '||to_char(p_business_group_id));
2627 hr_utility.trace('p_effective_date : '||to_char(p_effective_date,'YYYY/MM/DD'));
2628 hr_utility.trace('i_spouse_income : '||to_char(i_spouse_income));
2629 hr_utility.trace('i_emp_income : '||to_char(i_emp_income));
2630 hr_utility.trace('following are just information');
2631 hr_utility.trace('p_sp_type_i : '||p_sp_type_i);
2632 hr_utility.trace('p_wid_type_i : '||p_wid_type_i);
2633 hr_utility.trace('p_dct_exc_i : '||p_dct_exc_i);
2634 end if;
2635 --
2636 -- formula datetrack
2637 if (p_effective_date >= hr_api.g_sot
2638 and p_effective_date <= hr_api.g_eot) then
2639 --
2640 if g_debug then
2641 hr_utility.set_location(l_proc,10);
2642 end if;
2643 --
2644 if nvl(p_spouse_income_i,0) > 0
2645 and nvl(p_dct_exc_i,'N') = 'N' then
2646 --
2647 if g_debug then
2648 hr_utility.set_location(l_proc,20);
2649 end if;
2650 --
2651 if c_emp_income_max is null then
2652 --
2653 c_emp_income_max := to_number(pay_jp_report_pkg.get_udt_value(
2654 p_business_group_id,
2655 c_yea_calc_max_udt,
2656 c_max_udtcol,
2657 c_sp_emp_income_udtrow,
2658 p_effective_date));
2659 --
2660 if g_debug then
2661 hr_utility.set_location(l_proc,30);
2662 hr_utility.trace('c_emp_income_max : '||to_char(c_emp_income_max));
2663 hr_utility.trace('i_emp_income : '||to_char(i_emp_income));
2664 end if;
2665 --
2666 end if;
2667 --
2668 if i_emp_income <= c_emp_income_max
2669 and nvl(p_wid_type_i,'0') = '0'
2670 -- calculate when sp_type is null since eev might be set in future.
2671 and nvl(p_sp_type_i,'1') <> '0' then
2672 --
2673 if g_debug then
2674 hr_utility.set_location(l_proc,40);
2675 end if;
2676 --
2677 if c_inc_spouse_dct_max is null then
2678 --
2679 c_inc_spouse_dct_max := to_number(pay_jp_report_pkg.get_udt_value(
2680 p_business_group_id,
2681 c_yea_calc_max_udt,
2682 c_max_udtcol,
2683 c_sp_dctable_sp_income_udtrow,
2684 p_effective_date));
2685 --
2686 if g_debug then
2687 hr_utility.set_location(l_proc,50);
2688 hr_utility.trace('c_inc_spouse_dct_max : '||to_char(c_inc_spouse_dct_max));
2689 hr_utility.trace('i_spouse_income : '||to_char(i_spouse_income));
2690 end if;
2691 --
2692 end if;
2693 --
2694 -- even spouse_type is 2,3, if over inc_spouse_dct_max, they can be deductive for sp_spouse_dct.
2695 if i_spouse_income > c_inc_spouse_dct_max then
2696 --
2697 if g_debug then
2698 hr_utility.set_location(l_proc,60);
2699 end if;
2700 --
2701 if c_spouse_income_max is null then
2702 --
2703 c_spouse_income_max := to_number(pay_jp_report_pkg.get_udt_value(
2704 p_business_group_id,
2705 c_yea_calc_max_udt,
2706 c_max_udtcol,
2707 c_sp_spouse_income_udtrow,
2708 p_effective_date));
2709 --
2710 end if;
2711 --
2712 if g_debug then
2713 hr_utility.set_location(l_proc,70);
2714 hr_utility.trace('c_spouse_income_max : '||to_char(c_spouse_income_max));
2715 hr_utility.trace('i_spouse_income : '||to_char(i_spouse_income));
2716 end if;
2717 --
2718 if i_spouse_income < c_spouse_income_max then
2719 --
2720 o_spouse_dct := round(to_number(pay_jp_report_pkg.get_udt_value(
2721 p_business_group_id,
2722 c_spouse_calc_udt,
2723 c_dct_udtcol,
2724 to_char(i_spouse_income),
2725 p_effective_date)));
2726 --
2727 if g_debug then
2728 hr_utility.set_location(l_proc,80);
2729 hr_utility.trace('o_spouse_dct : '||to_char(o_spouse_dct));
2730 end if;
2731 --
2732 end if;
2733 --
2734 end if;
2735 --
2736 end if;
2737 --
2738 end if;
2739 --
2740 end if;
2741 --
2742 p_spouse_dct_o := o_spouse_dct;
2743 --
2744 if g_debug then
2745 hr_utility.trace('p_spouse_dct_o : '||to_char(p_spouse_dct_o));
2746 hr_utility.trace('o_spouse_dct : '||to_char(o_spouse_dct));
2747 hr_utility.set_location(l_proc,1000);
2748 end if;
2749 --
2750 end calc_spouse_dct;
2751 --
2752 -- -------------------------------------------------------------------------
2753 -- calc_spouse_inc
2754 -- -------------------------------------------------------------------------
2755 procedure calc_spouse_inc(
2756 p_sp_earned_inc_i in number,
2757 p_sp_earned_inc_exp_i in number,
2758 p_sp_business_inc_i in number,
2759 p_sp_business_inc_exp_i in number,
2760 p_sp_miscellaneous_inc_i in number,
2761 p_sp_miscellaneous_inc_exp_i in number,
2762 p_sp_dividend_inc_i in number,
2763 p_sp_dividend_inc_exp_i in number,
2764 p_sp_real_estate_inc_i in number,
2765 p_sp_real_estate_inc_exp_i in number,
2766 p_sp_retirement_inc_i in number,
2767 p_sp_retirement_inc_exp_i in number,
2768 p_sp_other_inc_i in number,
2769 p_sp_other_inc_exp_i in number,
2770 p_sp_other_inc_exp_dct_i in number,
2771 p_sp_other_inc_exp_tmp_i in number,
2772 p_sp_other_inc_exp_tmp_exp_i in number,
2773 p_sp_inc_cnt_i in number,
2774 p_ent_spouse_inc_i in number,
2775 p_business_group_id in number,
2776 p_effective_date in date,
2777 p_calc_spouse_inc_rec out nocopy t_calc_spouse_inc_rec,
2778 p_spouse_inc_o out nocopy number)
2779 is
2780 --
2781 l_proc varchar2(80) := c_package||'calc_total';
2782 o_spouse_inc number := 0;
2783 --
2784 begin
2785 --
2786 if g_debug then
2787 hr_utility.set_location(l_proc,0);
2788 hr_utility.trace('p_sp_earned_inc_i : '||to_char(p_sp_earned_inc_i));
2789 hr_utility.trace('p_sp_earned_inc_exp_i : '||to_char(p_sp_earned_inc_exp_i));
2790 hr_utility.trace('p_sp_business_inc_i : '||to_char(p_sp_business_inc_i));
2791 hr_utility.trace('p_sp_business_inc_exp_i : '||to_char(p_sp_business_inc_exp_i));
2792 hr_utility.trace('p_sp_miscellaneous_inc_i : '||to_char(p_sp_miscellaneous_inc_i));
2793 hr_utility.trace('p_sp_miscellaneous_inc_exp_i : '||to_char(p_sp_miscellaneous_inc_exp_i));
2794 hr_utility.trace('p_sp_dividend_inc_i : '||to_char(p_sp_dividend_inc_i));
2795 hr_utility.trace('p_sp_dividend_inc_exp_i : '||to_char(p_sp_dividend_inc_exp_i));
2796 hr_utility.trace('p_sp_real_estate_inc_i : '||to_char(p_sp_real_estate_inc_i));
2797 hr_utility.trace('p_sp_real_estate_inc_exp_i : '||to_char(p_sp_real_estate_inc_exp_i));
2798 hr_utility.trace('p_sp_retirement_inc_i : '||to_char(p_sp_retirement_inc_i));
2799 hr_utility.trace('p_sp_retirement_inc_exp_i : '||to_char(p_sp_retirement_inc_exp_i));
2800 hr_utility.trace('p_sp_other_inc_i : '||to_char(p_sp_other_inc_i));
2801 hr_utility.trace('p_sp_other_inc_exp_i : '||to_char(p_sp_other_inc_exp_i));
2802 hr_utility.trace('p_sp_other_inc_exp_dct_i : '||to_char(p_sp_other_inc_exp_dct_i));
2803 hr_utility.trace('p_sp_other_inc_exp_tmp_i : '||to_char(p_sp_other_inc_exp_tmp_i));
2804 hr_utility.trace('p_sp_other_inc_exp_tmp_exp_i : '||to_char(p_sp_other_inc_exp_tmp_exp_i));
2805 hr_utility.trace('p_sp_inc_cnt_i : '||to_char(p_sp_inc_cnt_i));
2806 hr_utility.trace('p_ent_spouse_inc_i : '||to_char(p_ent_spouse_inc_i));
2807 end if;
2808 --
2809 p_calc_spouse_inc_rec.sp_earned_inc_calc := 0;
2810 p_calc_spouse_inc_rec.sp_business_inc_calc := 0;
2811 p_calc_spouse_inc_rec.sp_miscellaneous_inc_calc := 0;
2812 p_calc_spouse_inc_rec.sp_dividend_inc_calc := 0;
2813 p_calc_spouse_inc_rec.sp_real_estate_inc_calc := 0;
2814 p_calc_spouse_inc_rec.sp_retirement_inc_calc := 0;
2815 p_calc_spouse_inc_rec.sp_other_inc_calc := 0;
2816 p_calc_spouse_inc_rec.sp_inc_calc := 0;
2817 --
2818 -- formula datetrack
2819 if (p_effective_date >= hr_api.g_sot
2820 and p_effective_date <= hr_api.g_eot) then
2821 --
2822 p_calc_spouse_inc_rec.sp_earned_inc_calc := p_sp_earned_inc_i - p_sp_earned_inc_exp_i;
2823 if p_calc_spouse_inc_rec.sp_earned_inc_calc < 0 then
2824 p_calc_spouse_inc_rec.sp_earned_inc_calc := 0;
2825 end if;
2826 --
2827 p_calc_spouse_inc_rec.sp_business_inc_calc := p_sp_business_inc_i - p_sp_business_inc_exp_i;
2828 -- basically this case is not happened.
2829 if p_calc_spouse_inc_rec.sp_business_inc_calc < 0 then
2830 p_calc_spouse_inc_rec.sp_business_inc_calc := 0;
2831 end if;
2832 --
2833 p_calc_spouse_inc_rec.sp_miscellaneous_inc_calc := p_sp_miscellaneous_inc_i - p_sp_miscellaneous_inc_exp_i;
2834 -- basically this case is not happened.
2835 if p_calc_spouse_inc_rec.sp_miscellaneous_inc_calc < 0 then
2836 p_calc_spouse_inc_rec.sp_miscellaneous_inc_calc := 0;
2837 end if;
2838 --
2839 p_calc_spouse_inc_rec.sp_dividend_inc_calc := p_sp_dividend_inc_i - p_sp_dividend_inc_exp_i;
2840 -- basically this case is not happened.
2841 if p_calc_spouse_inc_rec.sp_dividend_inc_calc < 0 then
2842 p_calc_spouse_inc_rec.sp_dividend_inc_calc := 0;
2843 end if;
2844 --
2845 p_calc_spouse_inc_rec.sp_real_estate_inc_calc := p_sp_real_estate_inc_i - p_sp_real_estate_inc_exp_i;
2846 -- basically this case is not happened.
2847 if p_calc_spouse_inc_rec.sp_real_estate_inc_calc < 0 then
2848 p_calc_spouse_inc_rec.sp_real_estate_inc_calc := 0;
2849 end if;
2850 --
2851 p_calc_spouse_inc_rec.sp_retirement_inc_calc := trunc((p_sp_retirement_inc_i - p_sp_retirement_inc_exp_i) / 2);
2852 -- basically this case is not happened.
2853 if p_calc_spouse_inc_rec.sp_retirement_inc_calc < 0 then
2854 p_calc_spouse_inc_rec.sp_retirement_inc_calc := 0;
2855 end if;
2856 --
2857 -- currently sp_other_inc_exp_tmp_i and sp_other_inc_exp_tmp_exp is not supported on FormPG.
2858 if (p_sp_other_inc_exp_tmp_i - p_sp_other_inc_exp_tmp_exp_i) / 2 < 0 then
2859 p_calc_spouse_inc_rec.sp_other_inc_calc := p_sp_other_inc_i - p_sp_other_inc_exp_i;
2860 else
2861 if p_sp_other_inc_i - p_sp_other_inc_exp_tmp_i < 0 then
2862 p_calc_spouse_inc_rec.sp_other_inc_calc := 0;
2863 else
2864 if p_sp_other_inc_exp_i - p_sp_other_inc_exp_tmp_exp_i < 0 then
2865 p_calc_spouse_inc_rec.sp_other_inc_calc := 0;
2866 else
2867 p_calc_spouse_inc_rec.sp_other_inc_calc := ((p_sp_other_inc_i - p_sp_other_inc_exp_tmp_i)
2868 - (p_sp_other_inc_exp_i - p_sp_other_inc_exp_tmp_exp_i))
2869 + trunc((p_sp_other_inc_exp_tmp_i - p_sp_other_inc_exp_tmp_exp_i) / 2);
2870 end if;
2871 end if;
2872 end if;
2873 if p_calc_spouse_inc_rec.sp_other_inc_calc < 0 then
2874 p_calc_spouse_inc_rec.sp_other_inc_calc := 0;
2875 end if;
2876 --
2877 p_calc_spouse_inc_rec.sp_inc_calc := p_calc_spouse_inc_rec.sp_earned_inc_calc
2878 + p_calc_spouse_inc_rec.sp_business_inc_calc
2879 + p_calc_spouse_inc_rec.sp_miscellaneous_inc_calc
2880 + p_calc_spouse_inc_rec.sp_dividend_inc_calc
2881 + p_calc_spouse_inc_rec.sp_real_estate_inc_calc
2882 + p_calc_spouse_inc_rec.sp_retirement_inc_calc
2883 + p_calc_spouse_inc_rec.sp_other_inc_calc;
2884 --
2885 end if;
2886 --
2887 -- basically use the calculated spouse inc, but use entry spouse inc if no record of sp_inc
2888 if p_sp_inc_cnt_i > 0 then
2889 --
2890 o_spouse_inc := p_calc_spouse_inc_rec.sp_inc_calc;
2891 --
2892 else
2893 --
2894 o_spouse_inc := p_ent_spouse_inc_i;
2895 --
2896 end if;
2897 --
2898 if g_debug then
2899 hr_utility.trace('p_calc_spouse_inc_rec.sp_earned_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_earned_inc_calc));
2900 hr_utility.trace('p_calc_spouse_inc_rec.sp_business_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_business_inc_calc));
2901 hr_utility.trace('p_calc_spouse_inc_rec.sp_miscellaneous_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_miscellaneous_inc_calc));
2902 hr_utility.trace('p_calc_spouse_inc_rec.sp_dividend_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_dividend_inc_calc));
2903 hr_utility.trace('p_calc_spouse_inc_rec.sp_real_estate_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_real_estate_inc_calc));
2904 hr_utility.trace('p_calc_spouse_inc_rec.sp_retirement_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_retirement_inc_calc));
2905 hr_utility.trace('p_calc_spouse_inc_rec.sp_other_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_other_inc_calc));
2906 hr_utility.trace('p_sp_inc_cnt_i : '||to_char(p_sp_inc_cnt_i));
2907 hr_utility.trace('p_calc_spouse_inc_rec.sp_inc_calc : '||to_char(p_calc_spouse_inc_rec.sp_inc_calc));
2908 hr_utility.trace('p_ent_spouse_inc_i : '||to_char(p_ent_spouse_inc_i));
2909 hr_utility.trace('o_spouse_inc : '||to_char(o_spouse_inc));
2910 hr_utility.set_location(l_proc,1000);
2911 end if;
2912 --
2913 p_spouse_inc_o := o_spouse_inc;
2914 --
2915 end calc_spouse_inc;
2916 --
2917 -- -------------------------------------------------------------------------
2918 -- calc_dct
2919 -- -------------------------------------------------------------------------
2920 procedure calc_dct(
2921 p_assignment_action_id in number,
2922 p_calc_dct_rec out nocopy t_calc_dct_rec)
2923 is
2924 --
2925 l_proc varchar2(80) := c_package||'calc_ins';
2926 l_calc_total_rec t_calc_total_rec;
2927 l_calc_spouse_inc_rec t_calc_spouse_inc_rec;
2928 --
2929 l_payroll_action_id number;
2930 l_business_group_id number;
2931 l_effective_date date;
2932 --
2933 cursor csr_pact
2934 is
2935 select /* +ORDERED */
2936 ppa.payroll_action_id,
2937 ppa.business_group_id,
2938 ppa.effective_date
2939 from pay_assignment_actions paa,
2940 pay_payroll_actions ppa
2941 where paa.assignment_action_id = p_assignment_action_id
2942 and ppa.payroll_action_id = paa.payroll_action_id;
2943 --
2944 begin
2945 --
2946 if g_debug then
2947 hr_utility.set_location(l_proc,0);
2948 end if;
2949 --
2950 calc_total(
2951 p_assignment_action_id => p_assignment_action_id,
2952 p_calc_total_rec => l_calc_total_rec);
2953 --
2954 p_calc_dct_rec.life_gen_ins_prem := l_calc_total_rec.life_gen;
2955 p_calc_dct_rec.life_pens_ins_prem := l_calc_total_rec.life_pens;
2956 p_calc_dct_rec.life_gen_new_ins_prem := l_calc_total_rec.life_gen_new;
2957 p_calc_dct_rec.life_pens_new_ins_prem := l_calc_total_rec.life_pens_new;
2958 p_calc_dct_rec.care_med_new_ins_prem := l_calc_total_rec.care_med_new;
2959 p_calc_dct_rec.earthquake_ins_prem := l_calc_total_rec.earthquake;
2960 p_calc_dct_rec.nonlife_long_ins_prem := l_calc_total_rec.nonlife_long;
2961 p_calc_dct_rec.nonlife_short_ins_prem := l_calc_total_rec.nonlife_short;
2962 p_calc_dct_rec.national_pens_ins_prem := l_calc_total_rec.national_pens;
2963 p_calc_dct_rec.social_ins_prem := l_calc_total_rec.social;
2964
2965 --
2966 open csr_pact;
2967 fetch csr_pact into l_payroll_action_id, l_business_group_id, l_effective_date;
2968 close csr_pact;
2969 --
2970 calc_spouse_inc(
2971 p_sp_earned_inc_i => l_calc_total_rec.sp_earned_inc,
2972 p_sp_earned_inc_exp_i => l_calc_total_rec.sp_earned_inc_exp,
2973 p_sp_business_inc_i => l_calc_total_rec.sp_business_inc,
2974 p_sp_business_inc_exp_i => l_calc_total_rec.sp_business_inc_exp,
2975 p_sp_miscellaneous_inc_i => l_calc_total_rec.sp_miscellaneous_inc,
2976 p_sp_miscellaneous_inc_exp_i => l_calc_total_rec.sp_miscellaneous_inc_exp,
2977 p_sp_dividend_inc_i => l_calc_total_rec.sp_dividend_inc,
2978 p_sp_dividend_inc_exp_i => l_calc_total_rec.sp_dividend_inc_exp,
2979 p_sp_real_estate_inc_i => l_calc_total_rec.sp_real_estate_inc,
2980 p_sp_real_estate_inc_exp_i => l_calc_total_rec.sp_real_estate_inc_exp,
2981 p_sp_retirement_inc_i => l_calc_total_rec.sp_retirement_inc,
2982 p_sp_retirement_inc_exp_i => l_calc_total_rec.sp_retirement_inc_exp,
2983 p_sp_other_inc_i => l_calc_total_rec.sp_other_inc,
2984 p_sp_other_inc_exp_i => l_calc_total_rec.sp_other_inc_exp,
2985 p_sp_other_inc_exp_dct_i => l_calc_total_rec.sp_other_inc_exp_dct,
2986 p_sp_other_inc_exp_tmp_i => l_calc_total_rec.sp_other_inc_exp_tmp,
2987 p_sp_other_inc_exp_tmp_exp_i => l_calc_total_rec.sp_other_inc_exp_tmp_exp,
2988 p_business_group_id => l_business_group_id,
2989 p_effective_date => l_effective_date,
2990 p_sp_inc_cnt_i => l_calc_total_rec.sp_inc_cnt,
2991 p_ent_spouse_inc_i => l_calc_total_rec.sp_spouse_inc,
2992 p_calc_spouse_inc_rec => l_calc_spouse_inc_rec,
2993 p_spouse_inc_o => p_calc_dct_rec.spouse_inc);
2994 --
2995 p_calc_dct_rec.sp_earned_inc_calc := l_calc_spouse_inc_rec.sp_earned_inc_calc;
2996 p_calc_dct_rec.sp_business_inc_calc := l_calc_spouse_inc_rec.sp_business_inc_calc;
2997 p_calc_dct_rec.sp_miscellaneous_inc_calc := l_calc_spouse_inc_rec.sp_miscellaneous_inc_calc;
2998 p_calc_dct_rec.sp_dividend_inc_calc := l_calc_spouse_inc_rec.sp_dividend_inc_calc;
2999 p_calc_dct_rec.sp_real_estate_inc_calc := l_calc_spouse_inc_rec.sp_real_estate_inc_calc;
3000 p_calc_dct_rec.sp_retirement_inc_calc := l_calc_spouse_inc_rec.sp_retirement_inc_calc;
3001 p_calc_dct_rec.sp_other_inc_calc := l_calc_spouse_inc_rec.sp_other_inc_calc;
3002 p_calc_dct_rec.sp_inc_calc := l_calc_spouse_inc_rec.sp_inc_calc;
3003 --
3004 calc_life_ins_dct(
3005 p_life_gen_i => l_calc_total_rec.life_gen,
3006 p_life_pens_i => l_calc_total_rec.life_pens,
3007 p_life_gen_new_i => l_calc_total_rec.life_gen_new,
3008 p_life_pens_new_i => l_calc_total_rec.life_pens_new,
3009 p_care_med_new_i => l_calc_total_rec.care_med_new,
3010 p_business_group_id => l_business_group_id,
3011 p_effective_date => l_effective_date,
3012 p_life_ins_dct_o => p_calc_dct_rec.life_ins_deduction,
3013 p_life_gen_o => p_calc_dct_rec.life_gen_ins_calc_prem,
3014 p_life_pens_o => p_calc_dct_rec.life_pens_ins_calc_prem,
3015 p_life_gen_new_o => p_calc_dct_rec.life_gen_new_ins_calc_prem,
3016 p_life_pens_new_o => p_calc_dct_rec.life_pens_new_ins_calc_prem,
3017 p_care_med_new_o => p_calc_dct_rec.care_med_new_ins_calc_prem);
3018 --
3019 calc_nonlife_dct(
3020 p_earthquake_i => l_calc_total_rec.earthquake,
3021 p_nonlife_long_i => l_calc_total_rec.nonlife_long,
3022 p_nonlife_short_i => l_calc_total_rec.nonlife_short,
3023 p_business_group_id => l_business_group_id,
3024 p_effective_date => l_effective_date,
3025 p_nonlife_dct_o => p_calc_dct_rec.nonlife_ins_deduction,
3026 p_earthquake_o => p_calc_dct_rec.earthquake_ins_calc_prem,
3027 p_nonlife_long_o => p_calc_dct_rec.nonlife_long_ins_calc_prem,
3028 p_nonlife_short_o => p_calc_dct_rec.nonlife_short_ins_calc_prem);
3029 --
3030 calc_social_dct(
3031 p_social_i => l_calc_total_rec.social,
3032 p_business_group_id => l_business_group_id,
3033 p_effective_date => l_effective_date,
3034 p_social_dct_o => p_calc_dct_rec.social_ins_deduction);
3035 --
3036 calc_mutual_aid_dct(
3037 p_mutual_aid_ec_i => l_calc_total_rec.mutual_aid_ec,
3038 p_mutual_aid_p_i => l_calc_total_rec.mutual_aid_p,
3039 p_mutual_aid_dsc_i => l_calc_total_rec.mutual_aid_dsc,
3040 p_business_group_id => l_business_group_id,
3041 p_effective_date => l_effective_date,
3042 p_mutual_aid_dct_o => p_calc_dct_rec.mutual_aid_deduction);
3043 --
3044 calc_spouse_dct(
3045 p_spouse_income_i => p_calc_dct_rec.spouse_inc,
3046 p_emp_income_i => l_calc_total_rec.sp_emp_inc,
3047 p_sp_type_i => l_calc_total_rec.sp_sp_type,
3048 p_wid_type_i => l_calc_total_rec.sp_wid_type,
3049 p_dct_exc_i => l_calc_total_rec.sp_dct_exc,
3050 p_business_group_id => l_business_group_id,
3051 p_effective_date => l_effective_date,
3052 p_spouse_dct_o => p_calc_dct_rec.spouse_deduction);
3053 --
3054 -- cache in case payroll_action_id is same.
3055 if g_payroll_action_id is null
3056 or (g_payroll_action_id <> l_payroll_action_id
3057 and l_payroll_action_id is not null) then
3058 --
3059 g_payroll_action_id := l_payroll_action_id;
3060 g_business_group_id := l_business_group_id;
3061 g_effective_date := l_effective_date;
3062 --
3063 end if;
3064 --
3065 if g_debug then
3066 hr_utility.trace('end update_assact');
3067 hr_utility.set_location(l_proc,1000);
3068 end if;
3069 --
3070 end calc_dct;
3071 --
3072 -- -------------------------------------------------------------------------
3073 -- do_calculate
3074 -- -------------------------------------------------------------------------
3075 procedure do_calculate(
3076 p_action_information_id in number,
3077 p_object_version_number in out nocopy number)
3078 is
3079 --
3080 l_proc varchar2(80) := c_package||'do_calculate';
3081 l_submission_date date;
3082 l_assact_rec pay_jp_isdf_assact_v%rowtype;
3083 l_calc_dct_rec t_calc_dct_rec;
3084 l_action_information_id number;
3085 l_object_version_number number;
3086 --
3087 cursor csr_calc_dct
3088 is
3089 select *
3090 from pay_jp_isdf_calc_dct_v
3091 where assignment_action_id = l_assact_rec.assignment_action_id
3092 and action_context_type = 'AAP'
3093 and action_information_category = 'JP_ISDF_CALC_DCT'
3094 and status <> 'D';
3095 --
3096 cursor csr_calc_dct2
3097 is
3098 select *
3099 from pay_jp_isdf_calc_dct_v2
3100 where assignment_action_id = l_assact_rec.assignment_action_id
3101 and action_context_type = 'AAP'
3102 and action_information_category = 'JP_ISDF_CALC_DCT2'
3103 and status <> 'D';
3104 --
3105 l_csr_calc_dct csr_calc_dct%rowtype;
3106 l_csr_calc_dct2 csr_calc_dct2%rowtype;
3107 --
3108 begin
3109 --
3110 if g_debug then
3111 hr_utility.set_location(l_proc,0);
3112 end if;
3113 --
3114 l_submission_date := check_submission_period(p_action_information_id);
3115 --
3116 if g_debug then
3117 hr_utility.set_location(l_proc,10);
3118 hr_utility.trace('submission_date : '||fnd_date.date_to_canonical(l_submission_date));
3119 end if;
3120 --
3121 -- unnecessary to lock
3122 select *
3123 into l_assact_rec
3124 from pay_jp_isdf_assact_v
3125 where action_information_id = p_action_information_id;
3126 --
3127 if l_assact_rec.transaction_status <> 'N' then
3128 fnd_message.set_name('PAY','PAY_JP_DEF_INVALID_TXN_STATUS');
3129 fnd_message.raise_error;
3130 end if;
3131 --
3132 if g_debug then
3133 hr_utility.set_location(l_proc,20);
3134 hr_utility.trace('action_information_id : '||p_action_information_id);
3135 hr_utility.trace('object_version_number : '||p_object_version_number);
3136 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3137 hr_utility.trace('start calc_ins');
3138 end if;
3139 --
3140 calc_dct(
3141 p_assignment_action_id => l_assact_rec.assignment_action_id,
3142 p_calc_dct_rec => l_calc_dct_rec);
3143 --
3144 open csr_calc_dct;
3145 fetch csr_calc_dct into l_csr_calc_dct;
3146 close csr_calc_dct;
3147
3148 --
3149 if l_csr_calc_dct.action_information_id is null then
3150 --
3151 select pay_action_information_s.nextval
3152 into l_action_information_id
3153 from dual;
3154 --
3155 pay_jp_isdf_dml_pkg.create_calc_dct(
3156 p_action_information_id => l_action_information_id,
3157 p_assignment_action_id => l_assact_rec.assignment_action_id,
3158 p_action_context_type => 'AAP',
3159 p_assignment_id => l_assact_rec.assignment_id,
3160 p_effective_date => l_assact_rec.effective_date,
3161 p_action_information_category => 'JP_ISDF_CALC_DCT',
3162 p_status => 'I',
3163 p_life_gen_ins_prem => l_calc_dct_rec.life_gen_ins_prem,
3164 p_life_pens_ins_prem => l_calc_dct_rec.life_pens_ins_prem,
3165 p_life_gen_ins_calc_prem => l_calc_dct_rec.life_gen_ins_calc_prem,
3166 p_life_pens_ins_calc_prem => l_calc_dct_rec.life_pens_ins_calc_prem,
3167 p_life_ins_deduction => l_calc_dct_rec.life_ins_deduction,
3168 p_nonlife_long_ins_prem => l_calc_dct_rec.nonlife_long_ins_prem,
3169 p_nonlife_short_ins_prem => l_calc_dct_rec.nonlife_short_ins_prem,
3170 p_earthquake_ins_prem => l_calc_dct_rec.earthquake_ins_prem,
3171 p_nonlife_long_ins_calc_prem => l_calc_dct_rec.nonlife_long_ins_calc_prem,
3172 p_nonlife_short_ins_calc_prem => l_calc_dct_rec.nonlife_short_ins_calc_prem,
3173 p_earthquake_ins_calc_prem => l_calc_dct_rec.earthquake_ins_calc_prem,
3174 p_nonlife_ins_deduction => l_calc_dct_rec.nonlife_ins_deduction,
3175 p_national_pens_ins_prem => l_calc_dct_rec.national_pens_ins_prem,
3176 p_social_ins_deduction => l_calc_dct_rec.social_ins_deduction,
3177 p_mutual_aid_deduction => l_calc_dct_rec.mutual_aid_deduction,
3178 p_sp_earned_income_calc => l_calc_dct_rec.sp_earned_inc_calc,
3179 p_sp_business_income_calc => l_calc_dct_rec.sp_business_inc_calc,
3180 p_sp_miscellaneous_income_calc => l_calc_dct_rec.sp_miscellaneous_inc_calc,
3181 p_sp_dividend_income_calc => l_calc_dct_rec.sp_dividend_inc_calc,
3182 p_sp_real_estate_income_calc => l_calc_dct_rec.sp_real_estate_inc_calc,
3183 p_sp_retirement_income_calc => l_calc_dct_rec.sp_retirement_inc_calc,
3184 p_sp_other_income_calc => l_calc_dct_rec.sp_other_inc_calc,
3185 p_sp_income_calc => l_calc_dct_rec.sp_inc_calc,
3186 p_spouse_income => l_calc_dct_rec.spouse_inc,
3187 p_spouse_deduction => l_calc_dct_rec.spouse_deduction,
3188 p_object_version_number => l_object_version_number,
3189 p_life_gen_new_ins_prem => l_calc_dct_rec.life_gen_new_ins_prem,
3190 p_life_pens_new_ins_prem => l_calc_dct_rec.life_pens_new_ins_prem,
3191 p_life_gen_new_ins_calc_prem => l_calc_dct_rec.life_gen_new_ins_calc_prem,
3192 p_life_pens_new_ins_calc_prem => l_calc_dct_rec.life_pens_new_ins_calc_prem);
3193 --
3194 else
3195 --
3196 l_action_information_id := l_csr_calc_dct.action_information_id;
3197 l_object_version_number := l_csr_calc_dct.object_version_number;
3198 --
3199 -- calc_dct is always insert mode because no initial archive data.
3200 pay_jp_isdf_dml_pkg.update_calc_dct(
3201 p_action_information_id => l_action_information_id,
3202 p_object_version_number => l_object_version_number,
3203 p_status => 'I',
3204 p_life_gen_ins_prem => l_calc_dct_rec.life_gen_ins_prem,
3205 p_life_pens_ins_prem => l_calc_dct_rec.life_pens_ins_prem,
3206 p_life_gen_ins_calc_prem => l_calc_dct_rec.life_gen_ins_calc_prem,
3207 p_life_pens_ins_calc_prem => l_calc_dct_rec.life_pens_ins_calc_prem,
3208 p_life_ins_deduction => l_calc_dct_rec.life_ins_deduction,
3209 p_nonlife_long_ins_prem => l_calc_dct_rec.nonlife_long_ins_prem,
3210 p_nonlife_short_ins_prem => l_calc_dct_rec.nonlife_short_ins_prem,
3211 p_earthquake_ins_prem => l_calc_dct_rec.earthquake_ins_prem,
3212 p_nonlife_long_ins_calc_prem => l_calc_dct_rec.nonlife_long_ins_calc_prem,
3213 p_nonlife_short_ins_calc_prem => l_calc_dct_rec.nonlife_short_ins_calc_prem,
3214 p_earthquake_ins_calc_prem => l_calc_dct_rec.earthquake_ins_calc_prem,
3215 p_nonlife_ins_deduction => l_calc_dct_rec.nonlife_ins_deduction,
3216 p_national_pens_ins_prem => l_calc_dct_rec.national_pens_ins_prem,
3217 p_social_ins_deduction => l_calc_dct_rec.social_ins_deduction,
3218 p_mutual_aid_deduction => l_calc_dct_rec.mutual_aid_deduction,
3219 p_sp_earned_income_calc => l_calc_dct_rec.sp_earned_inc_calc,
3220 p_sp_business_income_calc => l_calc_dct_rec.sp_business_inc_calc,
3221 p_sp_miscellaneous_income_calc => l_calc_dct_rec.sp_miscellaneous_inc_calc,
3222 p_sp_dividend_income_calc => l_calc_dct_rec.sp_dividend_inc_calc,
3223 p_sp_real_estate_income_calc => l_calc_dct_rec.sp_real_estate_inc_calc,
3224 p_sp_retirement_income_calc => l_calc_dct_rec.sp_retirement_inc_calc,
3225 p_sp_other_income_calc => l_calc_dct_rec.sp_other_inc_calc,
3226 p_sp_income_calc => l_calc_dct_rec.sp_inc_calc,
3227 p_spouse_income => l_calc_dct_rec.spouse_inc,
3228 p_spouse_deduction => l_calc_dct_rec.spouse_deduction,
3229 p_life_gen_new_ins_prem => l_calc_dct_rec.life_gen_new_ins_prem,
3230 p_life_pens_new_ins_prem => l_calc_dct_rec.life_pens_new_ins_prem,
3231 p_life_gen_new_ins_calc_prem => l_calc_dct_rec.life_gen_new_ins_calc_prem,
3232 p_life_pens_new_ins_calc_prem => l_calc_dct_rec.life_pens_new_ins_calc_prem);
3233 --
3234 end if;
3235 --
3236 open csr_calc_dct2;
3237 fetch csr_calc_dct2 into l_csr_calc_dct2;
3238 close csr_calc_dct2;
3239 --
3240 if l_csr_calc_dct2.action_information_id is null then
3241 --
3242 select pay_action_information_s.nextval
3243 into l_action_information_id
3244 from dual;
3245 --
3246 pay_jp_isdf_dml_pkg.create_calc_dct2(
3247 p_action_information_id => l_action_information_id,
3248 p_assignment_action_id => l_assact_rec.assignment_action_id,
3249 p_action_context_type => 'AAP',
3250 p_assignment_id => l_assact_rec.assignment_id,
3251 p_effective_date => l_assact_rec.effective_date,
3252 p_action_information_category => 'JP_ISDF_CALC_DCT2',
3253 p_status => 'I',
3254 p_object_version_number => l_object_version_number,
3255 p_care_med_new_ins_prem => l_calc_dct_rec.care_med_new_ins_prem,
3256 p_care_med_new_ins_calc_prem => l_calc_dct_rec.care_med_new_ins_calc_prem);
3257 --
3258 else
3259 --
3260 l_action_information_id := l_csr_calc_dct2.action_information_id;
3261 l_object_version_number := l_csr_calc_dct2.object_version_number;
3262 --
3263 -- calc_dct is always insert mode because no initial archive data.
3264 pay_jp_isdf_dml_pkg.update_calc_dct2(
3265 p_action_information_id => l_action_information_id,
3266 p_object_version_number => l_object_version_number,
3267 p_status => 'I',
3268 p_care_med_new_ins_prem => l_calc_dct_rec.care_med_new_ins_prem,
3269 p_care_med_new_ins_calc_prem => l_calc_dct_rec.care_med_new_ins_calc_prem);
3270 --
3271 end if;
3272 --
3273 if g_debug then
3274 hr_utility.trace('end update_assact');
3275 hr_utility.set_location(l_proc,1000);
3276 end if;
3277 --
3278 end do_calculate;
3279 --
3280 -- -------------------------------------------------------------------------
3281 -- do_finalize
3282 -- -------------------------------------------------------------------------
3283 procedure do_finalize(
3284 p_action_information_id in number,
3285 p_object_version_number in out nocopy number,
3286 p_user_comments in varchar2)
3287 is
3288 --
3289 l_proc varchar2(80) := c_package||'do_finalize';
3290 l_submission_date date;
3291 l_assact_rec pay_jp_isdf_assact_v%rowtype;
3292 l_calc_dct_rec t_calc_dct_rec;
3293 l_action_information_id number;
3294 l_object_version_number number;
3295 --
3296 cursor csr_calc_dct
3297 is
3298 select *
3299 from pay_jp_isdf_calc_dct_v
3300 where assignment_action_id = l_assact_rec.assignment_action_id
3301 and action_context_type = 'AAP'
3302 and action_information_category = 'JP_ISDF_CALC_DCT'
3303 and status <> 'D';
3304 --
3305 cursor csr_calc_dct2
3306 is
3307 select *
3308 from pay_jp_isdf_calc_dct_v2
3309 where assignment_action_id = l_assact_rec.assignment_action_id
3310 and action_context_type = 'AAP'
3311 and action_information_category = 'JP_ISDF_CALC_DCT2'
3312 and status <> 'D';
3313 --
3314 l_csr_calc_dct csr_calc_dct%rowtype;
3315 l_csr_calc_dct2 csr_calc_dct2%rowtype;
3316 --
3317 cursor csr_entry
3318 is
3319 select *
3320 from pay_jp_isdf_entry_v
3321 where assignment_action_id = l_assact_rec.assignment_action_id
3322 and action_context_type = 'AAP'
3323 and action_information_category = 'JP_ISDF_ENTRY'
3324 and status <> 'D';
3325 --
3326 l_csr_entry csr_entry%rowtype;
3327 --
3328 begin
3329 --
3330 if g_debug then
3331 hr_utility.set_location(l_proc,0);
3332 end if;
3333 --
3334 l_submission_date := check_submission_period(p_action_information_id);
3335 --
3336 if g_debug then
3337 hr_utility.set_location(l_proc,10);
3338 hr_utility.trace('submission_date : '||fnd_date.date_to_canonical(l_submission_date));
3339 end if;
3340 --
3341 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
3342 --
3343 if l_assact_rec.transaction_status <> 'N' then
3344 fnd_message.set_name('PAY','PAY_JP_DEF_INVALID_TXN_STATUS');
3345 fnd_message.raise_error;
3346 end if;
3347 --
3348 if g_debug then
3349 hr_utility.set_location(l_proc,20);
3350 hr_utility.trace('action_information_id : '||p_action_information_id);
3351 hr_utility.trace('object_version_number : '||p_object_version_number);
3352 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3353 hr_utility.trace('start calc_dct before finalize');
3354 end if;
3355 --
3356 calc_dct(
3357 p_assignment_action_id => l_assact_rec.assignment_action_id,
3358 p_calc_dct_rec => l_calc_dct_rec);
3359 --
3360 open csr_calc_dct;
3361 fetch csr_calc_dct into l_csr_calc_dct;
3362 close csr_calc_dct;
3363 --
3364
3365 if l_csr_calc_dct.action_information_id is null then
3366 --
3367 select pay_action_information_s.nextval
3368 into l_action_information_id
3369 from dual;
3370 --
3371 pay_jp_isdf_dml_pkg.create_calc_dct(
3372 p_action_information_id => l_action_information_id,
3373 p_assignment_action_id => l_assact_rec.assignment_action_id,
3374 p_action_context_type => 'AAP',
3375 p_assignment_id => l_assact_rec.assignment_id,
3376 p_effective_date => l_assact_rec.effective_date,
3377 p_action_information_category => 'JP_ISDF_CALC_DCT',
3378 p_status => 'I',
3379 p_life_gen_ins_prem => l_calc_dct_rec.life_gen_ins_prem,
3380 p_life_pens_ins_prem => l_calc_dct_rec.life_pens_ins_prem,
3381 p_life_gen_ins_calc_prem => l_calc_dct_rec.life_gen_ins_calc_prem,
3382 p_life_pens_ins_calc_prem => l_calc_dct_rec.life_pens_ins_calc_prem,
3383 p_life_ins_deduction => l_calc_dct_rec.life_ins_deduction,
3384 p_nonlife_long_ins_prem => l_calc_dct_rec.nonlife_long_ins_prem,
3385 p_nonlife_short_ins_prem => l_calc_dct_rec.nonlife_short_ins_prem,
3386 p_earthquake_ins_prem => l_calc_dct_rec.earthquake_ins_prem,
3387 p_nonlife_long_ins_calc_prem => l_calc_dct_rec.nonlife_long_ins_calc_prem,
3388 p_nonlife_short_ins_calc_prem => l_calc_dct_rec.nonlife_short_ins_calc_prem,
3389 p_earthquake_ins_calc_prem => l_calc_dct_rec.earthquake_ins_calc_prem,
3390 p_nonlife_ins_deduction => l_calc_dct_rec.nonlife_ins_deduction,
3391 p_national_pens_ins_prem => l_calc_dct_rec.national_pens_ins_prem,
3392 p_social_ins_deduction => l_calc_dct_rec.social_ins_deduction,
3393 p_mutual_aid_deduction => l_calc_dct_rec.mutual_aid_deduction,
3394 p_sp_earned_income_calc => l_calc_dct_rec.sp_earned_inc_calc,
3395 p_sp_business_income_calc => l_calc_dct_rec.sp_business_inc_calc,
3396 p_sp_miscellaneous_income_calc => l_calc_dct_rec.sp_miscellaneous_inc_calc,
3397 p_sp_dividend_income_calc => l_calc_dct_rec.sp_dividend_inc_calc,
3398 p_sp_real_estate_income_calc => l_calc_dct_rec.sp_real_estate_inc_calc,
3399 p_sp_retirement_income_calc => l_calc_dct_rec.sp_retirement_inc_calc,
3400 p_sp_other_income_calc => l_calc_dct_rec.sp_other_inc_calc,
3401 p_sp_income_calc => l_calc_dct_rec.sp_inc_calc,
3402 p_spouse_income => l_calc_dct_rec.spouse_inc,
3403 p_spouse_deduction => l_calc_dct_rec.spouse_deduction,
3404 p_object_version_number => l_object_version_number,
3405 p_life_gen_new_ins_prem => l_calc_dct_rec.life_gen_new_ins_prem,
3406 p_life_pens_new_ins_prem => l_calc_dct_rec.life_pens_new_ins_prem,
3407 p_life_gen_new_ins_calc_prem => l_calc_dct_rec.life_gen_new_ins_calc_prem,
3408 p_life_pens_new_ins_calc_prem => l_calc_dct_rec.life_pens_new_ins_calc_prem);
3409 --
3410 else
3411 --
3412 l_action_information_id := l_csr_calc_dct.action_information_id;
3413 l_object_version_number := l_csr_calc_dct.object_version_number;
3414 --
3415 -- calc_dct is always insert mode because no initial archive data.
3416 pay_jp_isdf_dml_pkg.update_calc_dct(
3417 p_action_information_id => l_action_information_id,
3418 p_object_version_number => l_object_version_number,
3419 p_status => 'I',
3420 p_life_gen_ins_prem => l_calc_dct_rec.life_gen_ins_prem,
3421 p_life_pens_ins_prem => l_calc_dct_rec.life_pens_ins_prem,
3422 p_life_gen_ins_calc_prem => l_calc_dct_rec.life_gen_ins_calc_prem,
3423 p_life_pens_ins_calc_prem => l_calc_dct_rec.life_pens_ins_calc_prem,
3424 p_life_ins_deduction => l_calc_dct_rec.life_ins_deduction,
3425 p_nonlife_long_ins_prem => l_calc_dct_rec.nonlife_long_ins_prem,
3426 p_nonlife_short_ins_prem => l_calc_dct_rec.nonlife_short_ins_prem,
3427 p_earthquake_ins_prem => l_calc_dct_rec.earthquake_ins_prem,
3428 p_nonlife_long_ins_calc_prem => l_calc_dct_rec.nonlife_long_ins_calc_prem,
3429 p_nonlife_short_ins_calc_prem => l_calc_dct_rec.nonlife_short_ins_calc_prem,
3430 p_earthquake_ins_calc_prem => l_calc_dct_rec.earthquake_ins_calc_prem,
3431 p_nonlife_ins_deduction => l_calc_dct_rec.nonlife_ins_deduction,
3432 p_national_pens_ins_prem => l_calc_dct_rec.national_pens_ins_prem,
3433 p_social_ins_deduction => l_calc_dct_rec.social_ins_deduction,
3434 p_mutual_aid_deduction => l_calc_dct_rec.mutual_aid_deduction,
3435 p_sp_earned_income_calc => l_calc_dct_rec.sp_earned_inc_calc,
3436 p_sp_business_income_calc => l_calc_dct_rec.sp_business_inc_calc,
3437 p_sp_miscellaneous_income_calc => l_calc_dct_rec.sp_miscellaneous_inc_calc,
3438 p_sp_dividend_income_calc => l_calc_dct_rec.sp_dividend_inc_calc,
3439 p_sp_real_estate_income_calc => l_calc_dct_rec.sp_real_estate_inc_calc,
3440 p_sp_retirement_income_calc => l_calc_dct_rec.sp_retirement_inc_calc,
3441 p_sp_other_income_calc => l_calc_dct_rec.sp_other_inc_calc,
3442 p_sp_income_calc => l_calc_dct_rec.sp_inc_calc,
3443 p_spouse_income => l_calc_dct_rec.spouse_inc,
3444 p_spouse_deduction => l_calc_dct_rec.spouse_deduction,
3445 p_life_gen_new_ins_prem => l_calc_dct_rec.life_gen_new_ins_prem,
3446 p_life_pens_new_ins_prem => l_calc_dct_rec.life_pens_new_ins_prem,
3447 p_life_gen_new_ins_calc_prem => l_calc_dct_rec.life_gen_new_ins_calc_prem,
3448 p_life_pens_new_ins_calc_prem => l_calc_dct_rec.life_pens_new_ins_calc_prem);
3449 --
3450 end if;
3451 --
3452 open csr_calc_dct2;
3453 fetch csr_calc_dct2 into l_csr_calc_dct2;
3454 close csr_calc_dct2;
3455
3456 if l_csr_calc_dct2.action_information_id is null then
3457 --
3458 select pay_action_information_s.nextval
3459 into l_action_information_id
3460 from dual;
3461 --
3462 pay_jp_isdf_dml_pkg.create_calc_dct2(
3463 p_action_information_id => l_action_information_id,
3464 p_assignment_action_id => l_assact_rec.assignment_action_id,
3465 p_action_context_type => 'AAP',
3466 p_assignment_id => l_assact_rec.assignment_id,
3467 p_effective_date => l_assact_rec.effective_date,
3468 p_action_information_category => 'JP_ISDF_CALC_DCT2',
3469 p_status => 'I',
3470 p_object_version_number => l_object_version_number,
3471 p_care_med_new_ins_prem => l_calc_dct_rec.care_med_new_ins_prem,
3472 p_care_med_new_ins_calc_prem => l_calc_dct_rec.care_med_new_ins_calc_prem);
3473 --
3474 else
3475 --
3476 l_action_information_id := l_csr_calc_dct2.action_information_id;
3477 l_object_version_number := l_csr_calc_dct2.object_version_number;
3478 --
3479 -- calc_dct is always insert mode because no initial archive data.
3480 pay_jp_isdf_dml_pkg.update_calc_dct2(
3481 p_action_information_id => l_action_information_id,
3482 p_object_version_number => l_object_version_number,
3483 p_status => 'I',
3484 p_care_med_new_ins_prem => l_calc_dct_rec.care_med_new_ins_prem,
3485 p_care_med_new_ins_calc_prem => l_calc_dct_rec.care_med_new_ins_calc_prem);
3486 --
3487 end if;
3488 --
3489 -- Originally jp_isdf_entry should be made at the time of transfer
3490 -- because latest pre-set entry data in the transfer time is not same
3491 -- as the condition at the time of archive.
3492 -- However, finalize action is to fix all entry data except for _o prefex columns,
3493 -- so make jp_isdf_entry.
3494 --
3495 open csr_entry;
3496 fetch csr_entry into l_csr_entry;
3497 close csr_entry;
3498 --
3499 if l_csr_entry.action_information_id is null then
3500 --
3501 select pay_action_information_s.nextval
3502 into l_action_information_id
3503 from dual;
3504 --
3505 pay_jp_isdf_dml_pkg.create_entry(
3506 p_action_information_id => l_action_information_id,
3507 p_assignment_action_id => l_assact_rec.assignment_action_id,
3508 p_action_context_type => 'AAP',
3509 p_assignment_id => l_assact_rec.assignment_id,
3510 p_effective_date => l_assact_rec.effective_date,
3511 p_action_information_category => 'JP_ISDF_ENTRY',
3512 p_status => 'I',
3513 p_ins_datetrack_update_mode => null,
3514 p_ins_element_entry_id => null,
3515 p_ins_ee_object_version_number => null,
3516 p_life_gen_ins_prem => l_calc_dct_rec.life_gen_ins_prem,
3517 p_life_gen_ins_prem_o => null,
3518 p_life_pens_ins_prem => l_calc_dct_rec.life_pens_ins_prem,
3519 p_life_pens_ins_prem_o => null,
3520 p_nonlife_long_ins_prem => l_calc_dct_rec.nonlife_long_ins_prem,
3521 p_nonlife_long_ins_prem_o => null,
3522 p_nonlife_short_ins_prem => l_calc_dct_rec.nonlife_short_ins_prem,
3523 p_nonlife_short_ins_prem_o => null,
3524 p_earthquake_ins_prem => l_calc_dct_rec.earthquake_ins_prem,
3525 p_earthquake_ins_prem_o => null,
3526 p_is_datetrack_update_mode => null,
3527 p_is_element_entry_id => null,
3528 p_is_ee_object_version_number => null,
3529 p_social_ins_prem => l_calc_dct_rec.social_ins_deduction,
3530 p_social_ins_prem_o => null,
3531 p_mutual_aid_prem => l_calc_dct_rec.mutual_aid_deduction,
3532 p_mutual_aid_prem_o => null,
3533 p_spouse_income => l_calc_dct_rec.spouse_inc,
3534 p_spouse_income_o => null,
3535 p_national_pens_ins_prem => l_calc_dct_rec.national_pens_ins_prem,
3536 p_national_pens_ins_prem_o => null,
3537 p_life_gen_ins_prem_new => l_calc_dct_rec.life_gen_new_ins_prem,
3538 p_life_pens_ins_prem_new => l_calc_dct_rec.life_pens_new_ins_prem,
3539 p_care_med_ins_prem_new => l_calc_dct_rec.care_med_new_ins_prem,
3540 p_object_version_number => l_object_version_number);
3541 --
3542 else
3543 --
3544 l_action_information_id := l_csr_entry.action_information_id;
3545 l_object_version_number := l_csr_entry.object_version_number;
3546 --
3547 -- if entry data was extracted from entry at the initial archive time,
3548 -- entry data has been set, otherwise, once the finalized entry data
3549 -- is changed to return status, then the data is finalized again in second time,
3550 -- it is not queried data and newly inserted in previous finalize time.
3551 -- so that the element_entry is not set, it means the previous finalized data.
3552 -- it can be overriden.
3553 --
3554 if l_csr_entry.ins_element_entry_id is not null
3555 or l_csr_entry.is_element_entry_id is not null then
3556 --
3557 pay_jp_isdf_dml_pkg.update_entry(
3558 p_action_information_id => l_action_information_id,
3559 p_object_version_number => l_object_version_number,
3560 p_status => 'Q',
3561 p_life_gen_ins_prem => l_calc_dct_rec.life_gen_ins_prem,
3562 p_life_gen_ins_prem_o => l_csr_entry.life_gen_ins_prem,
3563 p_life_pens_ins_prem => l_calc_dct_rec.life_pens_ins_prem,
3564 p_life_pens_ins_prem_o => l_csr_entry.life_pens_ins_prem,
3565 p_nonlife_long_ins_prem => l_calc_dct_rec.nonlife_long_ins_prem,
3566 p_nonlife_long_ins_prem_o => l_csr_entry.nonlife_long_ins_prem,
3567 p_nonlife_short_ins_prem => l_calc_dct_rec.nonlife_short_ins_prem,
3568 p_nonlife_short_ins_prem_o => l_csr_entry.nonlife_short_ins_prem,
3569 p_earthquake_ins_prem => l_calc_dct_rec.earthquake_ins_prem,
3570 p_earthquake_ins_prem_o => l_csr_entry.earthquake_ins_prem,
3571 p_social_ins_prem => l_calc_dct_rec.social_ins_deduction,
3572 p_social_ins_prem_o => l_csr_entry.social_ins_prem,
3573 p_mutual_aid_prem => l_calc_dct_rec.mutual_aid_deduction,
3574 p_mutual_aid_prem_o => l_csr_entry.mutual_aid_prem,
3575 p_spouse_income => l_calc_dct_rec.spouse_inc,
3576 p_spouse_income_o => l_csr_entry.spouse_income,
3577 p_national_pens_ins_prem => l_calc_dct_rec.national_pens_ins_prem,
3578 p_national_pens_ins_prem_o => l_csr_entry.national_pens_ins_prem,
3579 p_life_gen_ins_prem_new => l_calc_dct_rec.life_gen_new_ins_prem,
3580 p_life_pens_ins_prem_new => l_calc_dct_rec.life_pens_new_ins_prem,
3581 p_care_med_ins_prem_new => l_calc_dct_rec.care_med_new_ins_prem);
3582 --
3583 else
3584 --
3585 pay_jp_isdf_dml_pkg.update_entry(
3586 p_action_information_id => l_action_information_id,
3587 p_object_version_number => l_object_version_number,
3588 p_status => 'I',
3589 p_life_gen_ins_prem => l_calc_dct_rec.life_gen_ins_prem,
3590 p_life_gen_ins_prem_o => null,
3591 p_life_pens_ins_prem => l_calc_dct_rec.life_pens_ins_prem,
3592 p_life_pens_ins_prem_o => null,
3593 p_nonlife_long_ins_prem => l_calc_dct_rec.nonlife_long_ins_prem,
3594 p_nonlife_long_ins_prem_o => null,
3595 p_nonlife_short_ins_prem => l_calc_dct_rec.nonlife_short_ins_prem,
3596 p_nonlife_short_ins_prem_o => null,
3597 p_earthquake_ins_prem => l_calc_dct_rec.earthquake_ins_prem,
3598 p_earthquake_ins_prem_o => null,
3599 p_social_ins_prem => l_calc_dct_rec.social_ins_deduction,
3600 p_social_ins_prem_o => null,
3601 p_mutual_aid_prem => l_calc_dct_rec.mutual_aid_deduction,
3602 p_mutual_aid_prem_o => null,
3603 p_spouse_income => l_calc_dct_rec.spouse_inc,
3604 p_spouse_income_o => null,
3605 p_national_pens_ins_prem => l_calc_dct_rec.national_pens_ins_prem,
3606 p_national_pens_ins_prem_o => null,
3607 p_life_gen_ins_prem_new => l_calc_dct_rec.life_gen_new_ins_prem,
3608 p_life_pens_ins_prem_new => l_calc_dct_rec.life_pens_new_ins_prem,
3609 p_care_med_ins_prem_new => l_calc_dct_rec.care_med_new_ins_prem);
3610 --
3611 end if;
3612 --
3613 end if;
3614 --
3615 if g_debug then
3616 hr_utility.set_location(l_proc,20);
3617 hr_utility.trace('end calc_dct before finalize');
3618 end if;
3619 --
3620 if g_debug then
3621 hr_utility.set_location(l_proc,20);
3622 hr_utility.trace('action_information_id : '||p_action_information_id);
3623 hr_utility.trace('object_version_number : '||p_object_version_number);
3624 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3625 hr_utility.trace('start update_assact');
3626 end if;
3627 --
3628 p_object_version_number := l_assact_rec.object_version_number + 1;
3629 --
3630 --api is disable because assact has been locked.
3631 --pay_jp_isdf_dml_pkg.update_assact(
3632 -- p_action_information_id => l_assact_rec.assignment_action_id,
3633 -- p_object_version_number => p_object_version_number,
3634 -- p_transaction_status => 'F',
3635 -- p_finalized_date => fnd_date.date_to_canonical(l_submission_date),
3636 -- p_finalized_by => fnd_number.number_to_canonical(fnd_global.user_id),
3637 -- p_user_comments => p_user_comments,
3638 -- p_admin_comments => l_assact_rec.admin_comments,
3639 -- p_transfer_status => l_assact_rec.transfer_status,
3640 -- p_transfer_date => l_assact_rec.transfer_date,
3641 -- p_expiry_date => l_assact_rec.expiry_date);
3642 update pay_jp_isdf_assact_dml_v
3643 set object_version_number = p_object_version_number,
3644 transaction_status = 'F',
3645 finalized_date = fnd_date.date_to_canonical(l_submission_date),
3646 finalized_by = fnd_number.number_to_canonical(fnd_global.user_id),
3647 user_comments = p_user_comments
3648 where row_id = l_assact_rec.row_id;
3649 --
3650 if g_debug then
3651 hr_utility.trace('end update_assact');
3652 hr_utility.set_location(l_proc,1000);
3653 end if;
3654 --
3655 end do_finalize;
3656 --
3657 -- -------------------------------------------------------------------------
3658 -- do_reject
3659 -- -------------------------------------------------------------------------
3660 procedure do_reject(
3661 p_action_information_id in number,
3662 p_object_version_number in out nocopy number,
3663 p_admin_comments in varchar2)
3664 is
3665 --
3666 l_proc varchar2(80) := c_package||'do_finalize';
3667 l_submission_date date;
3668 l_assact_rec pay_jp_isdf_assact_v%rowtype;
3669 --
3670 begin
3671 --
3672 if g_debug then
3673 hr_utility.set_location(l_proc,0);
3674 end if;
3675 --
3676 l_submission_date := check_submission_period(p_action_information_id);
3677 --
3678 if g_debug then
3679 hr_utility.set_location(l_proc,10);
3680 hr_utility.trace('submission_date : '||fnd_date.date_to_canonical(l_submission_date));
3681 end if;
3682 --
3683 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
3684 --
3685 if l_assact_rec.transaction_status not in ('F', 'A') then
3686 fnd_message.set_name('PAY', 'PAY_JP_DEF_INVALID_TXN_STATUS');
3687 fnd_message.raise_error;
3688 elsif l_assact_rec.transfer_status <> 'U' then
3689 fnd_message.set_name('PAY','PAY_JP_DEF_ALREADY_TRANSFERRED');
3690 fnd_message.raise_error;
3691 end if;
3692 --
3693 if g_debug then
3694 hr_utility.set_location(l_proc,20);
3695 hr_utility.trace('action_information_id : '||p_action_information_id);
3696 hr_utility.trace('object_version_number : '||p_object_version_number);
3697 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3698 hr_utility.trace('start calc_dct before finalize');
3699 end if;
3700 --
3701 delete
3702 from pay_action_information
3703 where action_context_id = l_assact_rec.assignment_action_id
3704 and action_context_type = 'AAP'
3705 and action_information_category <> 'JP_ISDF_ASSACT';
3706 --
3707 if g_debug then
3708 hr_utility.set_location(l_proc,20);
3709 hr_utility.trace('action_information_id : '||p_action_information_id);
3710 hr_utility.trace('object_version_number : '||p_object_version_number);
3711 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3712 hr_utility.trace('start update_assact');
3713 end if;
3714 --
3715 p_object_version_number := l_assact_rec.object_version_number + 1;
3716 --
3717 --api is disable because assact has been locked.
3718 --pay_jp_isdf_dml_pkg.update_assact(
3719 -- p_action_information_id => l_assact_rec.assignment_action_id,
3720 -- p_object_version_number => p_object_version_number,
3721 -- p_transaction_status => 'U',
3722 -- p_finalized_date => null,
3723 -- p_finalized_by => null,
3724 -- p_user_comments => l_assact_rec.user_comments,
3725 -- p_admin_comments => p_admin_comments,
3726 -- p_transfer_status => l_assact_rec.transfer_status,
3727 -- p_transfer_date => l_assact_rec.transfer_date,
3728 -- p_expiry_date => l_assact_rec.expiry_date);
3729 update pay_jp_isdf_assact_dml_v
3730 set object_version_number = p_object_version_number,
3731 transaction_status = 'U',
3732 finalized_date = null,
3733 finalized_by = null,
3734 admin_comments = p_admin_comments
3735 where row_id = l_assact_rec.row_id;
3736 --
3737 if g_debug then
3738 hr_utility.trace('end update_assact');
3739 hr_utility.set_location(l_proc,1000);
3740 end if;
3741 --
3742 end do_reject;
3743 --
3744 -- -------------------------------------------------------------------------
3745 -- do_return
3746 -- -------------------------------------------------------------------------
3747 procedure do_return(
3748 p_action_information_id in number,
3749 p_object_version_number in out nocopy number,
3750 p_admin_comments in varchar2)
3751 is
3752 --
3753 l_proc varchar2(80) := c_package||'do_return';
3754 l_submission_date date;
3755 l_assact_rec pay_jp_isdf_assact_v%rowtype;
3756 --
3757 begin
3758 --
3759 if g_debug then
3760 hr_utility.set_location(l_proc,0);
3761 end if;
3762 --
3763 l_submission_date := check_submission_period(p_action_information_id);
3764 --
3765 if g_debug then
3766 hr_utility.set_location(l_proc,10);
3767 hr_utility.trace('submission_date : '||fnd_date.date_to_canonical(l_submission_date));
3768 end if;
3769 --
3770 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
3771 --
3772 if l_assact_rec.transaction_status not in ('F', 'A') then
3773 fnd_message.set_name('PAY', 'PAY_JP_DEF_INVALID_TXN_STATUS');
3774 fnd_message.raise_error;
3775 elsif l_assact_rec.transfer_status <> 'U' then
3776 fnd_message.set_name('PAY','PAY_JP_DEF_ALREADY_TRANSFERRED');
3777 fnd_message.raise_error;
3778 end if;
3779 --
3780 if g_debug then
3781 hr_utility.set_location(l_proc,20);
3782 hr_utility.trace('action_information_id : '||p_action_information_id);
3783 hr_utility.trace('object_version_number : '||p_object_version_number);
3784 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3785 hr_utility.trace('start calc_dct before finalize');
3786 end if;
3787 --
3788 if g_debug then
3789 hr_utility.set_location(l_proc,20);
3790 hr_utility.trace('action_information_id : '||p_action_information_id);
3791 hr_utility.trace('object_version_number : '||p_object_version_number);
3792 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3793 hr_utility.trace('start update_assact');
3794 end if;
3795 --
3796 p_object_version_number := l_assact_rec.object_version_number + 1;
3797 --
3798 --api is disable because assact has been locked.
3799 --pay_jp_isdf_dml_pkg.update_assact(
3800 -- p_action_information_id => l_assact_rec.assignment_action_id,
3801 -- p_object_version_number => p_object_version_number,
3802 -- p_transaction_status => 'N',
3803 -- p_finalized_date => null,
3804 -- p_finalized_by => null,
3805 -- p_user_comments => l_assact_rec.user_comments,
3806 -- p_admin_comments => p_admin_comments,
3807 -- p_transfer_status => l_assact_rec.transfer_status,
3808 -- p_transfer_date => l_assact_rec.transfer_date,
3809 -- p_expiry_date => l_assact_rec.expiry_date);
3810 update pay_jp_isdf_assact_dml_v
3811 set object_version_number = p_object_version_number,
3812 transaction_status = 'N',
3813 finalized_date = null,
3814 finalized_by = null,
3815 admin_comments = p_admin_comments
3816 where row_id = l_assact_rec.row_id;
3817 --
3818 if g_debug then
3819 hr_utility.trace('end update_assact');
3820 hr_utility.set_location(l_proc,1000);
3821 end if;
3822 --
3823 end do_return;
3824 --
3825 -- -------------------------------------------------------------------------
3826 -- do_approve
3827 -- -------------------------------------------------------------------------
3828 procedure do_approve(
3829 p_action_information_id in number,
3830 p_object_version_number in out nocopy number)
3831 is
3832 --
3833 l_proc varchar2(80) := c_package||'do_approve';
3834 l_assact_rec pay_jp_isdf_assact_v%rowtype;
3835 --
3836 begin
3837 --
3838 if g_debug then
3839 hr_utility.set_location(l_proc,0);
3840 end if;
3841 --
3842 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
3843 --
3844 if l_assact_rec.transaction_status <> 'F' then
3845 fnd_message.set_name('PAY', 'PAY_JP_DEF_INVALID_TXN_STATUS');
3846 fnd_message.raise_error;
3847 end if;
3848 --
3849 if g_debug then
3850 hr_utility.set_location(l_proc,20);
3851 hr_utility.trace('action_information_id : '||p_action_information_id);
3852 hr_utility.trace('object_version_number : '||p_object_version_number);
3853 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3854 hr_utility.trace('start calc_dct before finalize');
3855 end if;
3856 --
3857 if g_debug then
3858 hr_utility.set_location(l_proc,20);
3859 hr_utility.trace('action_information_id : '||p_action_information_id);
3860 hr_utility.trace('object_version_number : '||p_object_version_number);
3861 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
3862 hr_utility.trace('start update_assact');
3863 end if;
3864 --
3865 p_object_version_number := l_assact_rec.object_version_number + 1;
3866 --
3867 --api is disable because assact has been locked.
3868 --pay_jp_isdf_dml_pkg.update_assact(
3869 -- p_action_information_id => l_assact_rec.assignment_action_id,
3870 -- p_object_version_number => p_object_version_number,
3871 -- p_transaction_status => 'A',
3872 -- p_finalized_date => l_assact_rec.finalized_date,
3873 -- p_finalized_by => l_assact_rec.finalized_by,
3874 -- p_user_comments => l_assact_rec.user_comments,
3875 -- p_admin_comments => l_assact_rec.admin_comments,
3876 -- p_transfer_status => l_assact_rec.transfer_status,
3877 -- p_transfer_date => l_assact_rec.transfer_date,
3878 -- p_expiry_date => l_assact_rec.expiry_date);
3879 update pay_jp_isdf_assact_dml_v
3880 set object_version_number = p_object_version_number,
3881 transaction_status = 'A'
3882 where row_id = l_assact_rec.row_id;
3883 --
3884 if g_debug then
3885 hr_utility.trace('end update_assact');
3886 hr_utility.set_location(l_proc,1000);
3887 end if;
3888 --
3889 end do_approve;
3890 --
3891 -- -------------------------------------------------------------------------
3892 -- insert_session
3893 -- -------------------------------------------------------------------------
3894 procedure insert_session(
3895 p_effective_date in date)
3896 is
3897 --
3898 l_rowid rowid;
3899 --
3900 cursor csr_session
3901 is
3902 select rowid
3903 from fnd_sessions
3904 where session_id = userenv('sessionid')
3905 for update nowait;
3906 --
3907 begin
3908 --
3909 open csr_session;
3910 fetch csr_session into l_rowid;
3911 --
3912 if csr_session%notfound then
3913 --
3914 insert into fnd_sessions(
3915 session_id,
3916 effective_date)
3917 values(
3918 userenv('sessionid'),
3919 p_effective_date);
3920 --
3921 else
3922 --
3923 update fnd_sessions
3924 set effective_date = p_effective_date
3925 where rowid = l_rowid;
3926 --
3927 end if;
3928 --
3929 close csr_session;
3930 --
3931 end insert_session;
3932 --
3933 -- -------------------------------------------------------------------------
3934 -- delete_session
3935 -- -------------------------------------------------------------------------
3936 procedure delete_session
3937 is
3938 begin
3939 --
3940 delete
3941 from fnd_sessions
3942 where session_id = userenv('sessionid');
3943 --
3944 end delete_session;
3945 --
3946 -- -------------------------------------------------------------------------
3947 -- changed
3948 -- -------------------------------------------------------------------------
3949 function changed(
3950 value1 in varchar2,
3951 value2 in varchar2)
3952 return boolean
3953 is
3954 begin
3955 --
3956 if nvl(value1, hr_api.g_varchar2) <> nvl(value2, hr_api.g_varchar2) then
3957 return true;
3958 else
3959 return false;
3960 end if;
3961 --
3962 end changed;
3963 --
3964 function changed(
3965 value1 in number,
3966 value2 in number)
3967 return boolean
3968 is
3969 begin
3970 --
3971 if nvl(value1, hr_api.g_number) <> nvl(value2, hr_api.g_number) then
3972 return true;
3973 else
3974 return false;
3975 end if;
3976 --
3977 end changed;
3978 --
3979 function changed(
3980 value1 in date,
3981 value2 in date)
3982 return boolean
3983 is
3984 begin
3985 --
3986 if nvl(value1, hr_api.g_date) <> nvl(value2, hr_api.g_date) then
3987 return true;
3988 else
3989 return false;
3990 end if;
3991 --
3992 end changed;
3993 --
3994 -- -------------------------------------------------------------------------
3995 -- transfer_entry
3996 -- -------------------------------------------------------------------------
3997 procedure transfer_entry(
3998 p_rec in out nocopy pay_jp_isdf_entry_v%rowtype,
3999 p_effective_date in date,
4000 p_expire_after_transfer in varchar2)
4001 is
4002 --
4003 l_proc varchar2(80) := c_package||'transfer_entry';
4004 --
4005 l_effective_date date;
4006 l_esd date;
4007 l_eed date;
4008 l_warning boolean;
4009 l_ins_element_link_id number;
4010 l_is_element_link_id number;
4011 --
4012 l_ins_element_entry_id number;
4013 l_ins_ee_object_version_number number;
4014 l_ins_datetrack_update_mode pay_jp_isdf_entry_v.ins_datetrack_update_mode%type;
4015 l_is_element_entry_id number;
4016 l_is_ee_object_version_number number;
4017 l_is_datetrack_update_mode pay_jp_isdf_entry_v.is_datetrack_update_mode%type;
4018 l_status pay_jp_isdf_entry_v.status%type;
4019 --
4020 l_entry_rec pay_jp_isdf_archive_pkg.t_entry_rec;
4021 --
4022 cursor csr_pact
4023 is
4024 select /* +ORDERED */
4025 ppa.payroll_action_id,
4026 ppa.business_group_id,
4027 ppa.effective_date
4028 from pay_assignment_actions paa,
4029 pay_payroll_actions ppa
4030 where paa.assignment_action_id = p_rec.assignment_action_id
4031 and ppa.payroll_action_id = paa.payroll_action_id;
4032 --
4033 begin
4034 --
4035 if g_debug then
4036 hr_utility.set_location(l_proc,0);
4037 end if;
4038 --
4039 if p_effective_date is null then
4040 l_effective_date := p_rec.effective_date;
4041 else
4042 l_effective_date := p_effective_date;
4043 end if;
4044 --
4045 -- re-extract current entry data on transfer date
4046 -- since jp_isdf_entry data was extracted on archive date.
4047 --
4048 if g_business_group_id is null
4049 or g_effective_date is null
4050 or g_effective_date <> l_effective_date then
4051 --
4052 g_payroll_action_id := null;
4053 g_business_group_id := null;
4054 g_effective_date := null;
4055 --
4056 open csr_pact;
4057 fetch csr_pact into g_payroll_action_id, g_business_group_id, g_effective_date;
4058 close csr_pact;
4059 --
4060 end if;
4061 --
4062 pay_jp_isdf_archive_pkg.fetch_entry(
4063 p_assignment_id => p_rec.assignment_id,
4064 p_business_group_id => g_business_group_id,
4065 p_effective_date => l_effective_date,
4066 p_entry_rec => l_entry_rec);
4067 --
4068 if p_rec.status = 'I' then
4069 --
4070 -- even if rec status is 'I', eev might setup by manually at transfer run time.
4071 -- when entry exists, use new ovn, update mode at transfer time instead of stored data.
4072 if l_entry_rec.ins_entry_cnt > 0 then
4073 --
4074 pay_element_entry_api.update_element_entry(
4075 p_validate => false,
4076 p_effective_date => l_effective_date,
4077 p_business_group_id => g_business_group_id,
4078 p_datetrack_update_mode => l_entry_rec.ins_datetrack_update_mode,
4079 p_element_entry_id => l_entry_rec.ins_element_entry_id,
4080 p_object_version_number => l_entry_rec.ins_ee_object_version_number,
4081 p_input_value_id1 => c_life_gen_iv_id,
4082 p_input_value_id2 => c_life_pens_iv_id,
4083 p_input_value_id3 => c_nonlife_long_iv_id,
4084 p_input_value_id4 => c_nonlife_short_iv_id,
4085 p_input_value_id5 => c_earthquake_iv_id,
4086 p_input_value_id6 => c_life_gen_new_iv_id,
4087 p_input_value_id7 => c_life_pens_new_iv_id,
4088 p_input_value_id8 => c_care_med_new_iv_id,
4089 p_entry_value1 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem),
4090 p_entry_value2 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem),
4091 p_entry_value3 => fnd_number.number_to_canonical(p_rec.nonlife_long_ins_prem),
4092 p_entry_value4 => fnd_number.number_to_canonical(p_rec.nonlife_short_ins_prem),
4093 p_entry_value5 => fnd_number.number_to_canonical(p_rec.earthquake_ins_prem),
4094 p_entry_value6 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem_new),
4095 p_entry_value7 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem_new),
4096 p_entry_value8 => fnd_number.number_to_canonical(p_rec.care_med_ins_prem_new),
4097 p_effective_start_date => l_esd,
4098 p_effective_end_date => l_eed,
4099 p_update_warning => l_warning);
4100 --
4101 p_rec.status := 'Q';
4102 l_ins_element_entry_id := l_entry_rec.ins_element_entry_id;
4103 l_ins_ee_object_version_number := l_entry_rec.ins_ee_object_version_number;
4104 l_ins_datetrack_update_mode := l_entry_rec.ins_datetrack_update_mode;
4105 --
4106 else
4107 --
4108 l_ins_element_link_id := hr_entry_api.get_link(
4109 p_assignment_id => p_rec.assignment_id,
4110 p_element_type_id => c_isdf_ins_elm_id,
4111 p_session_date => l_effective_date);
4112 --
4113 if l_ins_element_link_id is null then
4114 fnd_message.set_name('PAY', 'PAY_JP_ISDF_NO_ELE_LINK');
4115 fnd_message.set_token('ELE_NAME',c_isdf_ins_elm);
4116 fnd_message.raise_error;
4117 end if;
4118 --
4119 pay_element_entry_api.create_element_entry(
4120 p_validate => false,
4121 p_effective_date => l_effective_date,
4122 p_business_group_id => g_business_group_id,
4123 p_assignment_id => p_rec.assignment_id,
4124 p_element_link_id => l_ins_element_link_id,
4125 p_entry_type => 'E',
4126 p_input_value_id1 => c_life_gen_iv_id,
4127 p_input_value_id2 => c_life_pens_iv_id,
4128 p_input_value_id3 => c_nonlife_long_iv_id,
4129 p_input_value_id4 => c_nonlife_short_iv_id,
4130 p_input_value_id5 => c_earthquake_iv_id,
4131 p_input_value_id6 => c_life_gen_new_iv_id,
4132 p_input_value_id7 => c_life_pens_new_iv_id,
4133 p_input_value_id8 => c_care_med_new_iv_id,
4134 p_entry_value1 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem),
4135 p_entry_value2 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem),
4136 p_entry_value3 => fnd_number.number_to_canonical(p_rec.nonlife_long_ins_prem),
4137 p_entry_value4 => fnd_number.number_to_canonical(p_rec.nonlife_short_ins_prem),
4138 p_entry_value5 => fnd_number.number_to_canonical(p_rec.earthquake_ins_prem),
4139 p_entry_value6 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem_new),
4140 p_entry_value7 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem_new),
4141 p_entry_value8 => fnd_number.number_to_canonical(p_rec.care_med_ins_prem_new),
4142 p_element_entry_id => p_rec.ins_element_entry_id,
4143 p_object_version_number => p_rec.ins_ee_object_version_number,
4144 p_effective_start_date => l_esd,
4145 p_effective_end_date => l_eed,
4146 p_create_warning => l_warning);
4147 --
4148 l_ins_element_entry_id := p_rec.ins_element_entry_id;
4149 l_ins_ee_object_version_number := p_rec.ins_ee_object_version_number;
4150 l_ins_datetrack_update_mode := pay_jp_isdf_archive_pkg.ee_datetrack_update_mode(p_rec.ins_element_entry_id,l_esd,l_eed,l_effective_date);
4151 --
4152 end if;
4153 --
4154 -- even if rec status is 'I', eev might setup by manually at transfer run time.
4155 -- when entry exists, use new ovn, update mode at transfer time instead of stored data.
4156 if l_entry_rec.is_entry_cnt > 0 then
4157 --
4158 pay_element_entry_api.update_element_entry(
4159 p_validate => false,
4160 p_effective_date => l_effective_date,
4161 p_business_group_id => g_business_group_id,
4162 p_datetrack_update_mode => l_entry_rec.is_datetrack_update_mode,
4163 p_element_entry_id => l_entry_rec.is_element_entry_id,
4164 p_object_version_number => l_entry_rec.is_ee_object_version_number,
4165 p_input_value_id5 => c_social_iv_id,
4166 p_input_value_id6 => c_mutual_aid_iv_id,
4167 p_input_value_id7 => c_spouse_iv_id,
4168 p_input_value_id9 => c_national_pens_iv_id,
4169 p_entry_value5 => fnd_number.number_to_canonical(p_rec.social_ins_prem),
4170 p_entry_value6 => fnd_number.number_to_canonical(p_rec.mutual_aid_prem),
4171 p_entry_value7 => fnd_number.number_to_canonical(p_rec.spouse_income),
4172 p_entry_value9 => fnd_number.number_to_canonical(p_rec.national_pens_ins_prem),
4173 p_effective_start_date => l_esd,
4174 p_effective_end_date => l_eed,
4175 p_update_warning => l_warning);
4176 --
4177 p_rec.status := 'Q';
4178 l_is_element_entry_id := l_entry_rec.is_element_entry_id;
4179 l_is_ee_object_version_number := l_entry_rec.is_ee_object_version_number;
4180 l_is_datetrack_update_mode := l_entry_rec.is_datetrack_update_mode;
4181 --
4182 else
4183 --
4184 l_is_element_link_id := hr_entry_api.get_link(
4185 p_assignment_id => p_rec.assignment_id,
4186 p_element_type_id => c_isdf_is_elm_id,
4187 p_session_date => l_effective_date);
4188 --
4189 if l_is_element_link_id is null then
4190 fnd_message.set_name('PAY', 'PAY_JP_ISDF_NO_ELE_LINK');
4191 fnd_message.set_token('ELE_NAME',c_isdf_is_elm);
4192 fnd_message.raise_error;
4193 end if;
4194 --
4195 pay_element_entry_api.create_element_entry(
4196 p_validate => false,
4197 p_effective_date => l_effective_date,
4198 p_business_group_id => g_business_group_id,
4199 p_assignment_id => p_rec.assignment_id,
4200 p_element_link_id => l_is_element_link_id,
4201 p_entry_type => 'E',
4202 p_input_value_id5 => c_social_iv_id,
4203 p_input_value_id6 => c_mutual_aid_iv_id,
4204 p_input_value_id7 => c_spouse_iv_id,
4205 p_input_value_id9 => c_national_pens_iv_id,
4206 p_entry_value5 => fnd_number.number_to_canonical(p_rec.social_ins_prem),
4207 p_entry_value6 => fnd_number.number_to_canonical(p_rec.mutual_aid_prem),
4208 p_entry_value7 => fnd_number.number_to_canonical(p_rec.spouse_income),
4209 p_entry_value9 => fnd_number.number_to_canonical(p_rec.national_pens_ins_prem),
4210 p_element_entry_id => p_rec.is_element_entry_id,
4211 p_object_version_number => p_rec.is_ee_object_version_number,
4212 p_effective_start_date => l_esd,
4213 p_effective_end_date => l_eed,
4214 p_create_warning => l_warning);
4215 --
4216 l_is_element_entry_id := p_rec.is_element_entry_id;
4217 l_is_ee_object_version_number := p_rec.is_ee_object_version_number;
4218 l_is_datetrack_update_mode := pay_jp_isdf_archive_pkg.ee_datetrack_update_mode(p_rec.is_element_entry_id,l_esd,l_eed,l_effective_date);
4219 --
4220 end if;
4221 --
4222 p_rec.object_version_number := p_rec.object_version_number + 1;
4223 --
4224 if p_expire_after_transfer = 'Y' then
4225 l_status := 'D';
4226 -- p_rec.status = 'I' or 'Q' is now 'Q' because eev exists.
4227 else
4228 l_status := 'Q';
4229 end if;
4230 --
4231 -- revised old data at archive time to the latest extracted data.
4232 if p_rec.status = 'Q' then
4233 --
4234 update pay_jp_isdf_entry_dml_v
4235 set object_version_number = p_rec.object_version_number,
4236 status = l_status,
4237 ins_datetrack_update_mode = l_ins_datetrack_update_mode,
4238 ins_element_entry_id = fnd_number.number_to_canonical(l_ins_element_entry_id),
4239 ins_ee_object_version_number = fnd_number.number_to_canonical(l_ins_ee_object_version_number),
4240 life_gen_ins_prem_o = l_entry_rec.life_gen_ins_prem,
4241 life_pens_ins_prem_o = l_entry_rec.life_pens_ins_prem,
4242 nonlife_long_ins_prem_o = l_entry_rec.nonlife_long_ins_prem,
4243 nonlife_short_ins_prem_o = l_entry_rec.nonlife_short_ins_prem,
4244 earthquake_ins_prem_o = l_entry_rec.earthquake_ins_prem,
4245 is_datetrack_update_mode = l_is_datetrack_update_mode,
4246 is_element_entry_id = fnd_number.number_to_canonical(l_is_element_entry_id),
4247 is_ee_object_version_number = fnd_number.number_to_canonical(l_is_ee_object_version_number),
4248 social_ins_prem_o = l_entry_rec.social_ins_prem,
4249 mutual_aid_prem_o = l_entry_rec.mutual_aid_prem,
4250 spouse_income_o = l_entry_rec.spouse_income,
4251 national_pens_ins_prem_o = l_entry_rec.national_pens_ins_prem,
4252 life_gen_ins_prem_new = l_entry_rec.life_gen_ins_prem_new,
4253 life_pens_ins_prem_new = l_entry_rec.life_pens_ins_prem_new,
4254 care_med_ins_prem_new = l_entry_rec.care_med_ins_prem_new
4255 where row_id = p_rec.row_id;
4256 --
4257 else
4258 --
4259 update pay_jp_isdf_entry_dml_v
4260 set object_version_number = p_rec.object_version_number,
4261 status = l_status,
4262 ins_datetrack_update_mode = l_ins_datetrack_update_mode,
4263 is_datetrack_update_mode = l_is_datetrack_update_mode,
4264 ins_element_entry_id = fnd_number.number_to_canonical(l_ins_element_entry_id),
4265 is_element_entry_id = fnd_number.number_to_canonical(l_is_element_entry_id),
4266 ins_ee_object_version_number = fnd_number.number_to_canonical(l_ins_ee_object_version_number),
4267 is_ee_object_version_number = fnd_number.number_to_canonical(l_is_ee_object_version_number)
4268 where row_id = p_rec.row_id;
4269 --
4270 end if;
4271 --
4272 elsif p_rec.status = 'Q' then
4273 --
4274 -- even if rec status is 'Q', eev might removed. specially if archive time is
4275 -- before december, the eev might not be set on december, transfer time.
4276 -- when entry exists, use new ovn, update mode at transfer time instead of stored data.
4277 if l_entry_rec.ins_entry_cnt > 0 then
4278 --
4279 if changed(p_rec.life_gen_ins_prem,l_entry_rec.life_gen_ins_prem)
4280 or changed(p_rec.life_pens_ins_prem,l_entry_rec.life_pens_ins_prem)
4281 or changed(p_rec.nonlife_long_ins_prem,l_entry_rec.nonlife_long_ins_prem)
4282 or ((l_effective_date < c_st_upd_date_2007 and changed(p_rec.nonlife_short_ins_prem,l_entry_rec.nonlife_short_ins_prem))
4283 or (l_effective_date >= c_st_upd_date_2007 and changed(p_rec.earthquake_ins_prem,l_entry_rec.earthquake_ins_prem)))
4284 or changed(p_rec.life_gen_ins_prem_new,l_entry_rec.life_gen_ins_prem_new)
4285 or changed(p_rec.life_pens_ins_prem_new,l_entry_rec.life_pens_ins_prem_new)
4286 or changed(p_rec.care_med_ins_prem_new,l_entry_rec.care_med_ins_prem_new) then
4287 --
4288 pay_element_entry_api.update_element_entry(
4289 p_validate => false,
4290 p_effective_date => l_effective_date,
4291 p_business_group_id => g_business_group_id,
4292 p_datetrack_update_mode => l_entry_rec.ins_datetrack_update_mode,
4293 p_element_entry_id => l_entry_rec.ins_element_entry_id,
4294 p_object_version_number => l_entry_rec.ins_ee_object_version_number,
4295 p_input_value_id1 => c_life_gen_iv_id,
4296 p_input_value_id2 => c_life_pens_iv_id,
4297 p_input_value_id3 => c_nonlife_long_iv_id,
4298 p_input_value_id4 => c_nonlife_short_iv_id,
4299 p_input_value_id5 => c_earthquake_iv_id,
4300 p_input_value_id6 => c_life_gen_new_iv_id,
4301 p_input_value_id7 => c_life_pens_new_iv_id,
4302 p_input_value_id8 => c_care_med_new_iv_id,
4303 p_entry_value1 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem),
4304 p_entry_value2 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem),
4305 p_entry_value3 => fnd_number.number_to_canonical(p_rec.nonlife_long_ins_prem),
4306 p_entry_value4 => fnd_number.number_to_canonical(p_rec.nonlife_short_ins_prem),
4307 p_entry_value5 => fnd_number.number_to_canonical(p_rec.earthquake_ins_prem),
4308 p_entry_value6 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem_new),
4309 p_entry_value7 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem_new),
4310 p_entry_value8 => fnd_number.number_to_canonical(p_rec.care_med_ins_prem_new),
4311 p_effective_start_date => l_esd,
4312 p_effective_end_date => l_eed,
4313 p_update_warning => l_warning);
4314 --
4315 end if;
4316 --
4317 l_ins_element_entry_id := l_entry_rec.ins_element_entry_id;
4318 l_ins_ee_object_version_number := l_entry_rec.ins_ee_object_version_number;
4319 l_ins_datetrack_update_mode := l_entry_rec.ins_datetrack_update_mode;
4320 --
4321 else
4322 --
4323 -- this status soonly will be changed to 'Q' after insert.
4324 p_rec.status := 'I';
4325 --
4326 l_ins_element_link_id := hr_entry_api.get_link(
4327 p_assignment_id => p_rec.assignment_id,
4328 p_element_type_id => c_isdf_ins_elm_id,
4329 p_session_date => l_effective_date);
4330 --
4331 if l_ins_element_link_id is null then
4332 fnd_message.set_name('PAY', 'PAY_JP_ISDF_NO_ELE_LINK');
4333 fnd_message.set_token('ELE_NAME',c_isdf_ins_elm);
4334 fnd_message.raise_error;
4335 end if;
4336 --
4337 pay_element_entry_api.create_element_entry(
4338 p_validate => false,
4339 p_effective_date => l_effective_date,
4340 p_business_group_id => g_business_group_id,
4341 p_assignment_id => p_rec.assignment_id,
4342 p_element_link_id => l_ins_element_link_id,
4343 p_entry_type => 'E',
4344 p_input_value_id1 => c_life_gen_iv_id,
4345 p_input_value_id2 => c_life_pens_iv_id,
4346 p_input_value_id3 => c_nonlife_long_iv_id,
4347 p_input_value_id4 => c_nonlife_short_iv_id,
4348 p_input_value_id5 => c_earthquake_iv_id,
4349 p_input_value_id6 => c_life_gen_new_iv_id,
4350 p_input_value_id7 => c_life_pens_new_iv_id,
4351 p_input_value_id8 => c_care_med_new_iv_id,
4352 p_entry_value1 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem),
4353 p_entry_value2 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem),
4354 p_entry_value3 => fnd_number.number_to_canonical(p_rec.nonlife_long_ins_prem),
4355 p_entry_value4 => fnd_number.number_to_canonical(p_rec.nonlife_short_ins_prem),
4356 p_entry_value5 => fnd_number.number_to_canonical(p_rec.earthquake_ins_prem),
4357 p_entry_value6 => fnd_number.number_to_canonical(p_rec.life_gen_ins_prem_new),
4358 p_entry_value7 => fnd_number.number_to_canonical(p_rec.life_pens_ins_prem_new),
4359 p_entry_value8 => fnd_number.number_to_canonical(p_rec.care_med_ins_prem_new),
4360 p_element_entry_id => p_rec.ins_element_entry_id,
4361 p_object_version_number => p_rec.ins_ee_object_version_number,
4362 p_effective_start_date => l_esd,
4363 p_effective_end_date => l_eed,
4364 p_create_warning => l_warning);
4365 --
4366 l_ins_element_entry_id := p_rec.ins_element_entry_id;
4367 l_ins_ee_object_version_number := p_rec.ins_ee_object_version_number;
4368 l_ins_datetrack_update_mode := pay_jp_isdf_archive_pkg.ee_datetrack_update_mode(p_rec.ins_element_entry_id,l_esd,l_eed,l_effective_date);
4369 --
4370 end if;
4371 --
4372 -- even if rec status is 'Q', eev might removed. specially if archive time is
4373 -- before december, the eev might not be set on december, transfer time.
4374 -- when entry exists, use new ovn, update mode at transfer time instead of stored data.
4375 if l_entry_rec.is_entry_cnt > 0 then
4376 --
4377 if changed(p_rec.social_ins_prem,l_entry_rec.social_ins_prem)
4378 or changed(p_rec.mutual_aid_prem,l_entry_rec.mutual_aid_prem)
4379 or changed(p_rec.spouse_income,l_entry_rec.spouse_income)
4380 or changed(p_rec.national_pens_ins_prem,l_entry_rec.national_pens_ins_prem) then
4381 --
4382 pay_element_entry_api.update_element_entry(
4383 p_validate => false,
4384 p_effective_date => l_effective_date,
4385 p_business_group_id => g_business_group_id,
4386 p_datetrack_update_mode => l_entry_rec.is_datetrack_update_mode,
4387 p_element_entry_id => l_entry_rec.is_element_entry_id,
4388 p_object_version_number => l_entry_rec.is_ee_object_version_number,
4389 p_input_value_id5 => c_social_iv_id,
4390 p_input_value_id6 => c_mutual_aid_iv_id,
4391 p_input_value_id7 => c_spouse_iv_id,
4392 p_input_value_id9 => c_national_pens_iv_id,
4393 p_entry_value5 => fnd_number.number_to_canonical(p_rec.social_ins_prem),
4394 p_entry_value6 => fnd_number.number_to_canonical(p_rec.mutual_aid_prem),
4395 p_entry_value7 => fnd_number.number_to_canonical(p_rec.spouse_income),
4396 p_entry_value9 => fnd_number.number_to_canonical(p_rec.national_pens_ins_prem),
4397 p_effective_start_date => l_esd,
4398 p_effective_end_date => l_eed,
4399 p_update_warning => l_warning);
4400 --
4401 end if;
4402 --
4403 l_is_element_entry_id := l_entry_rec.is_element_entry_id;
4404 l_is_ee_object_version_number := l_entry_rec.is_ee_object_version_number;
4405 l_is_datetrack_update_mode := l_entry_rec.is_datetrack_update_mode;
4406 --
4407 else
4408 --
4409 -- this status soonly will be changed to 'Q' after insert.
4410 p_rec.status := 'I';
4411 --
4412 l_is_element_link_id := hr_entry_api.get_link(
4413 p_assignment_id => p_rec.assignment_id,
4414 p_element_type_id => c_isdf_is_elm_id,
4415 p_session_date => l_effective_date);
4416 --
4417 if l_is_element_link_id is null then
4418 fnd_message.set_name('PAY', 'PAY_JP_ISDF_NO_ELE_LINK');
4419 fnd_message.set_token('ELE_NAME',c_isdf_is_elm);
4420 fnd_message.raise_error;
4421 end if;
4422 --
4423 pay_element_entry_api.create_element_entry(
4424 p_validate => false,
4425 p_effective_date => l_effective_date,
4426 p_business_group_id => g_business_group_id,
4427 p_assignment_id => p_rec.assignment_id,
4428 p_element_link_id => l_is_element_link_id,
4429 p_entry_type => 'E',
4430 p_input_value_id5 => c_social_iv_id,
4431 p_input_value_id6 => c_mutual_aid_iv_id,
4432 p_input_value_id7 => c_spouse_iv_id,
4433 p_input_value_id9 => c_national_pens_iv_id,
4434 p_entry_value5 => fnd_number.number_to_canonical(p_rec.social_ins_prem),
4435 p_entry_value6 => fnd_number.number_to_canonical(p_rec.mutual_aid_prem),
4436 p_entry_value7 => fnd_number.number_to_canonical(p_rec.spouse_income),
4437 p_entry_value9 => fnd_number.number_to_canonical(p_rec.national_pens_ins_prem),
4438 p_element_entry_id => p_rec.is_element_entry_id,
4439 p_object_version_number => p_rec.is_ee_object_version_number,
4440 p_effective_start_date => l_esd,
4441 p_effective_end_date => l_eed,
4442 p_create_warning => l_warning);
4443 --
4444 l_is_element_entry_id := p_rec.is_element_entry_id;
4445 l_is_ee_object_version_number := p_rec.is_ee_object_version_number;
4446 l_is_datetrack_update_mode := pay_jp_isdf_archive_pkg.ee_datetrack_update_mode(p_rec.is_element_entry_id,l_esd,l_eed,l_effective_date);
4447 --
4448 end if;
4449 --
4450 p_rec.object_version_number := p_rec.object_version_number + 1;
4451 --
4452 if p_expire_after_transfer = 'Y' then
4453 l_status := 'D';
4454 else
4455 -- p_rec.status = 'I' or 'Q' is now 'Q' because eev exists.
4456 l_status := 'Q';
4457 end if;
4458 --
4459 -- revised old data at archive time to the latest extracted data.
4460 if p_rec.status = 'Q' then
4461 --
4462 update pay_jp_isdf_entry_dml_v
4463 set object_version_number = p_rec.object_version_number,
4464 status = l_status,
4465 ins_datetrack_update_mode = l_ins_datetrack_update_mode,
4466 ins_element_entry_id = fnd_number.number_to_canonical(l_ins_element_entry_id),
4467 ins_ee_object_version_number = fnd_number.number_to_canonical(l_ins_ee_object_version_number),
4468 life_gen_ins_prem_o = l_entry_rec.life_gen_ins_prem,
4469 life_pens_ins_prem_o = l_entry_rec.life_pens_ins_prem,
4470 nonlife_long_ins_prem_o = l_entry_rec.nonlife_long_ins_prem,
4471 nonlife_short_ins_prem_o = l_entry_rec.nonlife_short_ins_prem,
4472 earthquake_ins_prem_o = l_entry_rec.earthquake_ins_prem,
4473 is_datetrack_update_mode = l_is_datetrack_update_mode,
4474 is_element_entry_id = fnd_number.number_to_canonical(l_is_element_entry_id),
4475 is_ee_object_version_number = fnd_number.number_to_canonical(l_is_ee_object_version_number),
4476 social_ins_prem_o = l_entry_rec.social_ins_prem,
4477 mutual_aid_prem_o = l_entry_rec.mutual_aid_prem,
4478 spouse_income_o = l_entry_rec.spouse_income,
4479 national_pens_ins_prem_o = l_entry_rec.national_pens_ins_prem,
4480 life_gen_ins_prem_new = l_entry_rec.life_gen_ins_prem_new,
4481 life_pens_ins_prem_new = l_entry_rec.life_pens_ins_prem_new,
4482 care_med_ins_prem_new = l_entry_rec.care_med_ins_prem_new
4483 where row_id = p_rec.row_id;
4484 --
4485 else
4486 --
4487 update pay_jp_isdf_entry_dml_v
4488 set object_version_number = p_rec.object_version_number,
4489 status = l_status,
4490 ins_datetrack_update_mode = l_ins_datetrack_update_mode,
4491 ins_element_entry_id = fnd_number.number_to_canonical(l_ins_element_entry_id),
4492 ins_ee_object_version_number = fnd_number.number_to_canonical(l_ins_ee_object_version_number),
4493 life_gen_ins_prem_o = null,
4494 life_pens_ins_prem_o = null,
4495 nonlife_long_ins_prem_o = null,
4496 nonlife_short_ins_prem_o = null,
4497 earthquake_ins_prem_o = null,
4498 is_datetrack_update_mode = l_is_datetrack_update_mode,
4499 is_element_entry_id = fnd_number.number_to_canonical(l_is_element_entry_id),
4500 is_ee_object_version_number = fnd_number.number_to_canonical(l_is_ee_object_version_number),
4501 social_ins_prem_o = null,
4502 mutual_aid_prem_o = null,
4503 spouse_income_o = null,
4504 national_pens_ins_prem_o = null
4505 where row_id = p_rec.row_id;
4506 --
4507 end if;
4508 --
4509 end if;
4510 --
4511 if g_debug then
4512 hr_utility.trace('end update_assact');
4513 hr_utility.set_location(l_proc,1000);
4514 end if;
4515 --
4516 end transfer_entry;
4517 --
4518 -- -------------------------------------------------------------------------
4519 -- transfer_life_gen
4520 -- -------------------------------------------------------------------------
4521 procedure transfer_life_gen(
4522 p_rec in out nocopy pay_jp_isdf_life_gen_v%rowtype,
4523 p_effective_date in date,
4524 p_expire_after_transfer in varchar2)
4525 is
4526 --
4527 l_proc varchar2(80) := c_package||'transfer_entry';
4528 --
4529 cursor csr_aei
4530 is
4531 select *
4532 from per_assignment_extra_info
4533 where assignment_extra_info_id = p_rec.assignment_extra_info_id;
4534 --
4535 l_csr_aei csr_aei%rowtype;
4536 l_effective_date date;
4537 --
4538 begin
4539 --
4540 if g_debug then
4541 hr_utility.set_location(l_proc,0);
4542 end if;
4543 --
4544 if p_effective_date is null then
4545 l_effective_date := p_rec.effective_date;
4546 else
4547 l_effective_date := p_effective_date;
4548 end if;
4549 --
4550 -- currently this is not supported that newly inserted data can be transfered.
4551 if p_rec.status = 'I' then
4552 --
4553 -- validation is required
4554 -- to disable insert ins_class and comp_code into action table
4555 -- because those are managed in master Org DF and
4556 -- to disable to insert annual prem even ins_class is LINC
4557 -- because the column should be derived from LINC loading data
4558 -- the field is not for override basically.
4559 hr_assignment_extra_info_api.create_assignment_extra_info(
4560 p_validate => false,
4561 p_assignment_id => p_rec.assignment_id,
4562 p_information_type => 'JP_ASS_LIG_INFO',
4563 p_aei_information_category => 'JP_ASS_LIG_INFO',
4564 p_aei_information1 => p_rec.gen_ins_class,
4565 p_aei_information2 => p_rec.gen_ins_company_code,
4566 p_aei_information3 => fnd_date.date_to_canonical(l_effective_date),
4567 p_aei_information4 => '',
4568 p_aei_information5 => p_rec.ins_type,
4569 p_aei_information6 => p_rec.ins_period,
4570 p_aei_information7 => p_rec.contractor_name,
4571 p_aei_information8 => p_rec.beneficiary_name,
4572 p_aei_information9 => p_rec.beneficiary_relship,
4573 p_aei_information10 => '',
4574 p_aei_information12 => p_rec.gen_ins_class_old_new,
4575 p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
4576 p_object_version_number => p_rec.aei_object_version_number);
4577 --
4578 p_rec.object_version_number := p_rec.object_version_number + 1;
4579 --
4580 if p_expire_after_transfer = 'Y' then
4581 p_rec.status := 'D';
4582 end if;
4583 --
4584 update pay_jp_isdf_life_gen_dml_v
4585 set object_version_number = p_rec.object_version_number,
4586 status = p_rec.status,
4587 assignment_extra_info_id = fnd_number.number_to_canonical(p_rec.assignment_extra_info_id),
4588 aei_object_version_number = fnd_number.number_to_canonical(p_rec.aei_object_version_number)
4589 where row_id = p_rec.row_id;
4590 --
4591 -- currently only support case of update entry data (except for amendment of ins_class and code)
4592 -- additionally not support if eit has been removed at the transferred time
4593 -- even if the eit existed at the archive time.
4594 elsif p_rec.status = 'Q' then
4595 --
4596 open csr_aei;
4597 fetch csr_aei into l_csr_aei;
4598 close csr_aei;
4599 --
4600 -- support only update in case eit exists at the transfer time.
4601 if l_csr_aei.assignment_extra_info_id is not null then
4602 --
4603 if changed(p_rec.ins_type,l_csr_aei.aei_information5)
4604 or changed(p_rec.ins_period,l_csr_aei.aei_information6)
4605 or changed(p_rec.contractor_name,l_csr_aei.aei_information7)
4606 or changed(p_rec.beneficiary_name,l_csr_aei.aei_information8)
4607 or changed(p_rec.beneficiary_relship,l_csr_aei.aei_information9)
4608 or changed(p_rec.gen_ins_class_old_new,l_csr_aei.aei_information12) then
4609 --
4610 -- validation is required
4611 -- to disable update ins_class and comp_code into action table
4612 -- because those are managed in master Org DF and
4613 -- to disable to update annual prem even ins_class is LINC
4614 -- because the column should be derived from LINC loading data
4615 -- the field is not for override basically.
4616 --
4617 hr_assignment_extra_info_api.update_assignment_extra_info(
4618 p_validate => false,
4619 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
4620 p_object_version_number => l_csr_aei.object_version_number,
4621 p_aei_information_category => 'JP_ASS_LIG_INFO',
4622 p_aei_information1 => l_csr_aei.aei_information1,
4623 p_aei_information2 => l_csr_aei.aei_information2,
4624 p_aei_information3 => l_csr_aei.aei_information3,
4625 p_aei_information4 => l_csr_aei.aei_information4,
4626 p_aei_information5 => p_rec.ins_type,
4627 p_aei_information6 => p_rec.ins_period,
4628 p_aei_information7 => p_rec.contractor_name,
4629 p_aei_information8 => p_rec.beneficiary_name,
4630 p_aei_information9 => p_rec.beneficiary_relship,
4631 p_aei_information10 => l_csr_aei.aei_information10,
4632 p_aei_information12 => p_rec.gen_ins_class_old_new);
4633 --
4634 p_rec.object_version_number := p_rec.object_version_number + 1;
4635 --
4636 if p_expire_after_transfer = 'Y' then
4637 p_rec.status := 'D';
4638 end if;
4639 --
4640 -- since no storage for old eit data in view, unnecessary to change like entry.
4641 update pay_jp_isdf_life_gen_dml_v
4642 set object_version_number = p_rec.object_version_number,
4643 status = p_rec.status,
4644 aei_object_version_number = fnd_number.number_to_canonical(l_csr_aei.object_version_number)
4645 where row_id = p_rec.row_id;
4646 --
4647 end if;
4648 --
4649 end if;
4650 --
4651 elsif p_rec.status = 'D' then
4652 --
4653 --if p_rec.delete_mode = 'ZAP' then
4654 -- hr_assignment_extra_info_api.delete_assignment_extra_info(
4655 -- p_validate => false,
4656 -- p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
4657 -- p_object_version_number => p_rec.aei_object_version_number);
4658 --else
4659 --
4660 open csr_aei;
4661 fetch csr_aei into l_csr_aei;
4662 close csr_aei;
4663 --
4664 if l_csr_aei.assignment_extra_info_id is not null then
4665 --
4666 hr_assignment_extra_info_api.update_assignment_extra_info(
4667 p_validate => false,
4668 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
4669 p_object_version_number => l_csr_aei.object_version_number,
4670 p_aei_information_category => 'JP_ASS_LIG_INFO',
4671 p_aei_information1 => l_csr_aei.aei_information1,
4672 p_aei_information2 => l_csr_aei.aei_information2,
4673 p_aei_information3 => l_csr_aei.aei_information3,
4674 p_aei_information4 => fnd_date.date_to_canonical(l_effective_date-1),
4675 p_aei_information5 => p_rec.ins_type,
4676 p_aei_information6 => p_rec.ins_period,
4677 p_aei_information7 => p_rec.contractor_name,
4678 p_aei_information8 => p_rec.beneficiary_name,
4679 p_aei_information9 => p_rec.beneficiary_relship,
4680 p_aei_information10 => l_csr_aei.aei_information10,
4681 p_aei_information12 => p_rec.gen_ins_class_old_new);
4682 --
4683 p_rec.object_version_number := p_rec.object_version_number + 1;
4684 --
4685 -- since no storage for old eit data in view, unnecessary to change like entry.
4686 update pay_jp_isdf_life_gen_dml_v
4687 set object_version_number = p_rec.object_version_number,
4688 aei_object_version_number = fnd_number.number_to_canonical(l_csr_aei.object_version_number)
4689 where row_id = p_rec.row_id;
4690 --
4691 end if;
4692 --
4693 end if;
4694 --
4695 if g_debug then
4696 hr_utility.trace('end update_assact');
4697 hr_utility.set_location(l_proc,1000);
4698 end if;
4699 --
4700 end transfer_life_gen;
4701 --
4702
4703 -- -------------------------------------------------------------------------
4704 -- transfer_care_med
4705 -- -------------------------------------------------------------------------
4706 procedure transfer_care_med(
4707 p_rec in out nocopy pay_jp_isdf_care_med_v%rowtype,
4708 p_effective_date in date,
4709 p_expire_after_transfer in varchar2)
4710 is
4711 --
4712 l_proc varchar2(80) := c_package||'transfer_entry';
4713 --
4714 cursor csr_aei
4715 is
4716 select *
4717 from per_assignment_extra_info
4718 where assignment_extra_info_id = p_rec.assignment_extra_info_id;
4719 --
4720 l_csr_aei csr_aei%rowtype;
4721 l_effective_date date;
4722 --
4723 begin
4724 --
4725 if g_debug then
4726 hr_utility.set_location(l_proc,0);
4727 end if;
4728 --
4729 if p_effective_date is null then
4730 l_effective_date := p_rec.effective_date;
4731 else
4732 l_effective_date := p_effective_date;
4733 end if;
4734 --
4735 -- currently this is not supported that newly inserted data can be transfered.
4736 if p_rec.status = 'I' then
4737 --
4738 -- validation is required
4739 -- to disable insert ins_class and comp_code into action table
4740 -- because those are managed in master Org DF and
4741 -- to disable to insert annual prem even ins_class is LINC
4742 -- because the column should be derived from LINC loading data
4743 -- the field is not for override basically.
4744 hr_assignment_extra_info_api.create_assignment_extra_info(
4745 p_validate => false,
4746 p_assignment_id => p_rec.assignment_id,
4747 p_information_type => 'JP_ASS_CMI_INFO',
4748 p_aei_information_category => 'JP_ASS_CMI_INFO',
4749 p_aei_information1 => p_rec.care_ins_class,
4750 p_aei_information2 => p_rec.care_ins_company_code,
4751 p_aei_information3 => fnd_date.date_to_canonical(l_effective_date),
4752 p_aei_information4 => '',
4753 p_aei_information5 => p_rec.ins_type,
4754 p_aei_information6 => p_rec.ins_period,
4755 p_aei_information7 => p_rec.contractor_name,
4756 p_aei_information8 => p_rec.beneficiary_name,
4757 p_aei_information9 => p_rec.beneficiary_relship,
4758 p_aei_information10 => '',
4759 p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
4760 p_object_version_number => p_rec.aei_object_version_number);
4761 --
4762 p_rec.object_version_number := p_rec.object_version_number + 1;
4763 --
4764 if p_expire_after_transfer = 'Y' then
4765 p_rec.status := 'D';
4766 end if;
4767 --
4768 update pay_jp_isdf_care_med_dml_v
4769 set object_version_number = p_rec.object_version_number,
4770 status = p_rec.status,
4771 assignment_extra_info_id = fnd_number.number_to_canonical(p_rec.assignment_extra_info_id),
4772 aei_object_version_number = fnd_number.number_to_canonical(p_rec.aei_object_version_number)
4773 where row_id = p_rec.row_id;
4774 --
4775 -- currently only support case of update entry data (except for amendment of ins_class and code)
4776 -- additionally not support if eit has been removed at the transferred time
4777 -- even if the eit existed at the archive time.
4778 elsif p_rec.status = 'Q' then
4779 --
4780 open csr_aei;
4781 fetch csr_aei into l_csr_aei;
4782 close csr_aei;
4783 --
4784 -- support only update in case eit exists at the transfer time.
4785 if l_csr_aei.assignment_extra_info_id is not null then
4786 --
4787 if changed(p_rec.ins_type,l_csr_aei.aei_information5)
4788 or changed(p_rec.ins_period,l_csr_aei.aei_information6)
4789 or changed(p_rec.contractor_name,l_csr_aei.aei_information7)
4790 or changed(p_rec.beneficiary_name,l_csr_aei.aei_information8)
4791 or changed(p_rec.beneficiary_relship,l_csr_aei.aei_information9) then
4792 --
4793 -- validation is required
4794 -- to disable update ins_class and comp_code into action table
4795 -- because those are managed in master Org DF and
4796 -- to disable to update annual prem even ins_class is LINC
4797 -- because the column should be derived from LINC loading data
4798 -- the field is not for override basically.
4799 --
4800 hr_assignment_extra_info_api.update_assignment_extra_info(
4801 p_validate => false,
4802 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
4803 p_object_version_number => l_csr_aei.object_version_number,
4804 p_aei_information_category => 'JP_ASS_CMI_INFO',
4805 p_aei_information1 => l_csr_aei.aei_information1,
4806 p_aei_information2 => l_csr_aei.aei_information2,
4807 p_aei_information3 => l_csr_aei.aei_information3,
4808 p_aei_information4 => l_csr_aei.aei_information4,
4809 p_aei_information5 => p_rec.ins_type,
4810 p_aei_information6 => p_rec.ins_period,
4811 p_aei_information7 => p_rec.contractor_name,
4812 p_aei_information8 => p_rec.beneficiary_name,
4813 p_aei_information9 => p_rec.beneficiary_relship,
4814 p_aei_information10 => l_csr_aei.aei_information10);
4815 --
4816 p_rec.object_version_number := p_rec.object_version_number + 1;
4817 --
4818 if p_expire_after_transfer = 'Y' then
4819 p_rec.status := 'D';
4820 end if;
4821 --
4822 -- since no storage for old eit data in view, unnecessary to change like entry.
4823 update pay_jp_isdf_care_med_dml_v
4824 set object_version_number = p_rec.object_version_number,
4825 status = p_rec.status,
4826 aei_object_version_number = fnd_number.number_to_canonical(l_csr_aei.object_version_number)
4827 where row_id = p_rec.row_id;
4828 --
4829 end if;
4830 --
4831 end if;
4832 --
4833 elsif p_rec.status = 'D' then
4834 --
4835 --if p_rec.delete_mode = 'ZAP' then
4836 -- hr_assignment_extra_info_api.delete_assignment_extra_info(
4837 -- p_validate => false,
4838 -- p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
4839 -- p_object_version_number => p_rec.aei_object_version_number);
4840 --else
4841 --
4842 open csr_aei;
4843 fetch csr_aei into l_csr_aei;
4844 close csr_aei;
4845 --
4846 if l_csr_aei.assignment_extra_info_id is not null then
4847 --
4848 hr_assignment_extra_info_api.update_assignment_extra_info(
4849 p_validate => false,
4850 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
4851 p_object_version_number => l_csr_aei.object_version_number,
4852 p_aei_information_category => 'JP_ASS_CMI_INFO',
4853 p_aei_information1 => l_csr_aei.aei_information1,
4854 p_aei_information2 => l_csr_aei.aei_information2,
4855 p_aei_information3 => l_csr_aei.aei_information3,
4856 p_aei_information4 => fnd_date.date_to_canonical(l_effective_date-1),
4857 p_aei_information5 => p_rec.ins_type,
4858 p_aei_information6 => p_rec.ins_period,
4859 p_aei_information7 => p_rec.contractor_name,
4860 p_aei_information8 => p_rec.beneficiary_name,
4861 p_aei_information9 => p_rec.beneficiary_relship,
4862 p_aei_information10 => l_csr_aei.aei_information10);
4863 --
4864 p_rec.object_version_number := p_rec.object_version_number + 1;
4865 --
4866 -- since no storage for old eit data in view, unnecessary to change like entry.
4867 update pay_jp_isdf_care_med_dml_v
4868 set object_version_number = p_rec.object_version_number,
4869 aei_object_version_number = fnd_number.number_to_canonical(l_csr_aei.object_version_number)
4870 where row_id = p_rec.row_id;
4871 --
4872 end if;
4873 --
4874 end if;
4875 --
4876 if g_debug then
4877 hr_utility.trace('end update_assact');
4878 hr_utility.set_location(l_proc,1000);
4879 end if;
4880 --
4881 end transfer_care_med;
4882 --
4883
4884 -- -------------------------------------------------------------------------
4885 -- transfer_life_pens
4886 -- -------------------------------------------------------------------------
4887 procedure transfer_life_pens(
4888 p_rec in out nocopy pay_jp_isdf_life_pens_v%rowtype,
4889 p_effective_date in date,
4890 p_expire_after_transfer in varchar2)
4891 is
4892 --
4893 l_proc varchar2(80) := c_package||'transfer_entry';
4894 l_effective_date date;
4895 --
4896 cursor csr_aei
4897 is
4898 select *
4899 from per_assignment_extra_info
4900 where assignment_extra_info_id = p_rec.assignment_extra_info_id;
4901 --
4902 l_csr_aei csr_aei%rowtype;
4903 --
4904 begin
4905 --
4906 if g_debug then
4907 hr_utility.set_location(l_proc,0);
4908 end if;
4909 --
4910 if p_effective_date is null then
4911 l_effective_date := p_rec.effective_date;
4912 else
4913 l_effective_date := p_effective_date;
4914 end if;
4915 --
4916 -- currently this is not supported that newly inserted data can be transfered.
4917 if p_rec.status = 'I' then
4918 --
4919 -- validation is required
4920 -- to disable insert ins_class and comp_code into action table
4921 -- because those are managed in master Org DF and
4922 -- to disable to insert annual prem even ins_class is LINC
4923 -- because the column should be derived from LINC loading data
4924 -- the field is not for override basically.
4925 hr_assignment_extra_info_api.create_assignment_extra_info(
4926 p_validate => false,
4927 p_assignment_id => p_rec.assignment_id,
4928 p_information_type => 'JP_ASS_LIP_INFO',
4929 p_aei_information_category => 'JP_ASS_LIP_INFO',
4930 p_aei_information1 => p_rec.pens_ins_class,
4931 p_aei_information2 => p_rec.pens_ins_company_code,
4932 p_aei_information3 => fnd_date.date_to_canonical(l_effective_date),
4933 p_aei_information4 => '',
4934 p_aei_information5 => p_rec.ins_type,
4935 p_aei_information6 => fnd_date.date_to_canonical(p_rec.ins_period_start_date),
4936 p_aei_information7 => p_rec.ins_period,
4937 p_aei_information8 => p_rec.contractor_name,
4938 p_aei_information9 => p_rec.beneficiary_name,
4939 p_aei_information10 => p_rec.beneficiary_relship,
4940 p_aei_information11 => '',
4941 p_aei_information13 => p_rec.pens_ins_class_old_new,
4942 p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
4943 p_object_version_number => p_rec.aei_object_version_number);
4944 --
4945 p_rec.object_version_number := p_rec.object_version_number + 1;
4946 --
4947 if p_expire_after_transfer = 'Y' then
4948 p_rec.status := 'D';
4949 end if;
4950 --
4951 update pay_jp_isdf_life_pens_dml_v
4952 set object_version_number = p_rec.object_version_number,
4953 status = p_rec.status,
4954 assignment_extra_info_id = fnd_number.number_to_canonical(p_rec.assignment_extra_info_id),
4955 aei_object_version_number = fnd_number.number_to_canonical(p_rec.aei_object_version_number)
4956 where row_id = p_rec.row_id;
4957 --
4958 -- currently only support case of update entry data (except for amendment of ins_class and code)
4959 -- additionally not support if eit has been removed at the transferred time
4960 -- even if the eit existed at the archive time.
4961 elsif p_rec.status = 'Q' then
4962 --
4963 open csr_aei;
4964 fetch csr_aei into l_csr_aei;
4965 close csr_aei;
4966 --
4967 -- support only update in case eit exists at the transfer time.
4968 if l_csr_aei.assignment_extra_info_id is not null then
4969 --
4970 if changed(p_rec.ins_type,l_csr_aei.aei_information5)
4971 or changed(fnd_date.date_to_canonical(p_rec.ins_period_start_date),l_csr_aei.aei_information6)
4972 or changed(p_rec.ins_period,l_csr_aei.aei_information7)
4973 or changed(p_rec.contractor_name,l_csr_aei.aei_information8)
4974 or changed(p_rec.beneficiary_name,l_csr_aei.aei_information9)
4975 or changed(p_rec.beneficiary_relship,l_csr_aei.aei_information10)
4976 or changed(p_rec.pens_ins_class_old_new,l_csr_aei.aei_information13) then
4977 --
4978 -- validation is required
4979 -- to disable update ins_class and comp_code into action table
4980 -- because those are managed in master Org DF and
4981 -- to disable to update annual prem even ins_class is LINC
4982 -- because the column should be derived from LINC loading data
4983 -- the field is not for override basically.
4984 hr_assignment_extra_info_api.update_assignment_extra_info(
4985 p_validate => false,
4986 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
4987 p_object_version_number => l_csr_aei.object_version_number,
4988 p_aei_information_category => 'JP_ASS_LIP_INFO',
4989 p_aei_information1 => l_csr_aei.aei_information1,
4990 p_aei_information2 => l_csr_aei.aei_information2,
4991 p_aei_information3 => l_csr_aei.aei_information3,
4992 p_aei_information4 => l_csr_aei.aei_information4,
4993 p_aei_information5 => p_rec.ins_type,
4994 p_aei_information6 => fnd_date.date_to_canonical(p_rec.ins_period_start_date),
4995 p_aei_information7 => p_rec.ins_period,
4996 p_aei_information8 => p_rec.contractor_name,
4997 p_aei_information9 => p_rec.beneficiary_name,
4998 p_aei_information10 => p_rec.beneficiary_relship,
4999 p_aei_information11 => l_csr_aei.aei_information11,
5000 p_aei_information13 => p_rec.pens_ins_class_old_new);
5001 --
5002 p_rec.object_version_number := p_rec.object_version_number + 1;
5003 --
5004 if p_expire_after_transfer = 'Y' then
5005 p_rec.status := 'D';
5006 end if;
5007 --
5008 -- since no storage for old eit data in view, unnecessary to change like entry.
5009 update pay_jp_isdf_life_pens_dml_v
5010 set object_version_number = p_rec.object_version_number,
5011 status = p_rec.status,
5012 aei_object_version_number = fnd_number.number_to_canonical(p_rec.aei_object_version_number)
5013 where row_id = p_rec.row_id;
5014 --
5015 end if;
5016 --
5017 end if;
5018 --
5019 elsif p_rec.status = 'D' then
5020 --
5021 --if p_rec.delete_mode = 'ZAP' then
5022 -- hr_assignment_extra_info_api.delete_assignment_extra_info(
5023 -- p_validate => false,
5024 -- p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
5025 -- p_object_version_number => p_rec.aei_object_version_number);
5026 --else
5027 --
5028 open csr_aei;
5029 fetch csr_aei into l_csr_aei;
5030 close csr_aei;
5031 --
5032 if l_csr_aei.assignment_extra_info_id is not null then
5033 --
5034 hr_assignment_extra_info_api.update_assignment_extra_info(
5035 p_validate => false,
5036 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
5037 p_object_version_number => l_csr_aei.object_version_number,
5038 p_aei_information_category => 'JP_ASS_LIP_INFO',
5039 p_aei_information1 => l_csr_aei.aei_information1,
5040 p_aei_information2 => l_csr_aei.aei_information2,
5041 p_aei_information3 => l_csr_aei.aei_information3,
5042 p_aei_information4 => fnd_date.date_to_canonical(l_effective_date-1),
5043 p_aei_information5 => p_rec.ins_type,
5044 p_aei_information6 => fnd_date.date_to_canonical(p_rec.ins_period_start_date),
5045 p_aei_information7 => p_rec.ins_period,
5046 p_aei_information8 => p_rec.contractor_name,
5047 p_aei_information9 => p_rec.beneficiary_name,
5048 p_aei_information10 => p_rec.beneficiary_relship,
5049 p_aei_information11 => l_csr_aei.aei_information11,
5050 p_aei_information13 => p_rec.pens_ins_class_old_new);
5051 --
5052 p_rec.object_version_number := p_rec.object_version_number + 1;
5053 --
5054 -- since no storage for old eit data in view, unnecessary to change like entry.
5055 update pay_jp_isdf_life_pens_dml_v
5056 set object_version_number = p_rec.object_version_number,
5057 aei_object_version_number = fnd_number.number_to_canonical(l_csr_aei.object_version_number)
5058 where row_id = p_rec.row_id;
5059 --
5060 end if;
5061 --
5062 end if;
5063 --
5064 if g_debug then
5065 hr_utility.trace('end update_assact');
5066 hr_utility.set_location(l_proc,1000);
5067 end if;
5068 --
5069 end transfer_life_pens;
5070 --
5071 -- -------------------------------------------------------------------------
5072 -- transfer_nonlife
5073 -- -------------------------------------------------------------------------
5074 procedure transfer_nonlife(
5075 p_rec in out nocopy pay_jp_isdf_nonlife_v%rowtype,
5076 p_effective_date in date,
5077 p_expire_after_transfer in varchar2)
5078 is
5079 --
5080 l_proc varchar2(80) := c_package||'transfer_entry';
5081 l_effective_date date;
5082 --
5083 cursor csr_aei
5084 is
5085 select *
5086 from per_assignment_extra_info
5087 where assignment_extra_info_id = p_rec.assignment_extra_info_id;
5088 --
5089 l_csr_aei csr_aei%rowtype;
5090 --
5091 begin
5092 --
5093 if g_debug then
5094 hr_utility.set_location(l_proc,0);
5095 end if;
5096 --
5097 if p_effective_date is null then
5098 l_effective_date := p_rec.effective_date;
5099 else
5100 l_effective_date := p_effective_date;
5101 end if;
5102 --
5103 -- currently this is not supported that newly inserted data can be transfered.
5104 if p_rec.status = 'I' then
5105 --
5106 -- validation is required
5107 -- to disable insert ins_class and comp_code into action table
5108 -- because those are managed in master Org DF and
5109 -- to disable to insert annual prem
5110 -- because the column should be derived from customer loading data
5111 -- the field is not for override basically.
5112 hr_assignment_extra_info_api.create_assignment_extra_info(
5113 p_validate => false,
5114 p_assignment_id => p_rec.assignment_id,
5115 p_information_type => 'JP_ASS_AI_INFO',
5116 p_aei_information_category => 'JP_ASS_AI_INFO',
5117 p_aei_information1 => p_rec.nonlife_ins_term_type,
5118 p_aei_information2 => p_rec.nonlife_ins_company_code,
5119 p_aei_information3 => fnd_date.date_to_canonical(l_effective_date),
5120 p_aei_information4 => '',
5121 p_aei_information5 => p_rec.ins_type,
5122 p_aei_information6 => p_rec.ins_period,
5123 p_aei_information7 => p_rec.contractor_name,
5124 p_aei_information8 => p_rec.beneficiary_name,
5125 p_aei_information9 => p_rec.beneficiary_relship,
5126 p_aei_information10 => p_rec.maturity_repayment,
5127 p_aei_information11 => '',
5128 p_aei_information13 => p_rec.nonlife_ins_class,
5129 p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
5130 p_object_version_number => p_rec.aei_object_version_number);
5131 --
5132 p_rec.object_version_number := p_rec.object_version_number + 1;
5133 --
5134 if p_expire_after_transfer = 'Y' then
5135 p_rec.status := 'D';
5136 end if;
5137 --
5138 update pay_jp_isdf_nonlife_dml_v
5139 set object_version_number = p_rec.object_version_number,
5140 status = p_rec.status,
5141 assignment_extra_info_id = fnd_number.number_to_canonical(p_rec.assignment_extra_info_id),
5142 aei_object_version_number = fnd_number.number_to_canonical(p_rec.aei_object_version_number)
5143 where row_id = p_rec.row_id;
5144 --
5145 -- currently only support case of update entry data (except for amendment of ins_class and code)
5146 -- additionally not support if eit has been removed at the transferred time
5147 -- even if the eit existed at the archive time.
5148 elsif p_rec.status = 'Q' then
5149 --
5150 open csr_aei;
5151 fetch csr_aei into l_csr_aei;
5152 close csr_aei;
5153 --
5154 -- support only update in case eit exists at the transfer time.
5155 if l_csr_aei.assignment_extra_info_id is not null then
5156 --
5157 if changed(p_rec.ins_type,l_csr_aei.aei_information5)
5158 or changed(p_rec.ins_period,l_csr_aei.aei_information6)
5159 or changed(p_rec.contractor_name,l_csr_aei.aei_information7)
5160 or changed(p_rec.beneficiary_name,l_csr_aei.aei_information8)
5161 or changed(p_rec.beneficiary_relship,l_csr_aei.aei_information9)
5162 or (l_effective_date < c_st_upd_date_2007 and changed(p_rec.maturity_repayment,l_csr_aei.aei_information10)) then
5163 --
5164 -- validation is required
5165 -- to disable update ins_class and comp_code into action table
5166 -- because those are managed in master Org DF and
5167 -- to disable to update annual prem even ins_class is LINC
5168 -- because the column should be derived from LINC loading data
5169 -- the field is not for override basically.
5170 hr_assignment_extra_info_api.update_assignment_extra_info(
5171 p_validate => false,
5172 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
5173 p_object_version_number => l_csr_aei.object_version_number,
5174 p_aei_information_category => 'JP_ASS_AI_INFO',
5175 p_aei_information1 => l_csr_aei.aei_information1,
5176 p_aei_information2 => l_csr_aei.aei_information2,
5177 p_aei_information3 => l_csr_aei.aei_information3,
5178 p_aei_information4 => l_csr_aei.aei_information4,
5179 p_aei_information5 => p_rec.ins_type,
5180 p_aei_information6 => p_rec.ins_period,
5181 p_aei_information7 => p_rec.contractor_name,
5182 p_aei_information8 => p_rec.beneficiary_name,
5183 p_aei_information9 => p_rec.beneficiary_relship,
5184 p_aei_information10 => p_rec.maturity_repayment,
5185 p_aei_information11 => l_csr_aei.aei_information11,
5186 p_aei_information13 => l_csr_aei.aei_information13);
5187 --
5188 p_rec.object_version_number := p_rec.object_version_number + 1;
5189 --
5190 if p_expire_after_transfer = 'Y' then
5191 p_rec.status := 'D';
5192 end if;
5193 --
5194 -- since no storage for old eit data in view, unnecessary to change like entry.
5195 update pay_jp_isdf_nonlife_dml_v
5196 set object_version_number = p_rec.object_version_number,
5197 status = p_rec.status,
5198 aei_object_version_number = fnd_number.number_to_canonical(p_rec.aei_object_version_number)
5199 where row_id = p_rec.row_id;
5200 --
5201 end if;
5202 --
5203 end if;
5204 --
5205 elsif p_rec.status = 'D' then
5206 --
5207 --if p_rec.delete_mode = 'ZAP' then
5208 -- hr_assignment_extra_info_api.delete_assignment_extra_info(
5209 -- p_validate => false,
5210 -- p_assignment_extra_info_id => p_rec.assignment_extra_info_id,
5211 -- p_object_version_number => p_rec.aei_object_version_number);
5212 --else
5213 --
5214 open csr_aei;
5215 fetch csr_aei into l_csr_aei;
5216 close csr_aei;
5217 --
5218 if l_csr_aei.assignment_extra_info_id is not null then
5219 --
5220 hr_assignment_extra_info_api.update_assignment_extra_info(
5221 p_validate => false,
5222 p_assignment_extra_info_id => l_csr_aei.assignment_extra_info_id,
5223 p_object_version_number => l_csr_aei.object_version_number,
5224 p_aei_information_category => 'JP_ASS_AI_INFO',
5225 p_aei_information1 => l_csr_aei.aei_information1,
5226 p_aei_information2 => l_csr_aei.aei_information2,
5227 p_aei_information3 => l_csr_aei.aei_information3,
5228 p_aei_information4 => fnd_date.date_to_canonical(l_effective_date-1),
5229 p_aei_information5 => p_rec.ins_type,
5230 p_aei_information6 => p_rec.ins_period,
5231 p_aei_information7 => p_rec.contractor_name,
5232 p_aei_information8 => p_rec.beneficiary_name,
5233 p_aei_information9 => p_rec.beneficiary_relship,
5234 p_aei_information10 => p_rec.maturity_repayment,
5235 p_aei_information11 => l_csr_aei.aei_information11,
5236 p_aei_information13 => l_csr_aei.aei_information13);
5237 --
5238 p_rec.object_version_number := p_rec.object_version_number + 1;
5239 --
5240 -- since no storage for old eit data in view, unnecessary to change like entry.
5241 update pay_jp_isdf_nonlife_dml_v
5242 set object_version_number = p_rec.object_version_number,
5243 aei_object_version_number = fnd_number.number_to_canonical(l_csr_aei.object_version_number)
5244 where row_id = p_rec.row_id;
5245 --
5246 end if;
5247 --
5248 end if;
5249 --
5250 if g_debug then
5251 hr_utility.trace('end update_assact');
5252 hr_utility.set_location(l_proc,1000);
5253 end if;
5254 --
5255 end transfer_nonlife;
5256 --
5257 -- -------------------------------------------------------------------------
5258 -- do_transfer
5259 -- -------------------------------------------------------------------------
5260 procedure do_transfer(
5261 p_action_information_id in number,
5262 p_object_version_number in out nocopy number,
5263 p_transfer_date in date,
5264 p_create_session in boolean default true,
5265 p_expire_after_transfer in varchar2 default 'N')
5266 is
5267 --
5268 l_proc varchar2(80) := c_package||'do_transfer';
5269 l_assact_rec pay_jp_isdf_assact_v%rowtype;
5270 l_effective_date date;
5271 l_year_end_date date;
5272 l_dec_first_date date;
5273 --
5274 cursor csr_entry
5275 is
5276 select *
5277 from pay_jp_isdf_entry_v
5278 where assignment_action_id = l_assact_rec.assignment_action_id
5279 and status <> 'D'
5280 for update nowait;
5281 --
5282 -- ass eit exclude PC data, take only GIP/LINC
5283 cursor csr_life_gen_del
5284 is
5285 select *
5286 from pay_jp_isdf_life_gen_v
5287 where assignment_action_id = l_assact_rec.assignment_action_id
5288 and gen_ins_class <> 'PC'
5289 and status = 'D'
5290 for update nowait;
5291 --
5292 -- status U is only case when archive was transfered
5293 cursor csr_life_gen_upd
5294 is
5295 select *
5296 from pay_jp_isdf_life_gen_v
5297 where assignment_action_id = l_assact_rec.assignment_action_id
5298 and gen_ins_class <> 'PC'
5299 and status = 'Q'
5300 for update nowait;
5301 --
5302 cursor csr_life_gen_ins
5303 is
5304 select *
5305 from pay_jp_isdf_life_gen_v
5306 where assignment_action_id = l_assact_rec.assignment_action_id
5307 and gen_ins_class <> 'PC'
5308 and status = 'I'
5309 for update nowait;
5310
5311 -- ass eit exclude PC data, take only GIP/LINC
5312 cursor csr_care_med_del
5313 is
5314 select *
5315 from pay_jp_isdf_care_med_v
5316 where assignment_action_id = l_assact_rec.assignment_action_id
5317 and care_ins_class <> 'PC'
5318 and status = 'D'
5319 for update nowait;
5320 --
5321 -- status U is only case when archive was transfered
5322 cursor csr_care_med_upd
5323 is
5324 select *
5325 from pay_jp_isdf_care_med_v
5326 where assignment_action_id = l_assact_rec.assignment_action_id
5327 and care_ins_class <> 'PC'
5328 and status = 'Q'
5329 for update nowait;
5330 --
5331 cursor csr_care_med_ins
5332 is
5333 select *
5334 from pay_jp_isdf_care_med_v
5335 where assignment_action_id = l_assact_rec.assignment_action_id
5336 and care_ins_class <> 'PC'
5337 and status = 'I'
5338 for update nowait;
5339
5340 --
5341 -- ass eit exclude PC data, take only GIP/LINC
5342 cursor csr_life_pens_del
5343 is
5344 select *
5345 from pay_jp_isdf_life_pens_v
5346 where assignment_action_id = l_assact_rec.assignment_action_id
5347 and pens_ins_class <> 'PC'
5348 and status = 'D'
5349 for update nowait;
5350 --
5351 -- status U is only case when archive was transfered
5352 cursor csr_life_pens_upd
5353 is
5354 select *
5355 from pay_jp_isdf_life_pens_v
5356 where assignment_action_id = l_assact_rec.assignment_action_id
5357 and pens_ins_class <> 'PC'
5358 and status = 'Q'
5359 for update nowait;
5360 --
5361 cursor csr_life_pens_ins
5362 is
5363 select *
5364 from pay_jp_isdf_life_pens_v
5365 where assignment_action_id = l_assact_rec.assignment_action_id
5366 and pens_ins_class <> 'PC'
5367 and status = 'I'
5368 for update nowait;
5369 --
5370 -- ass eit exclude PC data, take only AP
5371 cursor csr_nonlife_del
5372 is
5373 select *
5374 from pay_jp_isdf_nonlife_v
5375 where assignment_action_id = l_assact_rec.assignment_action_id
5376 and nonlife_ins_class <> 'PC'
5377 and status = 'D'
5378 for update nowait;
5379 --
5380 -- status U is only case when archive was transfered
5381 cursor csr_nonlife_upd
5382 is
5383 select *
5384 from pay_jp_isdf_nonlife_v
5385 where assignment_action_id = l_assact_rec.assignment_action_id
5386 and nonlife_ins_class <> 'PC'
5387 and status = 'Q'
5388 for update nowait;
5389 --
5390 cursor csr_nonlife_ins
5391 is
5392 select *
5393 from pay_jp_isdf_nonlife_v
5394 where assignment_action_id = l_assact_rec.assignment_action_id
5395 and nonlife_ins_class <> 'PC'
5396 and status = 'I'
5397 for update nowait;
5398 --
5399 begin
5400 --
5401 if g_debug then
5402 hr_utility.set_location(l_proc,0);
5403 end if;
5404 --
5405 hr_api.mandatory_arg_error(l_proc, 'transfer_date', p_transfer_date);
5406 --
5407 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
5408 --
5409 if l_assact_rec.transaction_status <> 'A' then
5410 fnd_message.set_name('PAY', 'PAY_JP_DEF_INVALID_TXN_STATUS');
5411 fnd_message.raise_error;
5412 elsif l_assact_rec.transfer_status <> 'U' then
5413 fnd_message.set_name('PAY', 'PAY_JP_DEF_ALREADY_TRANSFERRED');
5414 fnd_message.raise_error;
5415 end if;
5416 --
5417 l_year_end_date := add_months(trunc(l_assact_rec.effective_date, 'YYYY'), 12) - 1;
5418 l_dec_first_date := trunc(l_year_end_date,'MM');
5419 --
5420 if p_transfer_date is null then
5421 l_effective_date := l_assact_rec.effective_date;
5422 else
5423 l_effective_date := p_transfer_date;
5424 end if;
5425 --
5426 -- actually if l_dec_first_date <= p_transfer_date <= l_year_end_date,
5427 -- insert is ok because nonrecurring element (unnecessary to validate transfer_date < effective_date)
5428 -- but basically transfer should be done after archive process date.
5429 if l_effective_date < l_assact_rec.effective_date
5430 or l_effective_date < l_dec_first_date
5431 or l_effective_date > l_year_end_date then
5432 fnd_message.set_name('PAY', 'PAY_JP_ISDF_INVALID_TRANS_DATE');
5433 fnd_message.set_token('EFFECTIVE_DATE', fnd_date.date_to_chardate(l_assact_rec.effective_date));
5434 fnd_message.set_token('DEC_FIRST_DATE', fnd_date.date_to_chardate(l_dec_first_date));
5435 fnd_message.set_token('YEAR_END_DATE', fnd_date.date_to_chardate(l_year_end_date));
5436 fnd_message.raise_error;
5437 end if;
5438 --
5439 -- for api use
5440 if p_create_session then
5441 insert_session(l_effective_date);
5442 commit;
5443 end if;
5444 --
5445 if g_debug then
5446 hr_utility.set_location(l_proc,20);
5447 hr_utility.trace('action_information_id : '||p_action_information_id);
5448 hr_utility.trace('object_version_number : '||p_object_version_number);
5449 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
5450 hr_utility.trace('start calc_dct before finalize');
5451 end if;
5452 --
5453 -- Transfer the followings.
5454 --
5455 -- Transfer JP_ISDF_ENTRY to PAY_ELEMENT_ENTRIES_F
5456 --
5457 for l_rec in csr_entry loop
5458 -- boolean is not supported in jrad.
5459 transfer_entry(l_rec,l_effective_date,p_expire_after_transfer);
5460 end loop;
5461 --
5462 -- Transfer the followings.
5463 --
5464 -- Transfer JP_ISDF_LIFE_GEN.GEN_INS_CLASS=GIP/LINC to PER_ASSIGNMENT_EXTRA_INFO.JP_ASS_LIG_INFO
5465 -- Transfer JP_ISDF_LIFE_PENS.PENS_INS_CLASS=GIP/LINC to PER_ASSIGNMENT_EXTRA_INFO.JP_ASS_LIP_INFO
5466 --
5467 -- Disable to delete
5468 -- because GIP and LINC data are relevant to deducted monthly element entry
5469 -- which is used in custom formula for monthly salary
5470 -- so that employer needs to care dependency for deletion of EIT with custom element entry setup.
5471 -- But we allow to delete GIP/LINC archive data on FormPG,
5472 -- it means that makes inconsistence between Report data and EIT data.
5473 -- employee can exclude LINC/GIP data from subjection of deduction,
5474 -- but this action is not same to remove LING/GIP from EIT.
5475 -- delete phase
5476 --for l_life_gen_rec in csr_life_gen_del loop
5477 -- transfer_life_gen(l_life_gen_rec,l_effective_date,p_expire_after_transfer);
5478 --end loop;
5479 --
5480 --for l_life_pens_rec in csr_life_pens_del loop
5481 -- transfer_life_pens(l_life_pens_rec,l_effective_date,p_expire_after_transfer);
5482 --end loop;
5483 --
5484 --for l_nonlife_rec in csr_nonlife_del loop
5485 -- transfer_nonlife(l_nonlife_rec,l_effective_date,p_expire_after_transfer);
5486 --end loop;
5487 --
5488 -- update phase
5489 for l_life_gen_rec in csr_life_gen_upd loop
5490 transfer_life_gen(l_life_gen_rec,l_effective_date,p_expire_after_transfer);
5491 end loop;
5492 --
5493 for l_care_med_rec in csr_care_med_upd loop
5494 transfer_care_med(l_care_med_rec,l_effective_date,p_expire_after_transfer);
5495 end loop;
5496 --
5497 for l_life_pens_rec in csr_life_pens_upd loop
5498 transfer_life_pens(l_life_pens_rec,l_effective_date,p_expire_after_transfer);
5499 end loop;
5500 --
5501 for l_nonlife_rec in csr_nonlife_upd loop
5502 transfer_nonlife(l_nonlife_rec,l_effective_date,p_expire_after_transfer);
5503 end loop;
5504 --
5505 -- Disable to insert
5506 -- because GIP and LINC data are relevant to deducted monthly element entry
5507 -- which is used in custom formula for monthly salary
5508 -- so that employer needs to care dependency for insertion of EIT with custom element entry setup.
5509 -- insert phase
5510 --for l_life_gen_rec in csr_life_gen_ins loop
5511 -- transfer_life_gen(l_life_gen_rec,l_effective_date,p_expire_after_transfer);
5512 --end loop;
5513 --
5514 --for l_life_pens_rec in csr_life_pens_ins loop
5515 -- transfer_life_pens(l_life_pens_rec,l_effective_date,p_expire_after_transfer);
5516 --end loop;
5517 --
5518 --for l_nonlife_rec in csr_nonlife_ins loop
5519 -- transfer_nonlife(l_nonlife_rec,l_effective_date,p_expire_after_transfer);
5520 --end loop;
5521 --
5522 if p_create_session then
5523 delete_session;
5524 commit;
5525 end if;
5526 --
5527 p_object_version_number := l_assact_rec.object_version_number + 1;
5528 --
5529 --api is disable because assact has been locked.
5530 --pay_jp_isdf_dml_pkg.update_assact(
5531 -- p_action_information_id => l_assact_rec.assignment_action_id,
5532 -- p_object_version_number => p_object_version_number,
5533 -- p_transaction_status => l_assact_rec.transaction_status,
5534 -- p_finalized_date => l_assact_rec.finalized_date,
5535 -- p_finalized_by => l_assact_rec.finalized_by,
5536 -- p_user_comments => l_assact_rec.user_comments,
5537 -- p_admin_comments => l_assact_rec.admin_comments,
5538 -- p_transfer_status => 'T',
5539 -- p_transfer_date => fnd_date.date_to_canonical(l_effective_date),
5540 -- p_expiry_date => l_assact_rec.expiry_date);
5541 update pay_jp_isdf_assact_dml_v
5542 set object_version_number = p_object_version_number,
5543 transfer_status = 'T',
5544 transfer_date = fnd_date.date_to_canonical(l_effective_date)
5545 where row_id = l_assact_rec.row_id;
5546 --
5547 if g_debug then
5548 hr_utility.trace('end update_assact');
5549 hr_utility.set_location(l_proc,1000);
5550 end if;
5551 --
5552 end do_transfer;
5553 --
5554 -- -------------------------------------------------------------------------
5555 -- do_expire
5556 -- -------------------------------------------------------------------------
5557 procedure do_expire(
5558 p_action_information_id in number,
5559 p_object_version_number in out nocopy number,
5560 p_expiry_date in date,
5561 p_create_session in boolean default true,
5562 p_mode in varchar2 default null)
5563 is
5564 --
5565 -- p_mode: DELETE: change archive status to D
5566 -- ZAP : remove archive data of status D
5567 -- N/A : nothing to do. (original)
5568 --
5569 l_proc varchar2(80) := c_package||'do_expire';
5570 l_assact_rec pay_jp_isdf_assact_v%rowtype;
5571 l_effective_date date;
5572 l_dec_first_date date;
5573 l_year_end_date date;
5574 l_esd date;
5575 l_eed date;
5576 l_warning boolean;
5577 l_object_version_number number;
5578 --
5579 cursor csr_entry
5580 is
5581 select *
5582 from pay_jp_isdf_entry_v
5583 where assignment_action_id = l_assact_rec.assignment_action_id
5584 for update nowait;
5585 --
5586 l_csr_entry csr_entry%rowtype;
5587 --
5588 cursor csr_del
5589 is
5590 select rowid row_id,
5591 action_information_id,
5592 object_version_number,
5593 action_information_category
5594 from pay_action_information
5595 where action_context_id = l_assact_rec.assignment_action_id
5596 and action_context_type = 'AAP'
5597 and action_information_category <> 'JP_ISDF_ASSACT'
5598 and action_information1 <> 'D';
5599 --
5600 l_csr_del csr_del%rowtype;
5601 --
5602 begin
5603 --
5604 if g_debug then
5605 hr_utility.set_location(l_proc,0);
5606 end if;
5607 --
5608 hr_api.mandatory_arg_error(l_proc,'expiry_date',p_expiry_date);
5609 --
5610 pay_jp_isdf_dml_pkg.lock_assact(p_action_information_id, p_object_version_number, l_assact_rec);
5611 --
5612 if l_assact_rec.transaction_status = 'U' then
5613 fnd_message.set_name('PAY', 'PAY_JP_DEF_NOT_TRANSFERRED_YET');
5614 fnd_message.raise_error;
5615 elsif l_assact_rec.transfer_status = 'E' then
5616 fnd_message.set_name('PAY', 'PAY_JP_DEF_ALREADY_EXPIRED');
5617 fnd_message.raise_error;
5618 end if;
5619 --
5620 if g_debug then
5621 hr_utility.set_location(l_proc,20);
5622 hr_utility.trace('action_information_id : '||p_action_information_id);
5623 hr_utility.trace('object_version_number : '||p_object_version_number);
5624 hr_utility.trace('assignment_action_id : '||l_assact_rec.assignment_action_id);
5625 hr_utility.trace('start calc_dct before finalize');
5626 end if;
5627 --
5628 l_year_end_date := add_months(trunc(l_assact_rec.effective_date, 'YYYY'), 12) - 1;
5629 l_dec_first_date := trunc(l_year_end_date,'MM');
5630 --
5631 -- actually if l_dec_first_date (first day of l_transfer_date) <= p_expiry_date <= l_year_end_date,
5632 -- delete is ok because nonrecurring element (unnecessary to validate expiry_date < transfer_date)
5633 -- but basically expiry should be done after transfer process date.
5634 -- (transfer_date is always set since transfer_status check has been done)
5635 if p_expiry_date < l_assact_rec.effective_date
5636 or p_expiry_date < l_assact_rec.transfer_date
5637 or p_expiry_date > l_year_end_date then
5638 fnd_message.set_name('PAY', 'PAY_JP_ISDF_INVALID_EXP_DATE');
5639 fnd_message.set_token('TRANSFER_DATE', fnd_date.date_to_chardate(l_assact_rec.transfer_date));
5640 fnd_message.set_token('YEAR_END_DATE', fnd_date.date_to_chardate(l_year_end_date));
5641 fnd_message.raise_error;
5642 end if;
5643 --
5644 -- l_dec_first_date or effective_date <= l_transfer_date <= l_year_end_date
5645 -- l_transfer_date <= l_expirty_date <= l_year_end_date
5646 -- since delete mode is not allowed to delete on the same day of last eev eed,
5647 -- if l_expiry_date is end period of transffered date (= l_year_end_date),
5648 -- set delete validation start_date (p_effective_date) to l_year_end_date - 1.
5649 if p_expiry_date = l_year_end_date then
5650 l_effective_date := l_year_end_date - 1;
5651 else
5652 l_effective_date := p_expiry_date;
5653 end if;
5654 --
5655 -- for api use.
5656 if p_create_session then
5657 insert_session(l_effective_date);
5658 end if;
5659 --
5660 open csr_entry;
5661 loop
5662 fetch csr_entry into l_csr_entry;
5663 exit when csr_entry%notfound;
5664 --
5665 pay_element_entry_api.delete_element_entry(
5666 p_validate => false,
5667 p_effective_date => l_effective_date,
5668 p_datetrack_delete_mode => 'DELETE',
5669 p_element_entry_id => l_csr_entry.ins_element_entry_id,
5670 p_object_version_number => l_csr_entry.ins_ee_object_version_number,
5671 p_effective_start_date => l_esd,
5672 p_effective_end_date => l_eed,
5673 p_delete_warning => l_warning);
5674 --
5675 pay_element_entry_api.delete_element_entry(
5676 p_validate => false,
5677 p_effective_date => l_effective_date,
5678 p_datetrack_delete_mode => 'DELETE',
5679 p_element_entry_id => l_csr_entry.is_element_entry_id,
5680 p_object_version_number => l_csr_entry.is_ee_object_version_number,
5681 p_effective_start_date => l_esd,
5682 p_effective_end_date => l_eed,
5683 p_delete_warning => l_warning);
5684 --
5685 update pay_jp_isdf_entry_dml_v
5686 set object_version_number = l_csr_entry.object_version_number + 1,
5687 ins_ee_object_version_number = fnd_number.number_to_canonical(l_csr_entry.ins_ee_object_version_number),
5688 is_ee_object_version_number = fnd_number.number_to_canonical(l_csr_entry.is_ee_object_version_number)
5689 where row_id = l_csr_entry.row_id;
5690 --
5691 end loop;
5692 close csr_entry;
5693 --
5694 if p_mode = 'ZAP' then
5695 --
5696 delete
5697 from pay_action_information
5698 where action_context_id = l_assact_rec.assignment_action_id
5699 and action_context_type = 'AAP'
5700 and action_information_category <> 'JP_ISDF_ASSACT';
5701 --
5702 elsif p_mode = 'DELETE' then
5703 --
5704 open csr_del;
5705 loop
5706 --
5707 fetch csr_del into l_csr_del;
5708 exit when csr_del%notfound;
5709 --
5710 -- ovn already updated above.
5711 if l_csr_del.action_information_category = 'JP_ISDF_ENTRY' then
5712 l_object_version_number := l_csr_del.object_version_number;
5713 else
5714 l_object_version_number := l_csr_del.object_version_number + 1;
5715 end if;
5716 --
5717 update pay_action_information
5718 set object_version_number = l_object_version_number,
5719 action_information1 = 'D'
5720 where rowid = l_csr_del.row_id;
5721 --
5722 end loop;
5723 close csr_del;
5724 --
5725 end if;
5726 --
5727 if p_create_session then
5728 delete_session;
5729 end if;
5730 --
5731 p_object_version_number := l_assact_rec.object_version_number + 1;
5732 --
5733 --api is disable because assact has been locked.
5734 --pay_jp_isdf_dml_pkg.update_assact(
5735 -- p_action_information_id => l_assact_rec.assignment_action_id,
5736 -- p_object_version_number => p_object_version_number,
5737 -- p_transaction_status => l_assact_rec.transaction_status,
5738 -- p_finalized_date => l_assact_rec.finalized_date,
5739 -- p_finalized_by => l_assact_rec.finalized_by,
5740 -- p_user_comments => l_assact_rec.user_comments,
5741 -- p_admin_comments => l_assact_rec.admin_comments,
5742 -- p_transfer_status => 'E',
5743 -- p_transfer_date => l_assact_rec.transfer_date,
5744 -- p_expiry_date => fnd_date.date_to_canonical(p_expiry_date));
5745 update pay_jp_isdf_assact_dml_v
5746 set object_version_number = p_object_version_number,
5747 transfer_status = 'E',
5748 expiry_date = fnd_date.date_to_canonical(p_expiry_date)
5749 where row_id = l_assact_rec.row_id;
5750 --
5751 if g_debug then
5752 hr_utility.trace('end update_assact');
5753 hr_utility.set_location(l_proc,1000);
5754 end if;
5755 --
5756 end do_expire;
5757 --
5758 -- -------------------------------------------------------------------------
5759 -- get_sqlerrm (use multiple transaction)
5760 -- -------------------------------------------------------------------------
5761 function get_sqlerrm
5762 return varchar2
5763 is
5764 begin
5765 --
5766 if sqlcode = -20001 then
5767 --
5768 declare
5769 l_sqlerrm varchar2(2000) := fnd_message.get;
5770 begin
5771 if l_sqlerrm is not null then
5772 return l_sqlerrm;
5773 else
5774 return sqlerrm;
5775 end if;
5776 end;
5777 --
5778 else
5779 return sqlerrm;
5780 end if;
5781 --
5782 end get_sqlerrm;
5783 --
5784 -- -------------------------------------------------------------------------
5785 -- do_finalize (Multiple Transaction for internal use only)
5786 -- -------------------------------------------------------------------------
5787 procedure do_finalize(
5788 errbuf out nocopy varchar2,
5789 retcode out nocopy varchar2,
5790 p_payroll_action_id in number,
5791 p_user_comments in varchar2)
5792 is
5793 --
5794 l_effective_date date;
5795 --
5796 cursor csr_assact
5797 is
5798 select /*+ ORDERED */
5799 assact.action_information_id,
5800 assact.object_version_number,
5801 pp.full_name,
5802 pa.assignment_number
5803 from pay_assignment_actions paa,
5804 pay_jp_isdf_assact_v assact,
5805 per_all_assignments_f pa,
5806 per_all_people_f pp
5807 where paa.payroll_action_id = p_payroll_action_id
5808 and paa.action_status = 'C'
5809 and assact.assignment_action_id = paa.assignment_action_id
5810 and assact.transaction_status = 'N'
5811 and pa.assignment_id = assact.assignment_id
5812 and assact.effective_date
5813 between pa.effective_start_date and pa.effective_end_date
5814 and pp.person_id = pa.person_id
5815 and assact.effective_date
5816 between pp.effective_start_date and pp.effective_end_date
5817 order by lpad(pa.assignment_number,10,' '),
5818 pp.full_name;
5819 --
5820 begin
5821 --
5822 select effective_date
5823 into l_effective_date
5824 from pay_jp_isdf_pact_v
5825 where payroll_action_id = p_payroll_action_id;
5826 --
5827 insert_session(l_effective_date);
5828 commit;
5829 --
5830 fnd_file.put_line(fnd_file.output, 'Full Name Assignment Number');
5831 fnd_file.put_line(fnd_file.output, '---------------------------------------- ------------------------------');
5832 fnd_file.put_line(fnd_file.log, 'Full Name Assignment Number');
5833 fnd_file.put_line(fnd_file.log, '---------------------------------------- ------------------------------');
5834 --
5835 for l_rec in csr_assact loop
5836 --
5837 begin
5838 --
5839 do_finalize(
5840 p_action_information_id => l_rec.action_information_id,
5841 p_object_version_number => l_rec.object_version_number,
5842 p_user_comments => p_user_comments);
5843 --
5844 commit;
5845 --
5846 fnd_file.put_line(fnd_file.output, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
5847 --
5848 exception
5849 when others then
5850 --
5851 fnd_file.put_line(fnd_file.log, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
5852 fnd_file.put_line(fnd_file.log, get_sqlerrm);
5853 --
5854 end;
5855 --
5856 end loop;
5857 --
5858 delete_session;
5859 commit;
5860 --
5861 -- retcode
5862 -- 0 : Success
5863 -- 1 : Warning
5864 -- 2 : Error
5865 --
5866 retcode := 0;
5867 --
5868 end do_finalize;
5869 --
5870 -- -------------------------------------------------------------------------
5871 -- do_approve (Multiple Transaction)
5872 -- -------------------------------------------------------------------------
5873 procedure do_approve(
5874 errbuf out nocopy varchar2,
5875 retcode out nocopy varchar2,
5876 p_payroll_action_id in number)
5877 is
5878 --
5879 l_effective_date date;
5880 --
5881 cursor csr_assact
5882 is
5883 select /*+ ORDERED */
5884 assact.action_information_id,
5885 assact.object_version_number,
5886 pp.full_name,
5887 pa.assignment_number
5888 from pay_assignment_actions paa,
5889 pay_jp_isdf_assact_v assact,
5890 per_all_assignments_f pa,
5891 per_all_people_f pp
5892 where paa.payroll_action_id = p_payroll_action_id
5893 and paa.action_status = 'C'
5894 and assact.assignment_action_id = paa.assignment_action_id
5895 and assact.transaction_status = 'F'
5896 and pa.assignment_id = assact.assignment_id
5897 and assact.effective_date
5898 between pa.effective_start_date and pa.effective_end_date
5899 and pp.person_id = pa.person_id
5900 and assact.effective_date
5901 between pp.effective_start_date and pp.effective_end_date
5902 order by lpad(pa.assignment_number,10,' '),
5903 pp.full_name;
5904 --
5905 begin
5906 --
5907 select effective_date
5908 into l_effective_date
5909 from pay_jp_isdf_pact_v
5910 where payroll_action_id = p_payroll_action_id;
5911 --
5912 insert_session(l_effective_date);
5913 commit;
5914 --
5915 fnd_file.put_line(fnd_file.output, 'Full Name Assignment Number');
5916 fnd_file.put_line(fnd_file.output, '---------------------------------------- ------------------------------');
5917 fnd_file.put_line(fnd_file.log, 'Full Name Assignment Number');
5918 fnd_file.put_line(fnd_file.log, '---------------------------------------- ------------------------------');
5919 --
5920 for l_rec in csr_assact loop
5921 --
5922 begin
5923 --
5924 do_approve(
5925 p_action_information_id => l_rec.action_information_id,
5926 p_object_version_number => l_rec.object_version_number);
5927 --
5928 commit;
5929 --
5930 fnd_file.put_line(fnd_file.output, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
5931 --
5932 exception
5933 when others then
5934 --
5935 fnd_file.put_line(fnd_file.log, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
5936 fnd_file.put_line(fnd_file.log, get_sqlerrm);
5937 --
5938 end;
5939 --
5940 end loop;
5941 --
5942 delete_session;
5943 commit;
5944 --
5945 -- retcode
5946 -- 0 : Success
5947 -- 1 : Warning
5948 -- 2 : Error
5949 --
5950 retcode := 0;
5951 --
5952 end do_approve;
5953 --
5954 -- -------------------------------------------------------------------------
5955 -- do_transfer (Multiple Transaction)
5956 -- -------------------------------------------------------------------------
5957 procedure do_transfer(
5958 errbuf out nocopy varchar2,
5959 retcode out nocopy varchar2,
5960 p_payroll_action_id in number,
5961 p_transfer_date in varchar2,
5962 p_expire_after_transfer in varchar2 default 'N')
5963 is
5964 --
5965 l_effective_date date;
5966 --
5967 cursor csr_assact
5968 is
5969 select /*+ ORDERED */
5970 assact.action_information_id,
5971 assact.object_version_number,
5972 pp.full_name,
5973 pa.assignment_number
5974 from pay_assignment_actions paa,
5975 pay_jp_isdf_assact_v assact,
5976 per_all_assignments_f pa,
5977 per_all_people_f pp
5978 where paa.payroll_action_id = p_payroll_action_id
5979 and paa.action_status = 'C'
5980 and assact.assignment_action_id = paa.assignment_action_id
5981 and assact.transaction_status = 'A'
5982 and assact.transfer_status = 'U'
5983 and pa.assignment_id = assact.assignment_id
5984 and assact.effective_date
5985 between pa.effective_start_date and pa.effective_end_date
5986 and pp.person_id = pa.person_id
5987 and assact.effective_date
5988 between pp.effective_start_date and pp.effective_end_date
5989 order by lpad(pa.assignment_number,10,' '),
5990 pp.full_name;
5991 --
5992 begin
5993 --
5994 select effective_date
5995 into l_effective_date
5996 from pay_jp_isdf_pact_v
5997 where payroll_action_id = p_payroll_action_id;
5998 --
5999 if p_transfer_date is not null then
6000 l_effective_date := fnd_date.canonical_to_date(p_transfer_date);
6001 end if;
6002 --
6003 insert_session(l_effective_date);
6004 commit;
6005 --
6006 fnd_file.put_line(fnd_file.output, 'Full Name Assignment Number');
6007 fnd_file.put_line(fnd_file.output, '---------------------------------------- ------------------------------');
6008 fnd_file.put_line(fnd_file.log, 'Full Name Assignment Number');
6009 fnd_file.put_line(fnd_file.log, '---------------------------------------- ------------------------------');
6010 --
6011 for l_rec in csr_assact loop
6012 --
6013 begin
6014 --
6015 do_transfer(
6016 p_action_information_id => l_rec.action_information_id,
6017 p_object_version_number => l_rec.object_version_number,
6018 p_transfer_date => l_effective_date,
6019 p_create_session => false,
6020 p_expire_after_transfer => p_expire_after_transfer);
6021 --
6022 commit;
6023 --
6024 fnd_file.put_line(fnd_file.output, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
6025 --
6026 exception
6027 when others then
6028 --
6029 fnd_file.put_line(fnd_file.log, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
6030 fnd_file.put_line(fnd_file.log, get_sqlerrm);
6031 --
6032 end;
6033 --
6034 end loop;
6035 --
6036 delete_session;
6037 commit;
6038 --
6039 -- retcode
6040 -- 0 : Success
6041 -- 1 : Warning
6042 -- 2 : Error
6043 --
6044 retcode := 0;
6045 --
6046 end do_transfer;
6047 --
6048 -- -------------------------------------------------------------------------
6049 -- do_expire (Multiple Transaction)
6050 -- -------------------------------------------------------------------------
6051 procedure do_expire(
6052 errbuf out nocopy varchar2,
6053 retcode out nocopy varchar2,
6054 p_payroll_action_id in number,
6055 p_expiry_date in varchar2,
6056 p_mode in varchar2 default null)
6057 is
6058 --
6059 l_effective_date date;
6060 --
6061 cursor csr_assact
6062 is
6063 select /*+ ORDERED */
6064 assact.action_information_id,
6065 assact.object_version_number,
6066 pp.full_name,
6067 pa.assignment_number
6068 from pay_assignment_actions paa,
6069 pay_jp_isdf_assact_v assact,
6070 per_all_assignments_f pa,
6071 per_all_people_f pp
6072 where paa.payroll_action_id = p_payroll_action_id
6073 and paa.action_status = 'C'
6074 and assact.assignment_action_id = paa.assignment_action_id
6075 and assact.transaction_status = 'A'
6076 and assact.transfer_status = 'T'
6077 and pa.assignment_id = assact.assignment_id
6078 and assact.effective_date
6079 between pa.effective_start_date and pa.effective_end_date
6080 and pp.person_id = pa.person_id
6081 and assact.effective_date
6082 between pp.effective_start_date and pp.effective_end_date
6083 order by lpad(pa.assignment_number,10,' '),
6084 pp.full_name;
6085 --
6086 begin
6087 --
6088 select effective_date
6089 into l_effective_date
6090 from pay_jp_isdf_pact_v
6091 where payroll_action_id = p_payroll_action_id;
6092 --
6093 if p_expiry_date is not null then
6094 l_effective_date := fnd_date.canonical_to_date(p_expiry_date);
6095 end if;
6096 --
6097 insert_session(l_effective_date);
6098 commit;
6099 --
6100 fnd_file.put_line(fnd_file.output, 'Full Name Assignment Number');
6101 fnd_file.put_line(fnd_file.output, '---------------------------------------- ------------------------------');
6102 fnd_file.put_line(fnd_file.log, 'Full Name Assignment Number');
6103 fnd_file.put_line(fnd_file.log, '---------------------------------------- ------------------------------');
6104 --
6105 for l_rec in csr_assact loop
6106 --
6107 begin
6108 --
6109 do_expire(
6110 p_action_information_id => l_rec.action_information_id,
6111 p_object_version_number => l_rec.object_version_number,
6112 p_expiry_date => l_effective_date,
6113 p_create_session => false,
6114 p_mode => p_mode);
6115 --
6116 commit;
6117 --
6118 fnd_file.put_line(fnd_file.output, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
6119 --
6120 exception
6121 when others then
6122 --
6123 fnd_file.put_line(fnd_file.log, rpad(l_rec.full_name, 40) || ' ' || rpad(l_rec.assignment_number, 30));
6124 fnd_file.put_line(fnd_file.log, get_sqlerrm);
6125 --
6126 end;
6127 --
6128 end loop;
6129 --
6130 delete_session;
6131 commit;
6132 --
6133 -- retcode
6134 -- 0 : Success
6135 -- 1 : Warning
6136 -- 2 : Error
6137 --
6138 retcode := 0;
6139 --
6140 end do_expire;
6141 --
6142 end pay_jp_isdf_ss_pkg;