DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_KR_YEA_PDF_PKG

Source


1 package body pay_kr_yea_pdf_pkg as
2 /* $Header: pykrypdf.pkb 120.5.12020000.7 2013/01/10 14:02:18 mdubasi noship $ */
3 --
4   c_package  constant varchar2(30) := 'pay_kr_yea_pdf_pkg.';
5   c_legislation_code varchar2(2) := 'KR';
6 --
7   g_debug    boolean := hr_utility.debug_enabled;
8   g_upload boolean := true;
9 --
10   g_msg fnd_new_messages.message_text%type;
11 --
12   g_chunk_cnt number := 1;
13   g_file_ind number := 0;
14   g_target_soy date;
15   g_target_eoy date;
16 --
17   g_pdf_ind number := 0;
18   g_admin varchar2(1);
19   g_ss_call varchar2(1);
20   g_dpnt_ni_num per_kr_assignment_yea_info.ayi_information1%type;
21   g_dpnt_ind number;
22 --
23   type t_ass_yea_rec is record(
24     assignment_yea_info_id number,
25     file_id                number,
26     file_name              fnd_lobs.file_name%type,
27     assignment_id          number,
28     emp_num                varchar2(30),
29     emp_name               varchar2(300),
30     status                 varchar2(1));
31   type t_ass_yea_tbl is table of t_ass_yea_rec index by binary_integer;
32 --
33   g_ass_yea_tbl t_ass_yea_tbl;
34   g_ass_yea_ind number := 0;
35 --
36   type t_med_rec is record(
37     paid_amount              per_kr_assignment_yea_info.ayi_information1%type,
38     source_code              per_kr_assignment_yea_info.ayi_information1%type,
39     resident_registration_no per_kr_assignment_yea_info.ayi_information1%type,
40     disabled_or_aged         per_kr_assignment_yea_info.ayi_information1%type);
41   type t_med_tbl is table of t_med_rec index by binary_integer;
42 --
43   type t_don_rec is record(
44     ni_num                        per_kr_assignment_yea_info.ayi_information1%type,
45     donation_code                 per_kr_assignment_yea_info.ayi_information1%type,
46     sum                           per_kr_assignment_yea_info.ayi_information1%type,
47     donated_amount                per_kr_assignment_yea_info.ayi_information1%type,
48     donated_date                  per_kr_assignment_yea_info.ayi_information1%type,
49     recipient_name                per_kr_assignment_yea_info.ayi_information1%type,
50     recipient_registration_number per_kr_assignment_yea_info.ayi_information1%type,
51     donation_detail_type          per_kr_assignment_yea_info.ayi_information1%type,
52     donator_name                  per_kr_assignment_yea_info.ayi_information1%type,
53     relationship                  per_kr_assignment_yea_info.ayi_information1%type);
54   type t_don_tbl is table of t_don_rec index by binary_integer;
55 --
56   type t_educ_rec is record(
57     ni_num      per_kr_assignment_yea_info.ayi_information1%type,
58     dpnt_name   per_kr_assignment_yea_info.ayi_information1%type,
59     school_type per_kr_assignment_yea_info.ayi_information1%type,
60     nts_other   per_kr_assignment_yea_info.ayi_information1%type,
61     exp         per_kr_assignment_yea_info.ayi_information1%type);
62   type t_educ_tbl is table of t_educ_rec index by binary_integer;
63 --
64   type t_saving_rec is record(
65     priority        per_kr_assignment_yea_info.ayi_information1%type,
66     type            per_kr_assignment_yea_info.ayi_information1%type,
67     financial_inst  per_kr_assignment_yea_info.ayi_information1%type,
68     account_num     per_kr_assignment_yea_info.ayi_information1%type,
69     contributed_amt per_kr_assignment_yea_info.ayi_information1%type,
70     cont_amt_y2     per_kr_assignment_yea_info.ayi_information1%type,
71     cont_amt_y3     per_kr_assignment_yea_info.ayi_information1%type);
72   type t_saving_tbl is table of t_saving_rec index by binary_integer;
73  -- Bug :16083942  2012 pdf layout changes
74     type t_cards_rec is record(
75     key per_kr_assignment_yea_info.ayi_information1%type,
76     val per_kr_assignment_yea_info.ayi_information1%type,
77     use_place_cd number
78     );
79   type t_cards_tbl is table of t_cards_rec index by binary_integer;
80 
81      type t_uniform_rec is record(
82     key per_kr_assignment_yea_info.ayi_information1%type,
83     val per_kr_assignment_yea_info.ayi_information1%type,
84     empname per_kr_assignment_yea_info.ayi_information1%type
85     );
86   type t_uniform_tbl is table of t_uniform_rec index by binary_integer;
87 
88   type t_lthouse_rec is record(
89     key per_kr_assignment_yea_info.ayi_information1%type,
90     val per_kr_assignment_yea_info.ayi_information1%type,
91     start_date per_kr_assignment_yea_info.ayi_information1%type,
92 	debt number,
93 	fixed_rate number,
94 	defer_debt number,
95 	year_amt number
96     );
97   type t_lthouse_tbl is table of t_lthouse_rec index by binary_integer;
98  --
99   type t_dpnt_rec is record(
100     ins_prem_nts       number,
101     dis_ins_nts        number,
102     med_exp_nts        number,
103     educ_exp_nts       number,
104     card_exp_nts       number,
105     card_tm_nts        number,
106     direct_payment_nts number,
107     direct_tm_nts      number,
108     cash_exp_nts       number,
109     cash_tm_nts        number,
110     don_exp_nts        number);
111   type t_dpnt_tbl is table of t_dpnt_rec index by binary_integer;
112 --
113   type t_char_tbl is table of per_kr_assignment_yea_info.ayi_information1%type index by binary_integer;
114 --
115  type t_ass_data_rec is record(
116     pers_ins_prem                per_kr_assignment_yea_info.ayi_information1%type,
117     disabled_ins_prem            per_kr_assignment_yea_info.ayi_information1%type,
118     housing_loan_repay           per_kr_assignment_yea_info.ayi_information1%type,
119     housing_loan_date            per_kr_assignment_yea_info.ayi_information1%type,
120     lt_housing_loan_interest_rep per_kr_assignment_yea_info.ayi_information1%type,
121     lt_housing_loan_int_repay_1  per_kr_assignment_yea_info.ayi_information1%type,
122     lt_housing_loan_int_repay_2  per_kr_assignment_yea_info.ayi_information1%type,
123 	lt_2012_fixed_intr_wo_grace  per_kr_assignment_yea_info.ayi_information1%type,
124 	lt_2012_housing_other_intr   per_kr_assignment_yea_info.ayi_information1%type,
125     med_exp_aged                 per_kr_assignment_yea_info.ayi_information1%type,
126     med_exp_emp                  per_kr_assignment_yea_info.ayi_information1%type,
127     med_exp                      per_kr_assignment_yea_info.ayi_information1%type,
128     political_donation1          per_kr_assignment_yea_info.ayi_information1%type,
129     ee_educ_exp                  per_kr_assignment_yea_info.ayi_information1%type,
130 	ee_uniform_exp               per_kr_assignment_yea_info.ayi_information1%type,
131     ee_occupation_educ_exp       per_kr_assignment_yea_info.ayi_information1%type,
132     pers_pension_prem            per_kr_assignment_yea_info.ayi_information1%type,
133     small_bus_install            per_kr_assignment_yea_info.ayi_information1%type,
134     credit_card_exp              per_kr_assignment_yea_info.ayi_information1%type,
135 	credit_tm_exp                per_kr_assignment_yea_info.ayi_information1%type,
136     cash_receipt_exp             per_kr_assignment_yea_info.ayi_information1%type,
137 	cash_tm_exp                  per_kr_assignment_yea_info.ayi_information1%type,
138     direct_card_exp              per_kr_assignment_yea_info.ayi_information1%type,
139     direct_tm_exp                per_kr_assignment_yea_info.ayi_information1%type,
140     ins_exp_nts                  per_kr_assignment_yea_info.ayi_information1%type,
141     med_exp_nts                  per_kr_assignment_yea_info.ayi_information1%type,
142     educ_exp_nts                 per_kr_assignment_yea_info.ayi_information1%type,
143     card_exp_nts                 per_kr_assignment_yea_info.ayi_information1%type,
144 	card_tm_nts                  per_kr_assignment_yea_info.ayi_information1%type,
145     direct_payment_nts           per_kr_assignment_yea_info.ayi_information1%type,
146     direct_tm_nts                per_kr_assignment_yea_info.ayi_information1%type,
147 	tm_exp_nts                   per_kr_assignment_yea_info.ayi_information1%type,
148     don_exp_nts                  per_kr_assignment_yea_info.ayi_information1%type,
149     med_tbl                      t_med_tbl,
150     don_tbl                      t_don_tbl,
151     educ_tbl                     t_educ_tbl,
152 	uniform_tbl                  t_uniform_tbl,
153     sep_pen_saving_tbl           t_saving_tbl,
154     pen_saving_tbl               t_saving_tbl,
155     hou_saving_tbl               t_saving_tbl,
156     lts_saving_tbl               t_saving_tbl,
157     dpnt_ind_tbl                 t_char_tbl,
158     dpnt_tbl                     t_dpnt_tbl,
159   --
160     entry_status                 per_kr_assignment_yea_info.ayi_information1%type,
161     validation_status            per_kr_assignment_yea_info.ayi_information1%type,
162     entry_error1                 per_kr_assignment_yea_info.ayi_information1%type,
163     entry_error2                 per_kr_assignment_yea_info.ayi_information1%type,
164     entry_error3                 per_kr_assignment_yea_info.ayi_information1%type,
165     entry_error4                 per_kr_assignment_yea_info.ayi_information1%type,
166     entry_error5                 per_kr_assignment_yea_info.ayi_information1%type,
167     entry_error6                 per_kr_assignment_yea_info.ayi_information1%type,
168     entry_error7                 per_kr_assignment_yea_info.ayi_information1%type,
169     entry_error8                 per_kr_assignment_yea_info.ayi_information1%type,
170     entry_error9                 per_kr_assignment_yea_info.ayi_information1%type,
171     entry_error10                per_kr_assignment_yea_info.ayi_information1%type,
172   --
173     housing_saving_type          per_kr_assignment_yea_info.ayi_information1%type,
174     housing_saving               per_kr_assignment_yea_info.ayi_information1%type,
175     housing_purchase_date        per_kr_assignment_yea_info.ayi_information1%type,
176     lt_housing_loan_date         per_kr_assignment_yea_info.ayi_information1%type,
177     donation1                    per_kr_assignment_yea_info.ayi_information1%type,
178     hi_prem                      per_kr_assignment_yea_info.ayi_information1%type,
179     political_donation2          per_kr_assignment_yea_info.ayi_information1%type,
180     political_donation3          per_kr_assignment_yea_info.ayi_information1%type,
181     donation2                    per_kr_assignment_yea_info.ayi_information1%type,
182     donation3                    per_kr_assignment_yea_info.ayi_information1%type,
183     lt_housing_loan_date_1       per_kr_assignment_yea_info.ayi_information1%type,
184     mfr_marriage_occasions       per_kr_assignment_yea_info.ayi_information1%type,
185     mfr_funeral_occasions        per_kr_assignment_yea_info.ayi_information1%type,
186     mfr_relocation_occasions     per_kr_assignment_yea_info.ayi_information1%type,
187     ei_prem                      per_kr_assignment_yea_info.ayi_information1%type,
188     esoa_donation                per_kr_assignment_yea_info.ayi_information1%type,
189     pers_ins_name                per_kr_assignment_yea_info.ayi_information1%type,
190     med_exp_disabled             per_kr_assignment_yea_info.ayi_information1%type,
191     immigration_purpose          per_kr_assignment_yea_info.ayi_information1%type,
192     contract_date                per_kr_assignment_yea_info.ayi_information1%type,
193     expiry_date                  per_kr_assignment_yea_info.ayi_information1%type,
194     stax_applicable_flag         per_kr_assignment_yea_info.ayi_information1%type,
195     fw_application_date          per_kr_assignment_yea_info.ayi_information1%type,
196     fw_submission_date           per_kr_assignment_yea_info.ayi_information1%type,
197     tax_paid_date                per_kr_assignment_yea_info.ayi_information1%type,
198     ovs_submission_date          per_kr_assignment_yea_info.ayi_information1%type,
199     kr_ovs_location              per_kr_assignment_yea_info.ayi_information1%type,
200     kr_ovs_work_period           per_kr_assignment_yea_info.ayi_information1%type,
201     kr_ovs_responsibility        per_kr_assignment_yea_info.ayi_information1%type,
202     territory_code               per_kr_assignment_yea_info.ayi_information1%type,
203     currency_code                per_kr_assignment_yea_info.ayi_information1%type,
204     taxable                      per_kr_assignment_yea_info.ayi_information1%type,
205     taxable_subj_tax_break       per_kr_assignment_yea_info.ayi_information1%type,
206     tax_break_rate               per_kr_assignment_yea_info.ayi_information1%type,
207     tax_foreign_currency         per_kr_assignment_yea_info.ayi_information1%type,
208     tax                          per_kr_assignment_yea_info.ayi_information1%type,
209     ovs_application_date         per_kr_assignment_yea_info.ayi_information1%type,
210     housing_loan_interest_repay  per_kr_assignment_yea_info.ayi_information1%type,
211     stock_saving                 per_kr_assignment_yea_info.ayi_information1%type,
212     lt_stock_saving1             per_kr_assignment_yea_info.ayi_information1%type,
213     lt_stock_saving2             per_kr_assignment_yea_info.ayi_information1%type,
214     dpnt_direct_exp              per_kr_assignment_yea_info.ayi_information1%type,
215     giro_tuition_paid_exp        per_kr_assignment_yea_info.ayi_information1%type,
216     np_prem                      per_kr_assignment_yea_info.ayi_information1%type,
217     pers_pension_saving          per_kr_assignment_yea_info.ayi_information1%type,
218     invest_partnership_fin1      per_kr_assignment_yea_info.ayi_information1%type,
219     invest_partnership_fin2      per_kr_assignment_yea_info.ayi_information1%type,
220     emp_stock_own_plan_contri    per_kr_assignment_yea_info.ayi_information1%type,
221     credit_card_exp_dpnt         per_kr_assignment_yea_info.ayi_information1%type,
222     pen_prem                     per_kr_assignment_yea_info.ayi_information1%type,
223     ltci_prem                    per_kr_assignment_yea_info.ayi_information1%type);
224 --
225   /* same condition with EmpSearchVO.xml */
226   /* no need primary flag check for rehire */
227   cursor csr_map_name(
228     p_map_file_name in varchar2)
229   is
230   select pa.assignment_id,
231          pp.last_name||pp.first_name emp_name,
232          substrb(pp.national_identifier,1,6) res_reg_num,
233          pp.national_identifier ni_num,
234          pp.employee_number emp_num
235   from   per_kr_assignment_yea_info pkayi,
236          per_people_f pp,
237          per_periods_of_service ppos,
238          per_assignments_f pa
239   where  pa.business_group_id + 0 = g_business_group_id
240   and    pa.establishment_id = nvl(g_business_place_id,pa.establishment_id)
241   and    decode(to_char(nvl(g_assignment_set_id,-1)),
242            '-1','Y',
243            hr_assignment_set.assignment_in_set(g_assignment_set_id,pa.assignment_id)) = 'Y'
244   and    pa.assignment_type = 'E'
245   and    pa.effective_start_date <= g_target_eoy
246   and    pa.effective_end_date >= g_target_soy
247   and    ppos.period_of_service_id = pa.period_of_service_id
248   and    nvl(ppos.final_process_date,g_target_eoy)
249          between g_target_soy and g_target_eoy
250   and    pp.person_id = pa.person_id
251   and    pp.effective_start_date <= g_target_eoy
252   and    pp.effective_end_date >= g_target_soy
253   /* fetch latest emp information */
254   and    not exists(
255     select null
256     from   per_people_f pp2
257     where  pp2.person_id = pa.person_id
258     and    pp2.effective_start_date <= g_target_eoy
259     and    pp2.effective_end_date >= g_target_soy
260     and    pp2.effective_start_date < pp.effective_start_date)
261   and    ((nvl(g_map_key,'FULL_NAME') = 'FULL_NAME'
262            and p_map_file_name like pp.last_name||pp.first_name||'('||substrb(pp.national_identifier,1,6)||')%')
263          or (g_map_key = 'EMPLOYEE_NUMBER'
264             and cast(replace(lower(substrb(p_map_file_name ,instrb(p_map_file_name,'-','-1')+1)),'.pdf') as INT) = pp.employee_number))
265   and    pkayi.assignment_id (+) = pa.assignment_id
266   and    pkayi.target_year (+) = g_target_yyyy
267   and    pkayi.information_type (+) = 'KR_YEA_ENTRY_STATUS'
268   and    pkayi.ayi_information_category (+) = 'KR_YEA_ENTRY_STATUS'
269   and    decode(nvl(g_force_load,'N'),'Y','X',nvl(pkayi.ayi_information16,'X'))  <> c_process_status; /* exclude processing upload or import */
270 --
271   /* no need primary flag check for rehire */
272   cursor csr_kr_ass_yea(
273     p_assignment_yea_info_id in number,
274     p_business_group_id in number,
275     p_target_year in number,
276     p_business_place_id in number,
277     p_assignment_set_id in number)
278   is
279   select pkayi.assignment_yea_info_id,
280          pkayi.assignment_id,
281          pp.national_identifier ni_num,
282          pp.last_name||pp.first_name emp_name,
283          pp.employee_number emp_num,
284          null exclude,
285          fl.file_id,
286          fl.file_data pdf_file
287   from   per_kr_assignment_yea_info pkayi,
288          per_all_assignments_f pa,
289          per_periods_of_service ppos,
290          per_people_f pp,
291          fnd_lobs fl
292   where  pkayi.assignment_yea_info_id = nvl(p_assignment_yea_info_id,pkayi.assignment_yea_info_id)
293   and    pkayi.information_type = 'KR_YEA_ENTRY_STATUS'
294   and    pkayi.ayi_information_category = 'KR_YEA_ENTRY_STATUS'
295   and    pkayi.target_year = p_target_year
296   /* and    decode(nvl(g_admin,'N'),'Y','N',nvl(pkayi.ayi_information3,'N')) in ('N','IE') -- include case update data after import */
297   and    decode(nvl(g_force_load,'N'),'Y','X',nvl(pkayi.ayi_information16,'X')) <> c_process_status /* exclude processing upload or import */
298   and    pa.assignment_id = pkayi.assignment_id
299   and    pa.business_group_id + 0 = p_business_group_id
300   and    pa.effective_start_date <= g_target_eoy
301   and    pa.effective_end_date >= g_target_soy
302   and    pa.establishment_id = nvl(p_business_place_id,pa.establishment_id)
303   and    decode(to_char(nvl(p_assignment_set_id,-1)),
304            '-1','Y',
305            hr_assignment_set.assignment_in_set(p_assignment_set_id,pa.assignment_id)) = 'Y'
306   and    ppos.period_of_service_id = pa.period_of_service_id
307   and    pp.person_id = pa.person_id
308   and    pp.effective_start_date <= g_target_eoy
309   and    pp.effective_end_date >= g_target_soy
310   /* fetch latest emp information */
311   and    not exists(
312     select null
313     from   per_people_f pp2
314     where  pp2.person_id = pa.person_id
315     and    pp2.effective_start_date <= g_target_eoy
316     and    pp2.effective_end_date >= g_target_soy
317     and    pp2.effective_start_date < pp.effective_start_date)
318   and    nvl(ppos.final_process_date,g_target_eoy)
319          between g_target_soy and g_target_eoy
320   and    fl.file_id = fnd_number.canonical_to_number(pkayi.ayi_information15); /* ayi_information14 in ('I','U','E') */
321 --
322   type t_pdf_tbl is table of csr_kr_ass_yea%rowtype index by binary_integer;
323   g_pdf_tbl t_pdf_tbl;
324 --
325   type t_val_by_key_rec is record(
326     key per_kr_assignment_yea_info.ayi_information1%type,
327     val per_kr_assignment_yea_info.ayi_information1%type);
328   type t_val_by_key_tbl is table of t_val_by_key_rec index by binary_integer;
329 --
330 -- -------------------------------------------------------------------------
331 -- insert_session
332 -- -------------------------------------------------------------------------
333 procedure insert_session(
334             p_effective_date in date)
335 is
336 --
337   l_rowid rowid;
338 --
339   cursor csr_session
340   is
341   select rowid
342   from   fnd_sessions
343   where  session_id = userenv('sessionid')
344   for update nowait;
345 --
346 begin
347 --
348   open csr_session;
349   fetch csr_session into l_rowid;
350   --
351     if csr_session%notfound then
352     --
353       insert into fnd_sessions(
354         session_id,
355         effective_date)
356       values(
357         userenv('sessionid'),
358         p_effective_date);
359     --
360     else
361     --
362       update fnd_sessions
363       set    effective_date = p_effective_date
364       where rowid = l_rowid;
365     --
366     end if;
367   --
368   close csr_session;
369 --
370 end insert_session;
371 --
372 -- -------------------------------------------------------------------------
373 -- delete_session
374 -- -------------------------------------------------------------------------
375 procedure delete_session
376 is
377 begin
378 --
379   delete
380   from  fnd_sessions
381   where session_id = userenv('sessionid');
382 --
383 end delete_session;
384 --
385 -- -------------------------------------------------------------------------
386 -- load_init
387 -- -------------------------------------------------------------------------
388 procedure load_init(
389   p_business_group_id      in number,
390   p_target_year            in number,
391   p_business_place_id      in number default null,
392   p_assignment_set_id      in number default null,
393   p_admin                  in varchar2 default null,
394   p_remove_pdf             in varchar2 default null,
395   p_map_key                in varchar2 default null,
396   p_upload_to              in varchar2 default null,
397   p_force_load             in varchar2 default null,
398   p_skip_validate          in varchar2 default null,
399   p_show_xml               in varchar2 default null,
400   p_import_path            out nocopy varchar2,
401   p_nts_certs_path         out nocopy varchar2)
402 is
403 --
404   l_proc varchar2(80) := c_package||'load_init';
405 --
406   cursor csr_pdf_setup
407   is
408   select hoi.org_information1 import_path,
409          hoi.org_information2 nts_certs_path
410   from   hr_organization_information hoi
411   where  hoi.organization_id = p_business_group_id
412   and    hoi.org_information_context = 'KR_YEA_PDF_SETUP_BG';
413 --
414 begin
415 --
416   if g_debug then
417     hr_utility.set_location(l_proc,0);
418   end if;
419 --
420   if g_load_type is null then
421     g_load_type := 'L';
422   end if;
423 --
424   g_business_group_id := p_business_group_id;
425   g_target_yyyy       := p_target_year;
426   g_target_soy        := to_date(to_char(p_target_year)||'/01/01','YYYY/MM/DD');
427   g_target_eoy        := to_date(to_char(p_target_year)||'/12/31','YYYY/MM/DD');
428   g_business_place_id := p_business_place_id;
429   g_assignment_set_id := p_assignment_set_id;
430   g_admin             := p_admin;
431   g_remove_pdf        := p_remove_pdf;
432   g_map_key           := p_map_key;
433   g_upload_to         := p_upload_to;
434   g_force_load        := p_force_load;
435   g_skip_validate     := p_skip_validate;
436   g_show_xml          := p_show_xml;
437   --
438   g_imp_output_hd_show := 'N';
439   g_upl_output_hd_show := 'N';
440   g_chunk_cnt         := 1;
441   g_file_ind          := 0;
442 --
443   open csr_pdf_setup;
444   fetch csr_pdf_setup into g_import_path, p_nts_certs_path;
445   close csr_pdf_setup;
446 --
447   g_path_delimiter := c_path_delimiter;
448   if instrb(p_import_path,g_path_delimiter) = 0 then
449   --
450     g_path_delimiter := c_path_delimiter_win;
451   --
452   end if;
453 --
454   if instrb(p_import_path,g_path_delimiter,-1) = lengthb(p_import_path) then
455     g_import_path := substrb(g_import_path,1,lengthb(g_import_path)-1);
456   end if;
457   p_import_path := g_import_path;
458 --
459   -- for api use
460   if nvl(g_load_type,'L') <> 'I'
461   and nvl(g_ss_call,'N') <> 'Y' then
462     insert_session(g_target_eoy);
463   end if;
464 --
465   if g_debug then
466     hr_utility.trace('g_business_group_id : '||to_char(g_business_group_id));
467     hr_utility.trace('g_target_yyyy       : '||to_char(g_target_yyyy));
468     hr_utility.trace('g_business_place_id : '||to_char(g_business_place_id));
469     hr_utility.trace('g_assignment_set_id : '||to_char(g_assignment_set_id));
470     hr_utility.trace('g_remove_pdf        : '||g_remove_pdf);
471     hr_utility.trace('g_map_key           : '||g_map_key);
472     hr_utility.trace('g_force_load        : '||g_force_load);
473     hr_utility.trace('g_skip_validate     : '||g_skip_validate);
474     hr_utility.trace('p_import_path       : '||g_import_path);
475     hr_utility.trace('p_nts_certs_path    : '||p_nts_certs_path);
476   end if;
477 --
478   if g_debug then
479     hr_utility.set_location(l_proc,1000);
480   end if;
481 --
482 end load_init;
483 --
484 -- -------------------------------------------------------------------------
485 -- import_init
486 -- -------------------------------------------------------------------------
487 procedure import_init(
488   p_business_group_id in number,
489   p_target_year       in number,
490   p_business_place_id in number,
491   p_assignment_set_id in number,
492   p_remove_pdf        in varchar2,
493   p_map_key           in varchar2,
494   p_force_import      in varchar2,
495   p_import_path       out nocopy varchar2)
496 is
497 --
498   l_proc varchar2(80) := c_package||'import_init';
499 --
500   l_nts_certs_path hr_organization_information.org_information2%type;
501 --
502 begin
503 --
504   if g_debug then
505     hr_utility.set_location(l_proc,0);
506   end if;
507 --
508   g_load_type := 'I';
509 --
510   load_init(
511     p_business_group_id => p_business_group_id,
512     p_target_year       => p_target_year,
513     p_business_place_id => p_business_place_id,
514     p_assignment_set_id => p_assignment_set_id,
515     p_remove_pdf        => p_remove_pdf,
516     p_map_key           => p_map_key,
517     p_force_load        => p_force_import,
518     p_import_path       => p_import_path,
519     p_nts_certs_path    => l_nts_certs_path);
520 --
521   if g_debug then
522     hr_utility.set_location(l_proc,1000);
523   end if;
524 --
525 end import_init;
526 --
527 -- -------------------------------------------------------------------------
528 -- set_pdf_tbl
529 -- -------------------------------------------------------------------------
530 procedure set_pdf_tbl(
531   p_assignment_yea_info_id in number default null,
532   p_business_group_id      in number default null,
533   p_target_year            in number default null,
534   p_business_place_id      in number default null,
535   p_assignment_set_id      in number default null)
536 is
537 --
538   l_proc varchar2(80) := c_package||'set_pdf_tbl';
539 --
540 begin
541 --
542   if g_debug then
543     hr_utility.set_location(l_proc,0);
544   end if;
545 --
546   g_pdf_ind := 0;
547   g_pdf_tbl.delete;
548 --
549   open csr_kr_ass_yea(
550     p_assignment_yea_info_id,
551     p_business_group_id,
552     p_target_year,
553     p_business_place_id,
554     p_assignment_set_id);
555   fetch csr_kr_ass_yea bulk collect into g_pdf_tbl;
556   close csr_kr_ass_yea;
557 --
558   --fnd_file.put_line(fnd_file.log,'g_pdf_tbl.count : '||to_char(g_pdf_tbl.count));
559   --
560   if g_debug then
561     hr_utility.trace('g_pdf_tbl.count : '||to_char(g_pdf_tbl.count));
562   end if;
563 --
564   -- bulk collect start from 1
565   g_pdf_ind := g_pdf_tbl.next(0);
566 --
567   if g_debug then
568     hr_utility.set_location(l_proc,1000);
569   end if;
570 --
571 end set_pdf_tbl;
572 --
573 -- -------------------------------------------------------------------------
574 -- proc_set
575 -- -------------------------------------------------------------------------
576 procedure proc_set
577 is
578 --
579   l_proc varchar2(80) := c_package||'proc_set';
580 --
581   cursor csr_entry_status(
582     p_assignment_yea_info_id in number)
583   is
584   select rowid row_id,
585          object_version_number ovn
586   from   per_kr_assignment_yea_info
587   where  assignment_yea_info_id = p_assignment_yea_info_id
588   for update nowait;
589 --
590   l_csr_entry_status csr_entry_status%rowtype;
591 --
592 begin
593 --
594   if g_debug then
595     hr_utility.set_location(l_proc,0);
596   end if;
597 --
598   if g_pdf_tbl.count > 0 then
599   --
600     for i in g_pdf_tbl.first..g_pdf_tbl.last loop
601     --
602       begin
603       --
604         open csr_entry_status(g_pdf_tbl(i).assignment_yea_info_id);
605         fetch csr_entry_status into l_csr_entry_status;
606         close csr_entry_status;
607       --
608         if l_csr_entry_status.row_id is not null then
609         --
610           update per_kr_assignment_yea_info
611           set ayi_information14 = c_upload_status,
612               ayi_information16 = c_process_status,
613               object_version_number = l_csr_entry_status.ovn + 1
614           where rowid = l_csr_entry_status.row_id;
615         --
616         end if;
617       --
618       exception
619       when others then
620       --
621         -- set exclude for lock row, etc.
622         g_pdf_tbl(i).exclude := 'Y';
623       --
624       end;
625     --
626     end loop;
627   --
628     if nvl(g_ss_call,'N') <> 'Y' then
629     --
630       commit;
631     --
632     end if;
633   --
634   end if;
635 --
636   if g_debug then
637     hr_utility.set_location(l_proc,1000);
638   end if;
639 --
640 end proc_set;
641 --
642 -- -------------------------------------------------------------------------
643 -- upload_init
644 -- -------------------------------------------------------------------------
645 procedure upload_init(
646   p_assignment_yea_info_id in number default null,
647   p_business_group_id      in number default null, /* for get_pdf_blob_ss */
648   p_target_year            in number default null, /* for get_pdf_blob_ss */
649   p_business_place_id      in number default null,
650   p_assignment_set_id      in number default null,
651   p_admin                  in varchar2 default null,
652   p_remove_pdf             in varchar2 default null,
653   p_upload_to              in varchar2 default null,
654   p_force_upload           in varchar2 default null,
655   p_skip_validate          in varchar2 default null,
656   p_show_xml               in varchar2 default null,
657   p_nts_certs_path         out nocopy varchar2)
658 is
659 --
660   l_proc varchar2(80) := c_package||'upload_init';
661 --
662   l_import_path hr_organization_information.org_information1%type;
663 --
664 begin
665 --
666   if g_debug then
667     hr_utility.set_location(l_proc,0);
668   end if;
669 --
670   g_load_type := 'U';
671 --
672   load_init(
673     p_business_group_id => p_business_group_id,
674     p_target_year       => p_target_year,
675     p_business_place_id => p_business_place_id,
676     p_assignment_set_id => p_assignment_set_id,
677     p_admin             => p_admin,
678     p_remove_pdf        => p_remove_pdf,
679     p_upload_to         => p_upload_to,
680     p_force_load        => p_force_upload,
681     p_skip_validate     => p_skip_validate,
682     p_show_xml          => p_show_xml,
683     p_import_path       => l_import_path,
684     p_nts_certs_path    => p_nts_certs_path);
685 --
686   set_pdf_tbl(
687     p_assignment_yea_info_id => p_assignment_yea_info_id,
688     p_business_group_id      => p_business_group_id,
689     p_target_year            => p_target_year,
690     p_business_place_id      => p_business_place_id,
691     p_assignment_set_id      => p_assignment_set_id);
692 --
693   proc_set;
694 --
695   if g_debug then
696     hr_utility.set_location(l_proc,1000);
697   end if;
698 --
699 end upload_init;
700 --
701 -- -------------------------------------------------------------------------
702 -- import_kr_ass_yea
703 -- -------------------------------------------------------------------------
704 procedure import_kr_ass_yea(
705   p_assignment_id in number,
706   p_target_year in number,
707   p_file_id in number,
708   p_proc_status in varchar2,
709   p_assignment_yea_info_id out nocopy number)
710 is
711 --
712   l_proc varchar2(80) := c_package||'import_kr_ass_yea';
713 --
714   l_assignment_yea_info_id number;
715   l_object_version_number number := 1;
716 --
717   cursor csr_kr_ass_yea
718   is
719   select pkayi.assignment_yea_info_id,
720          fnd_number.canonical_to_number(pkayi.ayi_information15) file_id,
721          pkayi.object_version_number
722   from   per_kr_assignment_yea_info pkayi
723   where  pkayi.assignment_id = p_assignment_id
724   and    pkayi.target_year = p_target_year
725   and    pkayi.information_type = 'KR_YEA_ENTRY_STATUS'
726   and    pkayi.ayi_information_category = 'KR_YEA_ENTRY_STATUS'
727   for update nowait;
728 --
729   cursor csr_file(
730     p_file_id in number)
731   is
732   select file_id
733   from   fnd_lobs
734   where  file_id = p_file_id;
735 --
736   l_csr_kr_ass_yea csr_kr_ass_yea%rowtype;
737   l_csr_file csr_file%rowtype;
738 --
739 begin
740 --
741   if g_debug then
742     hr_utility.set_location(l_proc,0);
743   end if;
744 --
745   begin
746   --
747     open csr_kr_ass_yea;
748     fetch csr_kr_ass_yea into l_csr_kr_ass_yea;
749     close csr_kr_ass_yea;
750   --
751     if l_csr_kr_ass_yea.assignment_yea_info_id is not null then
752     --
753       if g_debug then
754         hr_utility.set_location(l_proc,10);
755       end if;
756     --
757       l_assignment_yea_info_id := l_csr_kr_ass_yea.assignment_yea_info_id;
758       l_object_version_number := l_csr_kr_ass_yea.object_version_number + 1;
759     --
760       update per_kr_assignment_yea_info
761       set ayi_information14 = c_import_status,
762           ayi_information15 = fnd_number.number_to_canonical(p_file_id),
763           ayi_information16 = nvl(p_proc_status,ayi_information16),
764           object_version_number = l_object_version_number
765       where assignment_yea_info_id = l_csr_kr_ass_yea.assignment_yea_info_id;
766     --
767       -- override pdf
768       if l_csr_kr_ass_yea.file_id is not null
769       and nvl(g_remove_pdf,'N') = 'Y' then
770       --
771         open csr_file(l_csr_kr_ass_yea.file_id);
772         fetch csr_file into l_csr_file;
773         close csr_file;
774       --
775         if l_csr_file.file_id is not null then
776         --
777           fnd_gfm.delete_lob(l_csr_file.file_id);
778         --
779           if g_debug then
780             hr_utility.set_location(l_proc,20);
781           end if;
782         --
783         end if;
784       --
785       end if;
786     --
787     else
788     --
789       select per_kr_assignment_yea_info_s.nextval
790       into l_assignment_yea_info_id
791       from dual;
792     --
793       insert into per_kr_assignment_yea_info(
794         assignment_yea_info_id,
795         assignment_id,
796         information_type,
797         target_year,
798         ayi_information_category,
799         ayi_information3,
800         ayi_information14,
801         ayi_information15,
802         ayi_information16,
803         object_version_number)
804       values (
805         l_assignment_yea_info_id,
806         p_assignment_id,
807         'KR_YEA_ENTRY_STATUS',
808         p_target_year,
809         'KR_YEA_ENTRY_STATUS',
810         c_entry_status,
811         c_import_status,
812         fnd_number.number_to_canonical(p_file_id),
813         p_proc_status,
814         l_object_version_number);
815     --
816     end if;
817   --
818   exception
819   when others then
820   --
821     fnd_message.set_name('PAY','PAY_KR_YEA_PDF_LOCK_STATUS');
822     fnd_message.set_token('ASS_ID',to_char(p_assignment_id));
823     g_msg := fnd_message.get;
824   --
825     fnd_file.put_line(fnd_file.log,g_msg);
826   --
827     if g_debug then
828       hr_utility.trace('skipped because p_assignment_id : '||to_char(p_assignment_id)||' entry status was locked.');
829     end if;
830   --
831   end;
832 --
833   p_assignment_yea_info_id := l_assignment_yea_info_id;
834 --
835   if g_debug then
836     hr_utility.set_location(l_proc,1000);
837   end if;
838 --
839 end import_kr_ass_yea;
840 --
841 -- -------------------------------------------------------------------------
842 -- import_file
843 -- -------------------------------------------------------------------------
844 function import_file(
845   p_file_name in varchar2)
846 return number
847 is
848 --
849   l_proc varchar2(80) := c_package||'import_file';
850 --
851   l_file_id number;
852   l_file_name fnd_lobs.file_name%type;
853   l_ass_yea_info_id number;
854 --
855   l_csr_map_name csr_map_name%rowtype;
856 --
857 begin
858 --
859   if g_debug then
860     hr_utility.set_location(l_proc,10);
861   end if;
862 --
863   g_ass_yea_tbl.delete;
864   g_ass_yea_ind := 0;
865 --
866   l_file_name := p_file_name;
867   if instrb(p_file_name,g_path_delimiter,'-1') > 0 then
868     l_file_name := substrb(l_file_name,instrb(l_file_name,g_path_delimiter,'-1'));
869   end if;
870 --
871   if g_debug then
872     hr_utility.trace('file name : '||l_file_name);
873   end if;
874 --
875   open csr_map_name(l_file_name);
876   loop
877   --
878     fetch csr_map_name into l_csr_map_name;
879     exit when csr_map_name%notfound;
880   --
881     l_ass_yea_info_id := null;
882   --
883     if g_debug then
884       hr_utility.set_location(l_proc,20);
885       hr_utility.trace('emp name    : '||l_csr_map_name.emp_name);
886       hr_utility.trace('res reg num : '||l_csr_map_name.res_reg_num);
887       hr_utility.trace('emp num     : '||l_csr_map_name.emp_num);
888       hr_utility.trace('ass id      : '||to_char(l_csr_map_name.assignment_id));
889       --
890       --fnd_file.put_line(fnd_file.log,'emp num : '||l_csr_map_name.emp_num);
891       --fnd_file.put_line(fnd_file.log,'ass id  : '||to_char(l_csr_map_name.assignment_id));
892     end if;
893   --
894     /* skip for multiple assignment */
895     if l_file_id is null then
896     --
897       l_file_id := fnd_gfm.file_create(
898                      content_type => c_pdf_mime,
899                      file_name    => g_import_path||g_path_delimiter||l_file_name,
900                      program_name => 'PAYKRYPIM',
901                      program_tag  => to_char(g_business_group_id)||':'||to_char(g_target_yyyy));
902     --
903       l_file_id := fnd_gfm.file_close(l_file_id);
904     --
905       if g_debug then
906         hr_utility.trace('file id : '||to_char(l_file_id));
907         hr_utility.set_location(l_proc,30);
908       end if;
909     --
910     end if;
911   --
912     /* allocate same file to different ass, both prev ass and rehired ass in same year */
913     if l_file_id is not null then
914     --
915       import_kr_ass_yea(l_csr_map_name.assignment_id,g_target_yyyy,l_file_id,c_process_status,l_ass_yea_info_id);
916     --
917       if l_ass_yea_info_id is not null then
918       --
919         g_ass_yea_tbl(g_ass_yea_ind).assignment_yea_info_id := l_ass_yea_info_id;
920         g_ass_yea_tbl(g_ass_yea_ind).file_id                := l_file_id;
921         g_ass_yea_tbl(g_ass_yea_ind).file_name              := l_file_name;
922         g_ass_yea_tbl(g_ass_yea_ind).assignment_id          := l_csr_map_name.assignment_id;
923         g_ass_yea_tbl(g_ass_yea_ind).emp_num                := l_csr_map_name.emp_num;
924         g_ass_yea_tbl(g_ass_yea_ind).emp_name               := l_csr_map_name.emp_name;
925         g_ass_yea_ind := g_ass_yea_ind + 1;
926       --
927       else
928       --
929         if g_debug then
930         --
931           hr_utility.trace('l_file_id : '||to_char(l_file_id)||' has been cancelled because invalid map.');
932         --
933         end if;
934       --
935         if nvl(g_remove_pdf,'N') = 'Y' then
936         --
937           fnd_gfm.delete_lob(l_file_id);
938         --
939         end if;
940       --
941         l_file_id := null;
942       --
943       end if;
944     --
945     end if;
946   --
947   end loop;
948   close csr_map_name;
949 --
950   --fnd_file.put_line(fnd_file.log,'g_ass_yea_tbl.count : '||to_char(g_ass_yea_tbl.count));
951   if g_debug then
952   --
953     hr_utility.trace('g_ass_yea_tbl.count : '||to_char(g_ass_yea_tbl.count));
954     hr_utility.trace('g_ass_yea_ind       : '||to_char(g_ass_yea_ind));
955     hr_utility.trace('l_file_id : '||to_char(l_file_id));
956     hr_utility.set_location(l_proc,1000);
957   --
958   end if;
959 --
960 return l_file_id;
961 end import_file;
962 --
963 -- -------------------------------------------------------------------------
964 -- import_post
965 -- -------------------------------------------------------------------------
966 procedure import_post
967 is
968 --
969   l_proc varchar2(80) := c_package||'import_post';
970 --
971   l_ass_cnt number := 0;
972 --
973 begin
974 --
975   if g_debug then
976     hr_utility.set_location(l_proc,0);
977   end if;
978 --
979   if g_ass_yea_tbl.count > 0 then
980   --
981     -- might update multiple assignment rows for same file id
982     for i in g_ass_yea_tbl.first..g_ass_yea_tbl.last loop
983     --
984       update per_kr_assignment_yea_info
985       set ayi_information16 = 'C',
986           object_version_number = object_version_number + 1
987       where assignment_yea_info_id = g_ass_yea_tbl(i).assignment_yea_info_id;
988     --
989       if nvl(g_load_type,'X') <> 'L' then
990       --
991         if nvl(g_imp_output_hd_show,'N') = 'N' then
992         --
993           fnd_file.put_line(fnd_file.output,'-----------------------------------------------------------------------------');
994           fnd_file.put_line(fnd_file.output,fnd_message.get_string('PAY','PAY_KR_YEA_PDF_IMP_FILE'));
995           fnd_file.put_line(fnd_file.output,'-----------------------------------------------------------------------------');
996         --
997           g_imp_output_hd_show := 'Y';
998         --
999         end if;
1000       --
1001         /* show only one for multiple assignment */
1002         if l_ass_cnt = 0 then
1003         --
1004           fnd_file.put_line(fnd_file.output,g_import_path||g_path_delimiter||g_ass_yea_tbl(i).file_name);
1005         --
1006         end if;
1007       --
1008       end if;
1009     --
1010       l_ass_cnt := l_ass_cnt + 1;
1011     --
1012     end loop;
1013   --
1014   end if;
1015 --
1016   if g_file_ind > g_chunk * g_chunk_cnt then
1017   --
1018     commit;
1019     g_chunk_cnt := g_chunk_cnt + 1;
1020   --
1021   end if;
1022 --
1023   g_file_ind := g_file_ind + 1;
1024 --
1025   if g_debug then
1026     hr_utility.trace('l_ass_cnt : '||to_char(l_ass_cnt));
1027     hr_utility.set_location(l_proc,1000);
1028   end if;
1029 --
1030 end import_post;
1031 --
1032 -- -------------------------------------------------------------------------
1033 -- import_error
1034 -- -------------------------------------------------------------------------
1035 procedure import_error
1036 is
1037 --
1038   l_proc varchar2(80) := c_package||'import_error';
1039 --
1040 begin
1041 --
1042   if g_debug then
1043     hr_utility.set_location(l_proc,0);
1044   end if;
1045 --
1046   if g_ass_yea_tbl.count > 0 then
1047   --
1048     -- might update multiple assignment rows for same file id
1049     for i in g_ass_yea_tbl.first..g_ass_yea_tbl.last loop
1050     --
1051       update per_kr_assignment_yea_info
1052       set ayi_information14 = null,
1053           ayi_information15 = null,
1054           ayi_information16 = null,
1055           object_version_number = object_version_number + 1
1056       where assignment_yea_info_id = g_ass_yea_tbl(i).assignment_yea_info_id;
1057     --
1058       if nvl(g_remove_pdf,'N') = 'Y' then
1059       --
1060         fnd_gfm.delete_lob(g_ass_yea_tbl(i).file_id);
1061       --
1062       end if;
1063     --
1064     end loop;
1065   --
1066   end if;
1067 --
1068   if g_debug then
1069     hr_utility.set_location(l_proc,1000);
1070   end if;
1071 --
1072 end import_error;
1073 --
1074 -- -------------------------------------------------------------------------
1075 -- get_pdf_blob
1076 -- -------------------------------------------------------------------------
1077 -- called from conc
1078 procedure get_pdf_blob(
1079   p_emp_num  out nocopy varchar2,
1080   p_emp_name out nocopy varchar2,
1081   p_pdf_pwd  out nocopy varchar2,
1082   p_blob     out nocopy blob)
1083 is
1084 --
1085   l_proc varchar2(80) := c_package||'get_pdf_blob';
1086 --
1087 begin
1088 --
1089   if g_debug then
1090     hr_utility.set_location(l_proc,0);
1091   end if;
1092 --
1093   -- blob will be null if g_pdf_ind is null (reached end)
1094   if g_pdf_ind is not null then
1095   --
1096     if nvl(g_pdf_tbl(g_pdf_ind).exclude,'N') <> 'Y' then
1097     --
1098       p_emp_num  := g_pdf_tbl(g_pdf_ind).emp_num;
1099       p_emp_name := g_pdf_tbl(g_pdf_ind).emp_name;
1100       p_pdf_pwd  := substrb(g_pdf_tbl(g_pdf_ind).ni_num,-7);
1101       p_blob     := g_pdf_tbl(g_pdf_ind).pdf_file;
1102     --
1103       --fnd_file.put_line(fnd_file.log,'come get_pdf_blob : '||to_char(g_pdf_tbl(g_pdf_ind).assignment_id)||','||g_pdf_tbl(g_pdf_ind).emp_num);
1104       if g_debug then
1105         hr_utility.trace('g_pdf_tbl('||to_char(g_pdf_ind)||').assignment_id : '||to_char(g_pdf_tbl(g_pdf_ind).assignment_id));
1106         hr_utility.trace('g_pdf_tbl('||to_char(g_pdf_ind)||').ni_num        : '||g_pdf_tbl(g_pdf_ind).ni_num);
1107         hr_utility.trace('g_pdf_tbl('||to_char(g_pdf_ind)||').emp_num       : '||g_pdf_tbl(g_pdf_ind).emp_num);
1108         hr_utility.trace('g_pdf_tbl('||to_char(g_pdf_ind)||').emp_name      : '||g_pdf_tbl(g_pdf_ind).emp_name);
1109       end if;
1110     --
1111     end if;
1112   --
1113   end if;
1114 --
1115   if g_debug then
1116     hr_utility.set_location(l_proc,1000);
1117   end if;
1118 --
1119 end get_pdf_blob;
1120 --
1121 -- -------------------------------------------------------------------------
1122 -- get_pdf_blob_ss
1123 -- -------------------------------------------------------------------------
1124 -- called from ss
1125 procedure get_pdf_blob_ss(
1126  p_assignment_yea_info_id in number,
1127  p_business_group_id  in  number,
1128  p_target_year 	in  number,
1129  p_business_place_id  in number,
1130  p_force_upload       in varchar2,
1131  p_nts_certs_path         out nocopy varchar2,
1132  p_emp_num    out nocopy varchar2,
1133  p_emp_name   out nocopy varchar2,
1134  p_pdf_pwd    out nocopy varchar2,
1135  p_blob       out nocopy blob)
1136 is
1137 --
1138   l_proc varchar2(80) := c_package||'get_pdf_blob_ss';
1139   l_emp_num varchar2(30);
1140   l_emp_name varchar2(300);
1141 --
1142 begin
1143 --
1144   if g_debug then
1145     hr_utility.set_location(l_proc,0);
1146     hr_utility.trace('p_assignment_yea_info_id: '||p_assignment_yea_info_id);
1147     hr_utility.trace('p_force_upload: '||p_force_upload);
1148 
1149   end if;
1150 --
1151   g_ss_call := 'Y';
1152 --
1153   upload_init(
1154     p_assignment_yea_info_id => p_assignment_yea_info_id,
1155     p_business_group_id  => p_business_group_id,
1156     p_target_year  => p_target_year,
1157     p_business_place_id  => p_business_place_id,
1158     p_force_upload       => p_force_upload,
1159     p_nts_certs_path         => p_nts_certs_path);
1160   --
1161   get_pdf_blob(
1162     p_emp_num  => p_emp_num,
1163     p_emp_name => p_emp_name,
1164     p_pdf_pwd  => p_pdf_pwd,
1165     p_blob     => p_blob);
1166 --
1167   g_ss_call := null;
1168 --
1169   if g_debug then
1170     hr_utility.trace('p_emp_num: '||p_emp_num);
1171     hr_utility.trace('p_emp_name: '||p_emp_name);
1172     hr_utility.trace('p_pdf_pwd: '||p_pdf_pwd);
1173     hr_utility.trace('p_nts_certs_path : '||p_pdf_pwd);
1174     hr_utility.set_location(l_proc,1000);
1175   end if;
1176 --
1177 end get_pdf_blob_ss;
1178 --
1179 -- -------------------------------------------------------------------------
1180 -- load_map_file
1181 -- -------------------------------------------------------------------------
1182 procedure load_map_file(
1183   p_file_name in varchar2,
1184   p_file_map out nocopy varchar2,
1185   p_emp_num  out nocopy varchar2,
1186   p_ni_num   out nocopy varchar2,
1187   p_emp_name out nocopy varchar2,
1188   p_pdf_pwd  out nocopy varchar2)
1189 is
1190 --
1191   l_proc varchar2(80) := c_package||'load_map_file';
1192 --
1193   l_file_name fnd_lobs.file_name%type;
1194 --
1195   l_csr_map_name csr_map_name%rowtype;
1196 --
1197 begin
1198 --
1199   if g_debug then
1200     hr_utility.set_location(l_proc,10);
1201   end if;
1202 --
1203   l_file_name := p_file_name;
1204   if instrb(p_file_name,g_path_delimiter,'-1') > 0 then
1205     l_file_name := substrb(l_file_name,instrb(l_file_name,g_path_delimiter,'-1'));
1206   end if;
1207 --
1208   if g_debug then
1209     hr_utility.trace('file name : '||l_file_name);
1210   end if;
1211 --
1212   open csr_map_name(l_file_name);
1213   loop
1214   --
1215     fetch csr_map_name into l_csr_map_name;
1216     exit when csr_map_name%notfound;
1217   --
1218     if g_debug then
1219       hr_utility.set_location(l_proc,20);
1220       hr_utility.trace('emp name    : '||l_csr_map_name.emp_name);
1221       hr_utility.trace('ni num      : '||l_csr_map_name.ni_num);
1222       hr_utility.trace('emp num     : '||l_csr_map_name.emp_num);
1223       hr_utility.trace('ass id      : '||to_char(l_csr_map_name.assignment_id));
1224     end if;
1225   --
1226     /* skip for multiple assignment */
1227     if p_file_map is null then
1228     --
1229       p_file_map := 'Y';
1230       --
1231       p_emp_num  := l_csr_map_name.emp_num;
1232       p_ni_num   := l_csr_map_name.ni_num;
1233       p_emp_name := l_csr_map_name.emp_name;
1234       p_pdf_pwd  := substrb(l_csr_map_name.ni_num,-7);
1235     --
1236     end if;
1237   --
1238   end loop;
1239   close csr_map_name;
1240 --
1241   if nvl(p_file_map,'N') <> 'Y' then
1242   --
1243     p_file_map := 'N';
1244   --
1245   end if;
1246 --
1247   if g_debug then
1248   --
1249     hr_utility.trace('p_file_map : '||p_file_map);
1250     hr_utility.trace('p_emp_num  : '||p_emp_num);
1251     hr_utility.trace('p_ni_num   : '||p_ni_num);
1252     hr_utility.trace('p_emp_name : '||p_emp_name);
1253     hr_utility.trace('p_pdf_pwd  : '||p_pdf_pwd);
1254     hr_utility.set_location(l_proc,1000);
1255   --
1256   end if;
1257 --
1258 end load_map_file;
1259 --
1260 -- -------------------------------------------------------------------------
1261 -- cnv_ni
1262 -- -------------------------------------------------------------------------
1263 function cnv_ni(
1264   p_text in varchar2)
1265 return varchar2
1266 is
1267 begin
1268 --
1269 return replace(p_text,'-','');
1270 --
1271 end cnv_ni;
1272 --
1273 -- -------------------------------------------------------------------------
1274 -- load_validate
1275 -- -------------------------------------------------------------------------
1276 function load_validate(
1277   p_emp_num  in varchar2,
1278   p_ni_num   in varchar2,
1279   p_emp_name in varchar2,
1280   p_xml      in clob)
1281 return number
1282 is
1283 --
1284   l_proc varchar2(80) := c_package||'load_validate';
1285 --
1286   xml xmltype;
1287   xml_doc dbms_xmldom.domdocument;
1288 --
1289   doc_nodelist dbms_xmldom.domnodelist;
1290   doc_node dbms_xmldom.domnode;
1291   year_nodelist dbms_xmldom.domnodelist;
1292   year_node dbms_xmldom.domnode;
1293 --
1294   l_doc_cnt number;
1295   l_year_cnt number;
1296 --
1297   l_year varchar2(4);
1298 --
1299   form_nodelist dbms_xmldom.domnodelist;
1300   form_node dbms_xmldom.domnode;
1301   man_nodelist dbms_xmldom.domnodelist;
1302   man_node dbms_xmldom.domnode;
1303 --
1304   l_form_cnt number;
1305   l_man_cnt number;
1306 --
1307   l_ni_num varchar2(30);
1308   l_emp_name varchar2(300);
1309 --
1310   l_ora_code number := 0; /* success */
1311 --
1312 begin
1313 --
1314   if g_debug then
1315     hr_utility.set_location(l_proc,0);
1316   end if;
1317 --
1318   if nvl(g_skip_validate,'N') = 'N' then
1319   --
1320     xml := xmltype.createxml(p_xml);
1321     xml_doc := dbms_xmldom.newdomdocument(xml);
1322   --
1323     doc_nodelist := dbms_xmldom.getelementsbytagname(xml_doc,'doc');
1324     l_doc_cnt := dbms_xmldom.getlength(doc_nodelist);
1325   --
1326     -- validation year
1327     -- looks isnull have bug in 9i so need cnt chk
1328     if not dbms_xmldom.isnull(doc_nodelist)
1329     and l_doc_cnt > 0 then
1330     --
1331       doc_node := dbms_xmldom.item(doc_nodelist,0);
1332       year_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(doc_node),'att_year');
1333       l_year_cnt := dbms_xmldom.getlength(year_nodelist);
1334     --
1335       if not dbms_xmldom.isnull(year_nodelist)
1336       and l_year_cnt > 0 then
1337       --
1338         year_node := dbms_xmldom.item(year_nodelist,0);
1339         l_year := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(year_node));
1340       --
1341         if l_year <> to_char(g_target_yyyy) then
1342         --
1343           l_ora_code := 202; /* Invalid Year */
1344         --
1345           if g_debug then
1346             hr_utility.trace('l_year : '||l_year||' <> g_target_year : '||to_char(g_target_yyyy));
1347           end if;
1348         --
1349         end if;
1350       --
1351       else
1352       --
1353         l_ora_code := 201; /* Invalid Data */
1354       --
1355       end if;
1356     --
1357     else
1358     --
1359       l_ora_code := 201; /* Invalid Data */
1360     --
1361     end if;
1362   --
1363     if l_ora_code = 0 then
1364     --
1365       form_nodelist := dbms_xmldom.getelementsbytagname(xml_doc,'form');
1366       l_form_cnt := dbms_xmldom.getlength(form_nodelist);
1367     --
1368       if not dbms_xmldom.isnull(form_nodelist)
1369       and l_form_cnt > 0 then
1370       --
1371         -- check only first node only for performance reason
1372         form_node := dbms_xmldom.item(form_nodelist,0);
1373       --
1374         man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(form_node),'man');
1375         l_man_cnt := dbms_xmldom.getlength(man_nodelist);
1376       --
1377         if not dbms_xmldom.isnull(man_nodelist)
1378         and l_man_cnt > 0 then
1379         --
1380           -- need to check by finding employee info
1381           <<man_loop>>
1382           for l_man_ind in 0..l_man_cnt - 1 loop
1383           --
1384             man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
1385           --
1386             if nvl(dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'resid'),'X') = cnv_ni(p_ni_num) then
1387             --
1388               l_ni_num := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'resid');
1389               l_emp_name := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'name');
1390             --
1391               exit man_loop;
1392             --
1393             end if;
1394           --
1395           end loop man_loop;
1396         --
1397           if nvl(l_ni_num,'X') <> cnv_ni(p_ni_num) then
1398           --
1399             l_ora_code := 203; /* Incorrect NI */
1400           --
1401             if g_debug then
1402               hr_utility.trace('l_ni_num : '||l_ni_num||' <> p_ni_num : '||cnv_ni(p_ni_num));
1403             end if;
1404           --
1405           end if;
1406         --
1407         end if;
1408       --
1409         if l_ora_code = 0 then
1410         --
1411           if nvl(l_emp_name,'X') <> p_emp_name then
1412           --
1413             l_ora_code := 204; /* Incorrect Emp Name */
1414           --
1415             if g_debug then
1416               hr_utility.trace('l_emp_name : '||l_emp_name||' <> p_emp_name : '||p_emp_name);
1417             end if;
1418           --
1419           end if;
1420         --
1421         end if;
1422       --
1423       else
1424       --
1425         l_ora_code := 201;
1426       --
1427       end if;
1428     --
1429     end if;
1430   --
1431   end if;
1432 --
1433   if g_debug then
1434     hr_utility.trace('l_ora_code : '||to_char(l_ora_code));
1435     hr_utility.set_location(l_proc,1000);
1436   end if;
1437 --
1438 return l_ora_code;
1439 end load_validate;
1440 --
1441 -- -------------------------------------------------------------------------
1442 -- upload_validate
1443 -- -------------------------------------------------------------------------
1444 function upload_validate(
1445   p_xml in clob)
1446 return number
1447 is
1448 --
1449   l_proc varchar2(80) := c_package||'upload_validate';
1450 --
1451   l_ora_code number := 0; /* success */
1452 --
1453 begin
1454 --
1455   if g_debug then
1456     hr_utility.set_location(l_proc,0);
1457   end if;
1458 --
1459   l_ora_code := load_validate(
1460                   p_emp_num  => g_pdf_tbl(g_pdf_ind).emp_num,
1461                   p_ni_num   => g_pdf_tbl(g_pdf_ind).ni_num,
1462                   p_emp_name => g_pdf_tbl(g_pdf_ind).emp_name,
1463                   p_xml      => p_xml);
1464 --
1465   if g_debug then
1466     hr_utility.trace('l_ora_code : '||to_char(l_ora_code));
1467     hr_utility.set_location(l_proc,1000);
1468   end if;
1469 --
1470 return l_ora_code;
1471 end upload_validate;
1472 --
1473 -- -------------------------------------------------------------------------
1474 -- get_item_values_in_form
1475 -- -------------------------------------------------------------------------
1476 function get_item_values_in_form(
1477   p_form_node in dbms_xmldom.domnode,
1478   p_form_type in varchar2,
1479   p_data_type in varchar2,
1480   p_item_name in varchar2)
1481 return t_char_tbl
1482 is
1483 --
1484   l_proc varchar2(80) := c_package||'get_item_values_in_form';
1485 --
1486   man_nodelist dbms_xmldom.domnodelist;
1487   man_node dbms_xmldom.domnode;
1488   data_nodelist dbms_xmldom.domnodelist;
1489   data_node dbms_xmldom.domnode;
1490   item_nodelist dbms_xmldom.domnodelist;
1491   item_node dbms_xmldom.domnode;
1492 --
1493   l_man_cnt number;
1494   l_data_cnt number;
1495   l_item_cnt number;
1496 --
1497   l_value_ind number := 0;
1498   l_value_tbl t_char_tbl;
1499 --
1500 begin
1501 --
1502   if g_debug then
1503     hr_utility.set_location(l_proc,0);
1504   end if;
1505 --
1506   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
1507   --
1508     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
1509     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
1510   --
1511     if not dbms_xmldom.isnull(man_nodelist)
1512     and l_man_cnt > 0 then
1513     --
1514       for l_man_ind in 0..l_man_cnt - 1 loop
1515       --
1516         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
1517       --
1518         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
1519         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
1520       --
1521         if not dbms_xmldom.isnull(data_nodelist)
1522         and l_data_cnt > 0 then
1523         --
1524           for l_data_ind in 0..l_data_cnt - 1 loop
1525           --
1526             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
1527           --
1528             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
1529             --
1530               item_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_name);
1531               l_item_cnt := dbms_xmldom.getlength(item_nodelist);
1532             --
1533               if not dbms_xmldom.isnull(item_nodelist)
1534               and l_item_cnt > 0 then
1535               --
1536                 item_node := dbms_xmldom.item(item_nodelist,0);
1537               --
1538                 l_value_tbl(l_value_ind) := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_node));
1539                 l_value_ind := l_value_ind + 1;
1540               --
1541               end if;
1542             --
1543             end if;
1544           --
1545           end loop;
1546         --
1547         end if;
1548       --
1549       end loop;
1550     --
1551     end if;
1552   --
1553   end if;
1554 --
1555   if g_debug then
1556     hr_utility.trace('l_man_cnt : l_data_cnt : l_item_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_item_cnt));
1557     hr_utility.trace('l_value_ind : l_value_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_value_tbl.count));
1558     hr_utility.set_location(l_proc,1000);
1559   end if;
1560 --
1561   return l_value_tbl;
1562 --
1563 end get_item_values_in_form;
1564 --
1565 -- -------------------------------------------------------------------------
1566 -- get_item_values_in_form
1567 -- -------------------------------------------------------------------------
1568 function get_item_values_in_form(
1569   p_form_node in dbms_xmldom.domnode,
1570   p_form_type in varchar2,
1571   p_man_key   in varchar2,
1572   p_data_type in varchar2,
1573   p_item_name in varchar2)
1574 return t_val_by_key_tbl
1575 is
1576 --
1577   l_proc varchar2(80) := c_package||'get_item_values_in_form';
1578 --
1579   man_nodelist dbms_xmldom.domnodelist;
1580   man_node dbms_xmldom.domnode;
1581   data_nodelist dbms_xmldom.domnodelist;
1582   data_node dbms_xmldom.domnode;
1583   item_nodelist dbms_xmldom.domnodelist;
1584   item_node dbms_xmldom.domnode;
1585 --
1586   l_man_key per_kr_assignment_yea_info.ayi_information1%type;
1587 --
1588   l_man_cnt number;
1589   l_data_cnt number;
1590   l_item_cnt number;
1591 --
1592   l_value_ind number := 0;
1593   l_values_tbl t_val_by_key_tbl;
1594 --
1595 begin
1596 --
1597   if g_debug then
1598     hr_utility.set_location(l_proc,0);
1599   end if;
1600 --
1601   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
1602   --
1603     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
1604     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
1605   --
1606     if not dbms_xmldom.isnull(man_nodelist)
1607     and l_man_cnt > 0 then
1608     --
1609       for l_man_ind in 0..l_man_cnt - 1 loop
1610       --
1611         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
1612       --
1613         l_man_key := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),p_man_key);
1614       --
1615         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
1616         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
1617       --
1618         if not dbms_xmldom.isnull(data_nodelist)
1619         and l_data_cnt > 0 then
1620         --
1621           for l_data_ind in 0..l_data_cnt - 1 loop
1622           --
1623             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
1624           --
1625             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
1626             --
1627               item_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_name);
1628               l_item_cnt := dbms_xmldom.getlength(item_nodelist);
1629             --
1630               if not dbms_xmldom.isnull(item_nodelist)
1631               and l_item_cnt > 0 then
1632               --
1633                 item_node := dbms_xmldom.item(item_nodelist,0);
1634               --
1635                 l_values_tbl(l_value_ind).key := l_man_key;
1636                 l_values_tbl(l_value_ind).val := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_node));
1637                 l_value_ind := l_value_ind + 1;
1638               --
1639               end if;
1640             --
1641             end if;
1642           --
1643           end loop;
1644         --
1645         end if;
1646       --
1647       end loop;
1648     --
1649     end if;
1650   --
1651   end if;
1652 --
1653   if g_debug then
1654     hr_utility.trace('l_man_cnt : l_data_cnt : l_item_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_item_cnt));
1655     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
1656     hr_utility.set_location(l_proc,1000);
1657   end if;
1658 --
1659   return l_values_tbl;
1660 --
1661 end get_item_values_in_form;
1662 --
1663 -- -------------------------------------------------------------------------
1664 -- get_item_values_in_form
1665 -- -------------------------------------------------------------------------
1666 function get_item_values_in_form(
1667   p_form_node in dbms_xmldom.domnode,
1668   p_form_type in varchar2,
1669   p_data_type in varchar2,
1670   p_item_key  in varchar2,
1671   p_item_name in varchar2)
1672 return t_val_by_key_tbl
1673 is
1674 --
1675   l_proc varchar2(80) := c_package||'get_item_values_in_form';
1676 --
1677   man_nodelist dbms_xmldom.domnodelist;
1678   man_node dbms_xmldom.domnode;
1679   data_nodelist dbms_xmldom.domnodelist;
1680   data_node dbms_xmldom.domnode;
1681   item_key_nodelist dbms_xmldom.domnodelist;
1682   item_key_node dbms_xmldom.domnode;
1683   item_nodelist dbms_xmldom.domnodelist;
1684   item_node dbms_xmldom.domnode;
1685 --
1686   l_item_key per_kr_assignment_yea_info.ayi_information1%type;
1687 --
1688   l_man_cnt number;
1689   l_data_cnt number;
1690   l_item_key_cnt number;
1691   l_item_cnt number;
1692 --
1693   l_value_ind number := 0;
1694   l_values_tbl t_val_by_key_tbl;
1695 --
1696 begin
1697 --
1698   if g_debug then
1699     hr_utility.set_location(l_proc,0);
1700   end if;
1701 --
1702   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
1703   --
1704     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
1705     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
1706   --
1707     if not dbms_xmldom.isnull(man_nodelist)
1708     and l_man_cnt > 0 then
1709     --
1710       for l_man_ind in 0..l_man_cnt - 1 loop
1711       --
1712         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
1713       --
1714         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
1715         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
1716       --
1717         if not dbms_xmldom.isnull(data_nodelist)
1718         and l_data_cnt > 0 then
1719         --
1720           for l_data_ind in 0..l_data_cnt - 1 loop
1721           --
1722             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
1723           --
1724             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
1725             --
1726               l_item_key := null;
1727             --
1728               item_key_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_key);
1729               l_item_key_cnt := dbms_xmldom.getlength(item_key_nodelist);
1730             --
1731               if not dbms_xmldom.isnull(item_key_nodelist)
1732               and l_item_key_cnt > 0 then
1733               --
1734                 item_key_node := dbms_xmldom.item(item_key_nodelist,0);
1735               --
1736                 l_item_key := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_key_node));
1737               --
1738               end if;
1739             --
1740               item_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_name);
1741               l_item_cnt := dbms_xmldom.getlength(item_nodelist);
1742             --
1743               if not dbms_xmldom.isnull(item_nodelist)
1744               and l_item_cnt > 0 then
1745               --
1746                 item_node := dbms_xmldom.item(item_nodelist,0);
1747               --
1748                 l_values_tbl(l_value_ind).key := l_item_key;
1749                 l_values_tbl(l_value_ind).val := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_node));
1750                 l_value_ind := l_value_ind + 1;
1751               --
1752               end if;
1753             --
1754             end if;
1755           --
1756           end loop;
1757         --
1758         end if;
1759       --
1760       end loop;
1761     --
1762     end if;
1763   --
1764   end if;
1765 --
1766   if g_debug then
1767     hr_utility.trace('l_man_cnt : l_data_cnt : l_item_key_cnt : l_item_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_item_key_cnt)||' : '||to_char(l_item_cnt));
1768     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
1769     hr_utility.set_location(l_proc,1000);
1770   end if;
1771 --
1772   return l_values_tbl;
1773 --
1774 end get_item_values_in_form;
1775 --
1776 -- -------------------------------------------------------------------------
1777 -- get_donate_values
1778 -- -------------------------------------------------------------------------
1779 function get_donate_values(
1780   p_form_node in dbms_xmldom.domnode)
1781 return t_don_tbl
1782 is
1783 --
1784   l_proc varchar2(80) := c_package||'get_donate_values';
1785 --
1786   man_nodelist dbms_xmldom.domnodelist;
1787   man_node dbms_xmldom.domnode;
1788   data_nodelist dbms_xmldom.domnodelist;
1789   data_node dbms_xmldom.domnode;
1790   sum_nodelist dbms_xmldom.domnodelist;
1791   sum_node dbms_xmldom.domnode;
1792   amt_nodelist dbms_xmldom.domnodelist;
1793   amt_node dbms_xmldom.domnode;
1794 --
1795   l_man_cnt  number;
1796   l_data_cnt number;
1797   l_sum_cnt  number;
1798   l_amt_cnt  number;
1799 --
1800   l_ni_num     per_kr_assignment_yea_info.ayi_information1%type;
1801   l_don_name   per_kr_assignment_yea_info.ayi_information1%type;
1802   l_don_code   per_kr_assignment_yea_info.ayi_information1%type;
1803   l_sum        per_kr_assignment_yea_info.ayi_information1%type;
1804   l_amt        per_kr_assignment_yea_info.ayi_information1%type;
1805   l_don_date   per_kr_assignment_yea_info.ayi_information1%type;
1806   l_rec_name   per_kr_assignment_yea_info.ayi_information1%type;
1807   l_rec_bg_num per_kr_assignment_yea_info.ayi_information1%type;
1808 --
1809   l_value_ind number := 0;
1810   l_values_tbl t_don_tbl;
1811 --
1812 begin
1813 --
1814   if g_debug then
1815     hr_utility.set_location(l_proc,0);
1816   end if;
1817 --
1818   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = 'L101Y' then
1819   --
1820     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
1821     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
1822   --
1823     if not dbms_xmldom.isnull(man_nodelist)
1824     and l_man_cnt > 0 then
1825     --
1826       for l_man_ind in 0..l_man_cnt - 1 loop
1827       --
1828         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
1829         l_ni_num := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'resid');
1830         l_don_name := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'name');
1831       --
1832         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
1833         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
1834       --
1835         if not dbms_xmldom.isnull(data_nodelist)
1836         and l_data_cnt > 0 then
1837         --
1838           for l_data_ind in 0..l_data_cnt - 1 loop
1839           --
1840             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
1841           --
1842             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = 'L01' then
1843             --
1844               l_don_code := dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'donation_cd');
1845               l_rec_name := dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'trade_nm');
1846               l_rec_bg_num := dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'busnid');
1847               l_sum := null;
1848             --
1849               sum_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'sum');
1850               l_sum_cnt := dbms_xmldom.getlength(sum_nodelist);
1851             --
1852               if not dbms_xmldom.isnull(sum_nodelist)
1853               and l_sum_cnt > 0 then
1854               --
1855                 for l_sum_ind in 0..l_sum_cnt - 1 loop
1856                 --
1857                   sum_node := dbms_xmldom.item(sum_nodelist,l_sum_ind);
1858                 --
1859                   l_sum := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(sum_node));
1860                 --
1861                 end loop;
1862               --
1863               end if;
1864             --
1865               amt_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'amt');
1866               l_amt_cnt := dbms_xmldom.getlength(amt_nodelist);
1867             --
1868               if not dbms_xmldom.isnull(amt_nodelist)
1869               and l_amt_cnt > 0 then
1870               --
1871                 for l_amt_ind in 0..l_amt_cnt - 1 loop
1872                 --
1873                   amt_node := dbms_xmldom.item(amt_nodelist,l_amt_ind);
1874                 --
1875 				  IF l_don_code <> '30' THEN
1876                   l_values_tbl(l_value_ind).ni_num                        := l_ni_num;
1877                   l_values_tbl(l_value_ind).donator_name                  := l_don_name;
1878                   l_values_tbl(l_value_ind).donation_code                 := l_don_code;
1879                   l_values_tbl(l_value_ind).sum                           := l_sum;
1880                   l_values_tbl(l_value_ind).donated_amount                := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(amt_node));
1881                   l_values_tbl(l_value_ind).donated_date                  := dbms_xmldom.getattribute(dbms_xmldom.makeelement(amt_node),'dd');
1882                   l_values_tbl(l_value_ind).recipient_name                := l_rec_name;
1883                   l_values_tbl(l_value_ind).recipient_registration_number := l_rec_bg_num;
1884                   l_value_ind := l_value_ind + 1;
1885 				  END IF;
1886                 --
1887                 end loop;
1888               --
1889               else
1890               --
1891 			    IF l_don_code <> '30' THEN
1892                 l_values_tbl(l_value_ind).ni_num                        := l_ni_num;
1893                 l_values_tbl(l_value_ind).donator_name                  := l_don_name;
1894                 l_values_tbl(l_value_ind).donation_code                 := l_don_code;
1895                 l_values_tbl(l_value_ind).sum                           := l_sum;
1896                 l_values_tbl(l_value_ind).recipient_name                := l_rec_name;
1897                 l_values_tbl(l_value_ind).recipient_registration_number := l_rec_bg_num;
1898                 l_value_ind := l_value_ind + 1;
1899 				END IF;
1900               --
1901               end if;
1902             --
1903             end if;
1904           --
1905           end loop;
1906         --
1907         end if;
1908       --
1909       end loop;
1910     --
1911     end if;
1912   --
1913   end if;
1914 --
1915   if g_debug then
1916     hr_utility.trace('l_man_cnt : l_data_cnt : l_sum_cnt : l_amt_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_sum_cnt)||' : '||to_char(l_amt_cnt));
1917     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
1918     hr_utility.set_location(l_proc,1000);
1919   end if;
1920 --
1921   return l_values_tbl;
1922 --
1923 end get_donate_values;
1924 --
1925 -- -------------------------------------------------------------------------
1926 -- get_dep_eduction_values
1927 -- -------------------------------------------------------------------------
1928 function get_dep_eduction_values(
1929   p_form_node in dbms_xmldom.domnode,
1930   p_ni_num    in varchar2)
1931 return t_educ_tbl
1932 is
1933 --
1934   l_proc varchar2(80) := c_package||'get_dep_eduction_values';
1935 --
1936   man_nodelist dbms_xmldom.domnodelist;
1937   man_node dbms_xmldom.domnode;
1938   data_nodelist dbms_xmldom.domnodelist;
1939   data_node dbms_xmldom.domnode;
1940   sum_nodelist dbms_xmldom.domnodelist;
1941   sum_node dbms_xmldom.domnode;
1942 --
1943   l_man_cnt  number;
1944   l_data_cnt number;
1945   l_sum_cnt  number;
1946 --
1947   l_ni_num    per_kr_assignment_yea_info.ayi_information1%type;
1948   l_dpnt_name per_kr_assignment_yea_info.ayi_information1%type;
1949   l_exp       per_kr_assignment_yea_info.ayi_information1%type;
1950 --
1951   l_value_ind number := 0;
1952   l_values_tbl t_educ_tbl;
1953   l_school_type per_kr_assignment_yea_info.ayi_information1%type;
1954 --
1955 begin
1956 --
1957   if g_debug then
1958     hr_utility.set_location(l_proc,0);
1959   end if;
1960 --
1961   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = 'C101Y' then
1962   --
1963     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
1964     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
1965   --
1966     if not dbms_xmldom.isnull(man_nodelist)
1967     and l_man_cnt > 0 then
1968     --
1969       for l_man_ind in 0..l_man_cnt - 1 loop
1970       --
1971         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
1972         l_ni_num := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'resid');
1973         l_dpnt_name := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'name');
1974       --
1975         -- capture only dependent info
1976         if dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'resid') <> p_ni_num then
1977         --
1978           data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
1979           l_data_cnt := dbms_xmldom.getlength(data_nodelist);
1980         --
1981           if not dbms_xmldom.isnull(data_nodelist)
1982           and l_data_cnt > 0 then
1983           --
1984             for l_data_ind in 0..l_data_cnt - 1 loop
1985             --
1986               l_exp := null;
1987             --
1988               data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
1989             --
1990               sum_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'sum');
1991               l_sum_cnt := dbms_xmldom.getlength(sum_nodelist);
1992             --
1993               if not dbms_xmldom.isnull(sum_nodelist)
1994               and l_sum_cnt > 0 then
1995               --
1996                 for l_sum_ind in 0..l_sum_cnt - 1 loop
1997                 --
1998                   sum_node := dbms_xmldom.item(sum_nodelist,l_sum_ind);
1999                 --
2000                   l_exp := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(sum_node));
2001                 --
2002                 end loop;
2003               --
2004               end if;
2005             --
2006 			l_school_type := dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'edu_tp');
2007 
2008 			-- Mapping the school types to the 'D','H','P','U'
2009 			if l_school_type IN ('1','8','F','G') THEN
2010 			l_school_type := 'P';
2011 			elsif l_school_type IN ('2','3','4') THEN
2012 			l_school_type := 'H';
2013 			elsif l_school_type IN ('5','6','7','C','D','E') THEN
2014 			l_school_type := 'U';
2015 			elsif l_school_type IN ('H','J','K') THEN
2016 			l_school_type := 'D';
2017 			end if;
2018 
2019               l_values_tbl(l_value_ind).ni_num      := l_ni_num;
2020               l_values_tbl(l_value_ind).dpnt_name   := l_dpnt_name;
2021               l_values_tbl(l_value_ind).school_type := l_school_type;
2022               l_values_tbl(l_value_ind).nts_other   := '1'; /* KR_YEA_DONATION_DETAIL_TYPE */
2023               l_values_tbl(l_value_ind).exp         := l_exp;
2024               l_value_ind := l_value_ind + 1;
2025             --
2026             end loop;
2027           --
2028           end if;
2029         --
2030         end if;
2031       --
2032       end loop;
2033     --
2034     end if;
2035   --
2036   end if;
2037 --
2038   if g_debug then
2039     hr_utility.trace('l_man_cnt : l_data_cnt : l_sum_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_sum_cnt));
2040     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
2041     hr_utility.set_location(l_proc,1000);
2042   end if;
2043 --
2044   return l_values_tbl;
2045 --
2046 end get_dep_eduction_values;
2047 --
2048 -- -------------------------------------------------------------------------
2049 -- get_saving_values
2050 -- -------------------------------------------------------------------------
2051 function get_saving_values(
2052   p_form_node in dbms_xmldom.domnode,
2053   p_form_type in varchar2,
2054   p_data_type in varchar2,
2055   p_item_type in varchar2 default null,
2056   p_lts_type in varchar2 default null)
2057 return t_saving_tbl
2058 is
2059 --
2060   l_proc varchar2(80) := c_package||'get_saving_values';
2061 --
2062   man_nodelist dbms_xmldom.domnodelist;
2063   man_node dbms_xmldom.domnode;
2064   data_nodelist dbms_xmldom.domnodelist;
2065   data_node dbms_xmldom.domnode;
2066   type_nodelist dbms_xmldom.domnodelist;
2067   type_node dbms_xmldom.domnode;
2068   sum_nodelist dbms_xmldom.domnodelist;
2069   sum_node dbms_xmldom.domnode;
2070 --
2071   l_man_cnt  number;
2072   l_data_cnt number;
2073   l_type_cnt number;
2074   l_sum_cnt  number;
2075 --
2076   l_type   per_kr_assignment_yea_info.ayi_information1%type;
2077   l_sum    per_kr_assignment_yea_info.ayi_information1%type;
2078  -- l_sum_y2 per_kr_assignment_yea_info.ayi_information1%type;
2079   l_sum_y3 per_kr_assignment_yea_info.ayi_information1%type;
2080 --
2081   l_value_ind number := 0;
2082   l_values_tbl t_saving_tbl;
2083 --
2084 begin
2085 --
2086   if g_debug then
2087     hr_utility.set_location(l_proc,0);
2088   end if;
2089 --
2090   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
2091   --
2092     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
2093     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
2094   --
2095     if not dbms_xmldom.isnull(man_nodelist)
2096     and l_man_cnt > 0 then
2097     --
2098       for l_man_ind in 0..l_man_cnt - 1 loop
2099       --
2100         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
2101       --
2102         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
2103         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
2104       --
2105         if not dbms_xmldom.isnull(data_nodelist)
2106         and l_data_cnt > 0 then
2107         --
2108           for l_data_ind in 0..l_data_cnt - 1 loop
2109           --
2110             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
2111           --
2112             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
2113             --
2114               l_type   := null;
2115               l_sum    := null;
2116              -- l_sum_y2 := null;
2117               l_sum_y3 := null;
2118             --
2119               if p_item_type is not null then
2120               --
2121                 type_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_type);
2122                 l_type_cnt := dbms_xmldom.getlength(type_nodelist);
2123               --
2124                 if not dbms_xmldom.isnull(type_nodelist)
2125                 and l_type_cnt > 0 then
2126                 --
2127                   for l_type_ind in 0..l_type_cnt - 1 loop
2128                   --
2129                     type_node := dbms_xmldom.item(type_nodelist,l_type_ind);
2130                   --
2131                     l_type := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(type_node));
2132                   --
2133                   end loop;
2134                 --
2135                 end if;
2136               --
2137               end if;
2138             --
2139               sum_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'sum');
2140               l_sum_cnt := dbms_xmldom.getlength(sum_nodelist);
2141             --
2142               if not dbms_xmldom.isnull(sum_nodelist)
2143               and l_sum_cnt > 0 then
2144               --
2145                 for l_sum_ind in 0..l_sum_cnt - 1 loop
2146                 --
2147                   sum_node := dbms_xmldom.item(sum_nodelist,l_sum_ind);
2148                 --
2149                   l_sum    := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(sum_node));
2150                 --
2151                   if nvl(p_lts_type,'N') = 'Y' then
2152                   --
2153                  --  l_sum_y2 := dbms_xmldom.getattribute(dbms_xmldom.makeelement(sum_node),'sum_y2');
2154                     l_sum_y3 := dbms_xmldom.getattribute(dbms_xmldom.makeelement(sum_node),'sum_y3');
2155                   --
2156                   end if;
2157                 --
2158                 end loop;
2159               --
2160               end if;
2161             --
2162               l_values_tbl(l_value_ind).type            := l_type;
2163               l_values_tbl(l_value_ind).financial_inst  := dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'trade_nm');
2164               l_values_tbl(l_value_ind).account_num     := dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'acc_no');
2165               l_values_tbl(l_value_ind).contributed_amt := l_sum;
2166               l_values_tbl(l_value_ind).cont_amt_y2     := 0;
2167               l_values_tbl(l_value_ind).cont_amt_y3     := l_sum_y3;
2168               l_value_ind := l_value_ind + 1;
2169             --
2170             end if;
2171           --
2172           end loop;
2173         --
2174         end if;
2175       --
2176       end loop;
2177     --
2178     end if;
2179   --
2180   end if;
2181 --
2182   if g_debug then
2183     hr_utility.trace('l_man_cnt : l_data_cnt : l_type_cnt : l_sum_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_type_cnt)||' : '||to_char(l_sum_cnt));
2184     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
2185     hr_utility.set_location(l_proc,1000);
2186   end if;
2187 --
2188   return l_values_tbl;
2189 --
2190 end get_saving_values;
2191 --
2192 -- -------------------------------------------------------------------------
2193 -- get_card_values 2012 Changes
2194 -- -------------------------------------------------------------------------
2195 function get_card_values(
2196   p_form_node in dbms_xmldom.domnode,
2197   p_form_type in varchar2,
2198   p_man_key   in varchar2,
2199   p_data_type in varchar2,
2200   p_item_name in varchar2)
2201 return t_cards_tbl
2202 is
2203 --
2204   l_proc varchar2(80) := c_package||'get_item_values_in_form';
2205 --
2206   man_nodelist dbms_xmldom.domnodelist;
2207   man_node dbms_xmldom.domnode;
2208   data_nodelist dbms_xmldom.domnodelist;
2209   data_node dbms_xmldom.domnode;
2210   item_nodelist dbms_xmldom.domnodelist;
2211   item_node dbms_xmldom.domnode;
2212 --
2213   l_man_key per_kr_assignment_yea_info.ayi_information1%type;
2214 --
2215   l_man_cnt number;
2216   l_data_cnt number;
2217   l_item_cnt number;
2218 --
2219   l_value_ind number := 0;
2220   l_values_tbl t_cards_tbl;
2221 --
2222 begin
2223 --
2224   if g_debug then
2225     hr_utility.set_location(l_proc,0);
2226   end if;
2227 --
2228   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
2229   --
2230     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
2231     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
2232   --
2233     if not dbms_xmldom.isnull(man_nodelist)
2234     and l_man_cnt > 0 then
2235     --
2236       for l_man_ind in 0..l_man_cnt - 1 loop
2237       --
2238         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
2239       --
2240         l_man_key := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),p_man_key);
2241       --
2242         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
2243         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
2244       --
2245         if not dbms_xmldom.isnull(data_nodelist)
2246         and l_data_cnt > 0 then
2247         --
2248           for l_data_ind in 0..l_data_cnt - 1 loop
2249           --
2250             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
2251           --
2252             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
2253             --
2254               item_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_name);
2255               l_item_cnt := dbms_xmldom.getlength(item_nodelist);
2256             --
2257               if not dbms_xmldom.isnull(item_nodelist)
2258               and l_item_cnt > 0 then
2259               --
2260                 item_node := dbms_xmldom.item(item_nodelist,0);
2261               --
2262                 l_values_tbl(l_value_ind).key := l_man_key;
2263                 l_values_tbl(l_value_ind).val := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_node));
2264 				l_values_tbl(l_value_ind).use_place_cd := dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'use_place_cd');
2265                 l_value_ind := l_value_ind + 1;
2266               --
2267               end if;
2268             --
2269             end if;
2270           --
2271           end loop;
2272         --
2273         end if;
2274       --
2275       end loop;
2276     --
2277     end if;
2278   --
2279   end if;
2280 --
2281   if g_debug then
2282     hr_utility.trace('l_man_cnt : l_data_cnt : l_item_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_item_cnt));
2283     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
2284     hr_utility.set_location(l_proc,1000);
2285   end if;
2286 --
2287   return l_values_tbl;
2288 --
2289 end get_card_values;
2290 --
2291 -- -------------------------------------------------------------------------
2292 -- get_uniform_values
2293 -- ------------------------------------------------------------------------
2294 function get_uniform_values(
2295   p_form_node in dbms_xmldom.domnode,
2296   p_form_type in varchar2,
2297   p_man_key   in varchar2,
2298   p_data_type in varchar2,
2299   p_item_name in varchar2)
2300 return t_uniform_tbl
2301 is
2302 --
2303   l_proc varchar2(80) := c_package||'get_item_values_in_form';
2304 --
2305   man_nodelist dbms_xmldom.domnodelist;
2306   man_node dbms_xmldom.domnode;
2307   data_nodelist dbms_xmldom.domnodelist;
2308   data_node dbms_xmldom.domnode;
2309   item_nodelist dbms_xmldom.domnodelist;
2310   item_node dbms_xmldom.domnode;
2311 --
2312   l_man_key per_kr_assignment_yea_info.ayi_information1%type;
2313 --
2314   l_man_cnt number;
2315   l_data_cnt number;
2316   l_item_cnt number;
2317 --
2318   l_value_ind number := 0;
2319   l_values_tbl t_uniform_tbl;
2320 --
2321 begin
2322 --
2323   if g_debug then
2324     hr_utility.set_location(l_proc,0);
2325   end if;
2326 --
2327   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
2328   --
2329     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
2330     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
2331   --
2332     if not dbms_xmldom.isnull(man_nodelist)
2333     and l_man_cnt > 0 then
2334     --
2335       for l_man_ind in 0..l_man_cnt - 1 loop
2336       --
2337         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
2338       --
2339         l_man_key := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),p_man_key);
2340 
2341 	        data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
2342         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
2343       --
2344         if not dbms_xmldom.isnull(data_nodelist)
2345         and l_data_cnt > 0 then
2346         --
2347           for l_data_ind in 0..l_data_cnt - 1 loop
2348           --
2349             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
2350           --
2351             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
2352             --
2353               item_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_name);
2354               l_item_cnt := dbms_xmldom.getlength(item_nodelist);
2355             --
2356               if not dbms_xmldom.isnull(item_nodelist)
2357               and l_item_cnt > 0 then
2358               --
2359                 item_node := dbms_xmldom.item(item_nodelist,0);
2360               --
2361                 l_values_tbl(l_value_ind).key := l_man_key;
2362                 l_values_tbl(l_value_ind).val := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_node));
2363 				l_values_tbl(l_value_ind).empname :=  dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),'name');
2364                 l_value_ind := l_value_ind + 1;
2365               --
2366               end if;
2367             --
2368             end if;
2369           --
2370           end loop;
2371         --
2372         end if;
2373       --
2374       end loop;
2375     --
2376     end if;
2377   --
2378   end if;
2379 --
2380   if g_debug then
2381     hr_utility.trace('l_man_cnt : l_data_cnt : l_item_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_item_cnt));
2382     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
2383     hr_utility.set_location(l_proc,1000);
2384   end if;
2385 --
2386   return l_values_tbl;
2387 --
2388 end get_uniform_values;
2389 -- -------------------------------------------------------------------------
2390 -- get_long_term_house_values
2391 -- -------------------------------------------------------------------------
2392 function get_long_term_house_values(
2393   p_form_node in dbms_xmldom.domnode,
2394   p_form_type in varchar2,
2395   p_data_type in varchar2,
2396   p_item_key  in varchar2,
2397   p_item_name in varchar2)
2398 return t_lthouse_tbl
2399 is
2400 --
2401   l_proc varchar2(80) := c_package||'get_item_values_in_form';
2402 --
2403   man_nodelist dbms_xmldom.domnodelist;
2404   man_node dbms_xmldom.domnode;
2405   data_nodelist dbms_xmldom.domnodelist;
2406   data_node dbms_xmldom.domnode;
2407   item_key_nodelist dbms_xmldom.domnodelist;
2408   item_key_node dbms_xmldom.domnode;
2409   item_nodelist dbms_xmldom.domnodelist;
2410   item_node dbms_xmldom.domnode;
2411   date_key_node dbms_xmldom.domnode;
2412   date_nodelist dbms_xmldom.domnodelist;
2413 
2414   debt_key_node dbms_xmldom.domnode;
2415   debt_nodelist dbms_xmldom.domnodelist;
2416 
2417   fixed_key_node dbms_xmldom.domnode;
2418   fixed_nodelist dbms_xmldom.domnodelist;
2419 
2420   not_debt_key_node dbms_xmldom.domnode;
2421   not_debt_nodelist dbms_xmldom.domnodelist;
2422 
2423   yr_rede_key_node dbms_xmldom.domnode;
2424   yr_rede_amt_nodelst dbms_xmldom.domnodelist;
2425 --
2426   l_item_key per_kr_assignment_yea_info.ayi_information1%type;
2427   l_date_key per_kr_assignment_yea_info.ayi_information1%type;
2428   l_debt_key per_kr_assignment_yea_info.ayi_information1%type;
2429   l_fixed_key per_kr_assignment_yea_info.ayi_information1%type;
2430   l_not_debt_key per_kr_assignment_yea_info.ayi_information1%type;
2431   l_yr_rede_key per_kr_assignment_yea_info.ayi_information1%type;
2432 --
2433   l_man_cnt number;
2434   l_data_cnt number;
2435   l_item_key_cnt number;
2436   l_item_cnt number;
2437   l_date_key_cnt number;
2438   l_debt_key_cnt number;
2439   l_fixed_key_cnt number;
2440   l_not_debt_key_cnt number;
2441   l_yr_amt_key_cnt number;
2442 
2443 --
2444   l_value_ind number := 0;
2445   l_values_tbl t_lthouse_tbl;
2446 --
2447 begin
2448 --
2449   if g_debug then
2450     hr_utility.set_location(l_proc,0);
2451   end if;
2452 --
2453   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
2454   --
2455     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
2456     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
2457   --
2458     if not dbms_xmldom.isnull(man_nodelist)
2459     and l_man_cnt > 0 then
2460     --
2461       for l_man_ind in 0..l_man_cnt - 1 loop
2462       --
2463         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
2464       --
2465         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
2466         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
2467       --
2468         if not dbms_xmldom.isnull(data_nodelist)
2469         and l_data_cnt > 0 then
2470         --
2471           for l_data_ind in 0..l_data_cnt - 1 loop
2472           --
2473             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
2474           --
2475             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
2476             --
2477               l_item_key := null;
2478             --
2479               item_key_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_key);
2480               l_item_key_cnt := dbms_xmldom.getlength(item_key_nodelist);
2481             --
2482 			  date_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'start_dt');
2483 			  l_date_key_cnt := dbms_xmldom.getlength(date_nodelist);
2484 
2485 			  debt_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'debt');
2486 			  l_debt_key_cnt := dbms_xmldom.getlength(debt_nodelist);
2487 
2488 			  fixed_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'fixed_rate_debt');
2489 			  l_fixed_key_cnt := dbms_xmldom.getlength(fixed_nodelist);
2490 
2491 			  not_debt_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'not_defer_debt');
2492 			  l_not_debt_key_cnt := dbms_xmldom.getlength(not_debt_nodelist);
2493 
2494 			  yr_rede_amt_nodelst := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),'this_year_rede_amt');
2495 			  l_yr_amt_key_cnt := dbms_xmldom.getlength(yr_rede_amt_nodelst);
2496 
2497               if not dbms_xmldom.isnull(item_key_nodelist)
2498               and l_item_key_cnt > 0 then
2499               --
2500                 item_key_node := dbms_xmldom.item(item_key_nodelist,0);
2501               --
2502                 l_item_key := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_key_node));
2503               --
2504               end if;
2505 
2506               if not dbms_xmldom.isnull(date_nodelist)
2507               and l_date_key_cnt > 0 then
2508               --
2509                 date_key_node := dbms_xmldom.item(date_nodelist,0);
2510               --
2511                 l_date_key := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(date_key_node));
2512               --
2513               end if;
2514             --
2515 			 if not dbms_xmldom.isnull(debt_nodelist)
2516               and l_debt_key_cnt > 0 then
2517               --
2518                 debt_key_node := dbms_xmldom.item(debt_nodelist,0);
2519               --
2520                 l_debt_key := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(debt_key_node));
2521               --
2522               end if;
2523 
2524 			  if not dbms_xmldom.isnull(fixed_nodelist)
2525               and l_fixed_key_cnt > 0 then
2526               --
2527                 fixed_key_node := dbms_xmldom.item(fixed_nodelist,0);
2528               --
2529                 l_fixed_key := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(date_key_node));
2530               --
2531               end if;
2532 
2533 			  if not dbms_xmldom.isnull(not_debt_nodelist)
2534               and l_not_debt_key_cnt > 0 then
2535               --
2536                 not_debt_key_node := dbms_xmldom.item(not_debt_nodelist,0);
2537               --
2538                 l_not_debt_key := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(not_debt_key_node));
2539               --
2540               end if;
2541 
2542 			  if not dbms_xmldom.isnull(yr_rede_amt_nodelst)
2543               and l_yr_amt_key_cnt > 0 then
2544               --
2545                 yr_rede_key_node := dbms_xmldom.item(yr_rede_amt_nodelst,0);
2546               --
2547                 l_yr_rede_key := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(yr_rede_key_node));
2548               --
2549               end if;
2550 
2551               item_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_name);
2552               l_item_cnt := dbms_xmldom.getlength(item_nodelist);
2553             --
2554               if not dbms_xmldom.isnull(item_nodelist)
2555               and l_item_cnt > 0 then
2556               --
2557                 item_node := dbms_xmldom.item(item_nodelist,0);
2558               --
2559                 l_values_tbl(l_value_ind).key := l_item_key;
2560                 l_values_tbl(l_value_ind).val := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(item_node));
2561 				l_values_tbl(l_value_ind).start_date := l_date_key;
2562 				l_values_tbl(l_value_ind).debt := l_debt_key;
2563 				l_values_tbl(l_value_ind).fixed_rate := l_fixed_key;
2564 				l_values_tbl(l_value_ind).defer_debt := l_not_debt_key;
2565 				l_values_tbl(l_value_ind).year_amt := l_yr_rede_key;
2566                 l_value_ind := l_value_ind + 1;
2567               --
2568               end if;
2569             --
2570             end if;
2571           --
2572           end loop;
2573         --
2574         end if;
2575       --
2576       end loop;
2577     --
2578     end if;
2579   --
2580   end if;
2581 --
2582   if g_debug then
2583     hr_utility.trace('l_man_cnt : l_data_cnt : l_item_key_cnt : l_item_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_item_key_cnt)||' : '||to_char(l_item_cnt));
2584     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
2585     hr_utility.set_location(l_proc,1000);
2586   end if;
2587 --
2588   return l_values_tbl;
2589 --
2590 end get_long_term_house_values;
2591 --
2592 -- -------------------------------------------------------------------------
2593 -- get_item_attribute_in_data
2594 -- -------------------------------------------------------------------------
2595 function get_item_attribute_in_data(
2596   p_form_node in dbms_xmldom.domnode,
2597   p_form_type in varchar2,
2598   p_man_key   in varchar2,
2599   p_data_type in varchar2,
2600   p_item_name in varchar2,
2601   p_item_type in varchar2)
2602 return t_val_by_key_tbl
2603 is
2604 --
2605   l_proc varchar2(80) := c_package||'get_item_attribute_in_data';
2606 --
2607   man_nodelist dbms_xmldom.domnodelist;
2608   man_node dbms_xmldom.domnode;
2609   data_nodelist dbms_xmldom.domnodelist;
2610   data_node dbms_xmldom.domnode;
2611   item_nodelist dbms_xmldom.domnodelist;
2612   item_node dbms_xmldom.domnode;
2613 --
2614   l_man_key per_kr_assignment_yea_info.ayi_information1%type;
2615 --
2616   l_man_cnt number;
2617   l_data_cnt number;
2618   l_item_cnt number;
2619 --
2620   l_value_ind number := 0;
2621   l_values_tbl t_val_by_key_tbl;
2622 --
2623 begin
2624 --
2625   if g_debug then
2626     hr_utility.set_location(l_proc,0);
2627   end if;
2628 --
2629   if dbms_xmldom.getattribute(dbms_xmldom.makeelement(p_form_node),'form_cd') = p_form_type then
2630   --
2631     man_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(p_form_node),'man');
2632     l_man_cnt := dbms_xmldom.getlength(man_nodelist);
2633   --
2634     if not dbms_xmldom.isnull(man_nodelist)
2635     and l_man_cnt > 0 then
2636     --
2637       for l_man_ind in 0..l_man_cnt - 1 loop
2638       --
2639         man_node := dbms_xmldom.item(man_nodelist,l_man_ind);
2640       --
2641         l_man_key := dbms_xmldom.getattribute(dbms_xmldom.makeelement(man_node),p_man_key);
2642       --
2643         data_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(man_node),'data');
2644         l_data_cnt := dbms_xmldom.getlength(data_nodelist);
2645       --
2646         if not dbms_xmldom.isnull(data_nodelist)
2647         and l_data_cnt > 0 then
2648         --
2649           for l_data_ind in 0..l_data_cnt - 1 loop
2650           --
2651             data_node := dbms_xmldom.item(data_nodelist,l_data_ind);
2652           --
2653             if dbms_xmldom.getattribute(dbms_xmldom.makeelement(data_node),'dat_cd') = p_data_type then
2654             --
2655               item_nodelist := dbms_xmldom.getelementsbytagname(dbms_xmldom.makeelement(data_node),p_item_name);
2656               l_item_cnt := dbms_xmldom.getlength(item_nodelist);
2657             --
2658               if not dbms_xmldom.isnull(item_nodelist)
2659               and l_item_cnt > 0 then
2660               --
2661                 item_node := dbms_xmldom.item(item_nodelist,0);
2662               --
2663                 l_values_tbl(l_value_ind).key := l_man_key;
2664                 l_values_tbl(l_value_ind).val := dbms_xmldom.getattribute(dbms_xmldom.makeelement(item_node),p_item_type);
2665                 l_value_ind := l_value_ind + 1;
2666               --
2667               end if;
2668             --
2669             end if;
2670           --
2671           end loop;
2672         --
2673         end if;
2674       --
2675       end loop;
2676     --
2677     end if;
2678   --
2679   end if;
2680 --
2681   if g_debug then
2682     hr_utility.trace('l_man_cnt : l_data_cnt : l_item_cnt : '||to_char(l_man_cnt)||' : '||to_char(l_data_cnt)||' : '||to_char(l_item_cnt));
2683     hr_utility.trace('l_value_ind : l_values_tbl.count : '||to_char(l_value_ind)||' : '||to_char(l_values_tbl.count));
2684     hr_utility.set_location(l_proc,1000);
2685   end if;
2686 --
2687   return l_values_tbl;
2688 --
2689 end get_item_attribute_in_data;
2690 --
2691 -- -------------------------------------------------------------------------
2692 -- cnv_m
2693 -- -------------------------------------------------------------------------
2694 function cnv_m(
2695   p_text in number)
2696 return varchar2
2697 is
2698 begin
2699 --
2700 return to_char(p_text,fnd_currency.get_format_mask('KRW',40));
2701 --
2702 end cnv_m;
2703 --
2704 -- -------------------------------------------------------------------------
2705 -- cnv_m
2706 -- -------------------------------------------------------------------------
2707 function cnv_m(
2708   p_text in number,
2709   p_mask in varchar2)
2710 return varchar2
2711 is
2712 --
2713 begin
2714 --
2715 return to_char(p_text,fnd_currency.get_format_mask(p_mask,40));
2716 --
2717 end cnv_m;
2718 --
2719 -- -------------------------------------------------------------------------
2720 -- cnv_reg
2721 -- -------------------------------------------------------------------------
2722 function cnv_reg(
2723   p_text in varchar2)
2724 return varchar2
2725 is
2726 --
2727   l_text varchar2(30);
2728 --
2729 begin
2730 --
2731   l_text := p_text;
2732 --
2733   if not (instrb(l_text,'-') > 0) then
2734   --
2735     if lengthb(p_text) = 10 then
2736     --
2737       l_text := substrb(p_text,1,3)||'-'||substrb(p_text,4,2)||'-'||substrb(p_text,6,5);
2738     --
2739     elsif lengthb(p_text) = 13 then
2740     --
2741       l_text := substrb(p_text,1,6)||'-'||substrb(p_text,7,7);
2742     --
2743     end if;
2744   --
2745   end if;
2746 --
2747 return l_text;
2748 --
2749 end cnv_reg;
2750 --
2751 -- -------------------------------------------------------------------------
2752 -- get_dpnt_ind
2753 -- -------------------------------------------------------------------------
2754 function get_dpnt_ind(
2755   p_dpnt_ind_tbl in t_char_tbl,
2756   p_ni_num       in varchar2)
2757 return number
2758 is
2759 --
2760   l_dpnt_ind number;
2761 --
2762 begin
2763 --
2764 /*  if g_dpnt_ni_num is not null
2765   and g_dpnt_ind is not null then
2766   --
2767     if g_dpnt_ni_num = p_ni_num then
2768     --
2769       l_dpnt_ind := g_dpnt_ind;
2770     --
2771     end if;
2772   --
2773   else*/ -- bug 13928375
2774   --
2775     if p_dpnt_ind_tbl.count > 0 then
2776     --
2777       <<dpnt_ind_tbl_loop>>
2778       for i in p_dpnt_ind_tbl.first..p_dpnt_ind_tbl.last loop
2779       --
2780         if p_dpnt_ind_tbl(i) = p_ni_num then
2781         --
2782           l_dpnt_ind := i;
2783         --
2784           g_dpnt_ni_num := p_ni_num;
2785           g_dpnt_ind := l_dpnt_ind;
2786         --
2787           exit dpnt_ind_tbl_loop;
2788         --
2789         end if;
2790       --
2791       end loop dpnt_ind_tbl_loop;
2792     --
2793     end if;
2794   --
2795  -- end if;
2796 --
2797   return l_dpnt_ind;
2798 --
2799 end get_dpnt_ind;
2800 --
2801 -- -------------------------------------------------------------------------
2802 -- get_relship
2803 -- -------------------------------------------------------------------------
2804 function get_relship(
2805   p_assignment_id    in number,
2806   p_information_type in varchar2,
2807   p_ni_num           in varchar2)
2808 return varchar2
2809 is
2810 --
2811   l_ni_num varchar2(30);
2812   l_relship varchar2(30);
2813 --
2814   -- same with DetailMedicalRelationshipVO
2815   cursor csr_med_relship
2816   is
2817    select code contact_type
2818   from  (select pcr_pp.national_identifier,
2819                  nvl(pcr.cont_information11,
2820                    decode(pcr.contact_type,
2821                      'P','1',
2822                      'S','3',
2823                      'A','4',
2824                      'C','4',
2825                      'R','4',
2826                      'O','4',
2827                      'T','4',
2828                      'BROTHER','5',
2829                      'SISTER','5',
2830                      '6')) code
2831           from   per_assignments_f pa,
2832                  per_contact_relationships pcr,
2833                  per_people_f pcr_pp
2834           where  pa.assignment_id = p_assignment_id
2835           and    g_target_eoy
2836                  between pa.effective_start_date and pa.effective_end_date
2837           and    pcr.person_id = pa.person_id
2838           and    pcr_pp.person_id = pcr.contact_person_id
2839           and    g_target_eoy
2840                  between pcr_pp.effective_start_date and pcr_pp.effective_end_date
2841          UNION ALL
2842              select ppf.national_identifier, '0' code
2843          from per_people_f ppf
2844         ,per_assignments_f pa
2845         where pa.person_id = ppf.person_id
2846         and pa.assignment_id = p_assignment_id
2847         and g_target_eoy between pa.effective_start_date and pa.effective_end_date
2848         and  g_target_eoy  between ppf.effective_start_date and ppf.effective_end_date
2849       )
2850   where national_identifier = l_ni_num;
2851 
2852 --
2853   -- same with DetailDonationRelationshipVO
2854   cursor csr_don_relship
2855   is
2856   select code contact_type
2857   from  (select pcr_pp.national_identifier,
2858                  decode(nvl(cont_information11,
2859             decode(contact_type, 'S','3','P','1','B','5','SISTER','5'	,'A','4','C','4','R','4','O','4','T','4','6')),'1','4','5','5','4','3','3','2','7','3','2','4','6') code
2860           from   per_assignments_f pa,
2861                  per_contact_relationships pcr,
2862                  per_people_f pcr_pp
2863           where  pa.assignment_id = p_assignment_id
2864           and    g_target_eoy between pa.effective_start_date and pa.effective_end_date
2865           and    pcr.person_id = pa.person_id
2866           and    pcr_pp.person_id = pcr.contact_person_id
2867           and    g_target_eoy  between pcr_pp.effective_start_date and pcr_pp.effective_end_date
2868 		 and      pcr.cont_information1 ='Y'
2869      and  pcr.cont_information2 = 'Y'
2870        UNION ALL
2871              select ppf.national_identifier, '0' code
2872          from per_people_f ppf
2873         ,per_assignments_f pa
2874         where pa.person_id = ppf.person_id
2875         and pa.assignment_id = p_assignment_id
2876         and g_target_eoy between pa.effective_start_date and pa.effective_end_date
2877         and  g_target_eoy  between ppf.effective_start_date and ppf.effective_end_date)
2878   where code in ('5','4','3','2','1') and national_identifier = l_ni_num;
2879 
2880 --
2881   -- same with EducationContRegNumVO
2882 cursor csr_educ_relship
2883   is
2884   select code contact_type
2885   from   (select pcr_pp.national_identifier,
2886                  nvl(pcr.cont_information11,
2887                    decode(pcr.contact_type,
2888                      'P','1',
2889                      'S','3',
2890                      'A','4',
2891                      'C','4',
2892                      'R','4',
2893                      'O','4',
2894                      'T','4',
2895                      'BROTHER','5',
2896                      'SISTER','5',
2897                      '6')) code
2898           from   per_assignments_f pa,
2899                  per_contact_relationships pcr,
2900                  per_people_f pcr_pp
2901           where  pa.assignment_id = p_assignment_id
2902           and    g_target_eoy
2903                  between pa.effective_start_date and pa.effective_end_date
2904           and    pa.assignment_type ='E'
2905           and    pcr.person_id = pa.person_id
2906           and    g_target_eoy
2907                  between nvl(pcr.date_start,g_target_eoy) and
2908                          decode(pcr.cont_information9,
2909                            'D',trunc(add_months(nvl(pcr.date_end,g_target_eoy),12),'YYYY')-1,
2910                            nvl(pcr.date_end,g_target_eoy))
2911           and    pcr_pp.person_id = pcr.contact_person_id
2912           and    g_target_eoy
2913                  between pcr_pp.effective_start_date and pcr_pp.effective_end_date
2914           and    pcr.cont_information_category = 'KR'
2915           and    pcr.cont_information1 = 'Y')
2916   where national_identifier = l_ni_num;
2917 --
2918 begin
2919 --
2920   l_ni_num := cnv_reg(p_ni_num);
2921 --
2922   if p_information_type = 'KR_YEA_DETAIL_MEDICAL_EXP_INFO' then
2923   --
2924     open csr_med_relship;
2925     fetch csr_med_relship into l_relship;
2926     close csr_med_relship;
2927   --
2928   elsif p_information_type = 'KR_YEA_DETAIL_DONATION_INFO' then
2929   --
2930     open csr_don_relship;
2931     fetch csr_don_relship into l_relship;
2932     close csr_don_relship;
2933   --
2934   elsif p_information_type = 'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO' then
2935   --
2936     open csr_educ_relship;
2937     fetch csr_educ_relship into l_relship;
2938     close csr_educ_relship;
2939   --
2940   end if;
2941 --
2942   return l_relship;
2943 --
2944 end get_relship;
2945 --
2946 -- -------------------------------------------------------------------------
2947 -- get_type
2948 -- -------------------------------------------------------------------------
2949 function get_type(
2950   p_information_type in varchar2,
2951   p_text in varchar2)
2952 return varchar2
2953 is
2954 --
2955   l_text varchar2(30);
2956 --
2957 begin
2958 --
2959   l_text := p_text;
2960 --
2961   if p_information_type = 'KR_YEA_SEP_PEN_DETAILS' then
2962   --
2963     l_text := substrb(l_text,-1);
2964 	-- Bug 16083942  Mapping pension type '13' with '11'
2965 	if l_text = '3' then
2966 	l_text := '1';
2967 	end if;
2968   --
2969   elsif p_information_type = 'KR_YEA_HOU_SAVING_DETAILS' then
2970   --
2971     if l_text is not null
2972     and instr(l_text,'HST') = 0 then
2973     -- Bug 16090143  Mapping the values as epr lookup codes
2974 	 IF l_text = '2' then
2975 	 l_text := '5';
2976 	 elsif l_text = '3' then
2977 	 l_text := '4';
2978 	 elsif l_text = '4' then
2979 	 l_text := '3';
2980 	 end if;
2981       l_text := 'HST'||l_text;
2982     --
2983     end if;
2984   --
2985   end if;
2986 --
2987 return l_text;
2988 --
2989 end get_type;
2990 --
2991 -- -------------------------------------------------------------------------
2992 -- get_fin
2993 -- -------------------------------------------------------------------------
2994 function get_fin(
2995   p_text in varchar2)
2996 return varchar2
2997 is
2998 --
2999   l_text varchar2(30);
3000 --
3001   cursor csr_fin
3002   is
3003   select lookup_code
3004   from   hr_lookups
3005   where  lookup_type = 'KR_YEA_FIN_INST_CODES'
3006   and    enabled_flag = 'Y'
3007   and    meaning = p_text;
3008 --
3009 begin
3010 --
3011   open csr_fin;
3012   fetch csr_fin into l_text;
3013   close csr_fin;
3014 --
3015 return l_text;
3016 --
3017 end get_fin;
3018 --
3019 -- -------------------------------------------------------------------------
3020 -- validate_kr_ass_yea_info
3021 -- -------------------------------------------------------------------------
3022 procedure validate_kr_ass_yea_info(
3023   p_assignment_id          in number,
3024   p_target_year            in number,
3025   p_information_type       in varchar2,
3026   p_information1           in varchar2 default null,
3027   p_information2           in varchar2 default null,
3028   p_information3           in varchar2 default null,
3029   p_information4           in varchar2 default null,
3030   p_information5           in varchar2 default null,
3031   p_information6           in varchar2 default null,
3032   p_information7           in varchar2 default null,
3033   p_information8           in varchar2 default null,
3034   p_information9           in varchar2 default null,
3035   p_information10          in varchar2 default null,
3036   p_information11          in varchar2 default null,
3037   p_information12          in varchar2 default null,
3038   p_information13          in varchar2 default null,
3039   p_information14          in varchar2 default null,
3040   p_information15          in varchar2 default null,
3041   p_information16          in varchar2 default null,
3042   p_information17          in varchar2 default null,
3043   p_information18          in varchar2 default null,
3044   p_information19          in varchar2 default null,
3045   p_information20          in varchar2 default null,
3046   p_information21          in varchar2 default null,
3047   p_information22          in varchar2 default null,
3048   p_information23          in varchar2 default null,
3049   p_information24          in varchar2 default null,
3050   p_information25          in varchar2 default null,
3051   p_information26          in varchar2 default null,
3052   p_information27          in varchar2 default null,
3053   p_information28          in varchar2 default null,
3054   p_information29          in varchar2 default null,
3055   p_information30          in varchar2 default null,
3056   p_information31          in varchar2 default null,
3057   p_information32          in varchar2 default null,
3058   p_information33          in varchar2 default null,
3059   p_information34          in varchar2 default null,
3060   p_information35          in varchar2 default null)
3061 is
3062 --
3063   l_proc varchar2(80) := c_package||'validate_kr_ass_yea_info';
3064 --
3065   l_limit ff_globals_f.global_value%type;
3066 --
3067   cursor csr_don_recipient
3068   is
3069   select assignment_yea_info_id
3070   from   per_kr_assignment_yea_info
3071   where  assignment_id = p_assignment_id
3072   and    target_year = g_target_yyyy
3073   and    information_type = 'KR_YEA_DETAIL_DONATION_INFO'
3074   and    ((ayi_information7 <> p_information7
3075            and ayi_information8 = p_information8)
3076           or (ayi_information7 = p_information7
3077              and ayi_information8 <> p_information8))
3078   and ayi_information13 = p_information13 ;
3079 --
3080   l_csr_don_recipient csr_don_recipient%rowtype;
3081 --
3082 begin
3083 --
3084   if g_debug then
3085     hr_utility.set_location(l_proc,0);
3086   end if;
3087 --
3088   -- sync with PerKrAssignmentYeaInfoEOImpl.java for only relevant info type
3089   --if p_information_type = 'KR_YEA_DETAIL_MEDICAL_EXP_INFO' then
3090   ----
3091   --  -- PAY_KR_YEA_DET_MED_REQ_ERR
3092   --  -- PAY_KR_YEA_MED_PAID_AMT_REQD
3093   --  -- PAY_KR_YEA_INV_PROVIDER_REGNO
3094   --  -- PAY_KR_YEA_DET_MED_INV_DATE
3095   --  -- PAY_KR_YEA_AGD_DSBLD_EMP_MSG
3096   --  -- PAY_KR_ELIGIBLE_MED_AGED_ERROR
3097   ----
3098   if p_information_type = 'KR_YEA_DETAIL_DONATION_INFO' then
3099   --
3100     -- PAY_KR_YEA_DET_DON_REQ_ERR
3101   --
3102     if p_information2 is not null
3103     and to_char(fnd_date.canonical_to_date(p_information2),'YYYY') <> g_target_yyyy then
3104     --
3105       hr_utility.set_message(801,'PAY_KR_YEA_DET_DON_INV_DATE');
3106       hr_utility.set_message_token('DATE',fnd_date.date_to_displaydate(fnd_date.canonical_to_date(p_information2)));
3107       hr_utility.raise_error;
3108     --
3109     end if;
3110   --
3111     -- PAY_KR_YEA_INV_DON_REGNO
3112     -- PAY_KR_YEA_DON_DETAIL_EXISTS
3113   --
3114     --validateDetailDonation
3115     if p_information8 is not null then
3116     --
3117       open csr_don_recipient;
3118       fetch csr_don_recipient into l_csr_don_recipient;
3119       close csr_don_recipient;
3120       --
3121       if l_csr_don_recipient.assignment_yea_info_id is not null then
3122       --
3123         hr_utility.set_message(801,'PAY_KR_YEA_INV_DON_NAME_MSG');
3124         hr_utility.set_message_token('RRN',p_information7);
3125         hr_utility.raise_error;
3126       --
3127       end if;
3128     --
3129     end if;
3130   --
3131   --elsif p_information_type = 'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO' then
3132   ----
3133   --  -- PAY_KR_YEA_EDUCATION_REQ_ERR
3134   ----
3135   --elsif p_information_type = 'KR_YEA_SEP_PEN_DETAILS' then
3136   ----
3137   --  -- PAY_KR_YEA_SEP_PEN_DET_REQ
3138   ----
3139   --elsif p_information_type = 'KR_YEA_PEN_SAVING_DETAILS' then
3140   ----
3141   --  PAY_KR_YEA_PEN_SAV_DET_REQ
3142   ----
3143   elsif p_information_type = 'KR_YEA_HOU_SAVING_DETAILS' then
3144   --
3145     -- PAY_KR_YEA_HOU_SAV_DET_REQ
3146   --
3147     if p_information2 = 'HST1' then /* KR_HOUSING_SAVING_TYPE */
3148     --
3149       pay_kr_yea_sshr_utils_pkg.get_globalvalue(
3150         p_glbvar       => 'KR_YEA_HOUSINSAVINTYPE_HST1',
3151         p_process_date => p_information1,
3152         p_result       => l_limit);
3153     --
3154       if fnd_number.canonical_to_number(p_information5) > to_number(l_limit) then
3155       --
3156         hr_utility.set_message(801,'PAY_KR_MAX_HOU_SUB_SAVING');
3157         hr_utility.set_message_token('LIMIT',l_limit);
3158         hr_utility.raise_error;
3159       --
3160       end if;
3161     --
3162     end if;
3163   --
3164   --elsif p_information_type = 'KR_YEA_LT_STOCK_SAVING_DETAILS' then
3165   ----
3166   --  -- PAY_KR_YEA_LT_SAV_DET_REQ
3167   ----
3168   end if;
3169 --
3170   if g_debug then
3171     hr_utility.set_location(l_proc,1000);
3172   end if;
3173 --
3174 end validate_kr_ass_yea_info;
3175 --
3176 -- -------------------------------------------------------------------------
3177 -- delete_kr_ass_yea_info
3178 -- -------------------------------------------------------------------------
3179 procedure delete_kr_ass_yea_info(
3180   p_assignment_id          in number,
3181   p_target_year            in number,
3182   p_information_type       in varchar2,
3183   p_information1           in varchar2 default null,
3184   p_information2           in varchar2 default null,
3185   p_information3           in varchar2 default null,
3186   p_information4           in varchar2 default null,
3187   p_information5           in varchar2 default null,
3188   p_information6           in varchar2 default null,
3189   p_information7           in varchar2 default null,
3190   p_information8           in varchar2 default null,
3191   p_information9           in varchar2 default null,
3192   p_information10          in varchar2 default null,
3193   p_information11          in varchar2 default null,
3194   p_information12          in varchar2 default null,
3195   p_information13          in varchar2 default null,
3196   p_information14          in varchar2 default null,
3197   p_information15          in varchar2 default null,
3198   p_information16          in varchar2 default null,
3199   p_information17          in varchar2 default null,
3200   p_information18          in varchar2 default null,
3201   p_information19          in varchar2 default null,
3202   p_information20          in varchar2 default null,
3203   p_information21          in varchar2 default null,
3204   p_information22          in varchar2 default null,
3205   p_information23          in varchar2 default null,
3206   p_information24          in varchar2 default null,
3207   p_information25          in varchar2 default null,
3208   p_information26          in varchar2 default null,
3209   p_information27          in varchar2 default null,
3210   p_information28          in varchar2 default null,
3211   p_information29          in varchar2 default null,
3212   p_information30          in varchar2 default null,
3213   p_information31          in varchar2 default null,
3214   p_information32          in varchar2 default null,
3215   p_information33          in varchar2 default null,
3216   p_information34          in varchar2 default null,
3217   p_information35          in varchar2 default null)
3218 is
3219 --
3220   l_proc varchar2(80) := c_package||'delete_kr_ass_yea_info';
3221 --
3222   cursor csr_kr_ass_yea
3223   is
3224   select pkayi.assignment_yea_info_id
3225   from   per_kr_assignment_yea_info pkayi
3226   where  pkayi.assignment_id = p_assignment_id
3227   and    pkayi.target_year = p_target_year
3228   and    pkayi.information_type = p_information_type
3229   and    pkayi.ayi_information_category = p_information_type
3230   and    nvl(pkayi.ayi_information1,'X') = nvl(p_information1,nvl(pkayi.ayi_information1,'X'))
3231   and    nvl(pkayi.ayi_information2,'X') = nvl(p_information2,nvl(pkayi.ayi_information2,'X'))
3232   and    nvl(pkayi.ayi_information3,'X') = nvl(p_information3,nvl(pkayi.ayi_information3,'X'))
3233   and    nvl(pkayi.ayi_information4,'X') = nvl(p_information4,nvl(pkayi.ayi_information4,'X'))
3234   and    nvl(pkayi.ayi_information5,'X') = nvl(p_information5,nvl(pkayi.ayi_information5,'X'))
3235   and    nvl(pkayi.ayi_information6,'X') = nvl(p_information6,nvl(pkayi.ayi_information6,'X'))
3236   and    nvl(pkayi.ayi_information7,'X') = nvl(p_information7,nvl(pkayi.ayi_information7,'X'))
3237   and    nvl(pkayi.ayi_information8,'X') = nvl(p_information8,nvl(pkayi.ayi_information8,'X'))
3238   and    nvl(pkayi.ayi_information9,'X') = nvl(p_information9,nvl(pkayi.ayi_information9,'X'))
3239   and    nvl(pkayi.ayi_information10,'X') = nvl(p_information10,nvl(pkayi.ayi_information10,'X'))
3240   and    nvl(pkayi.ayi_information11,'X') = nvl(p_information11,nvl(pkayi.ayi_information11,'X'))
3241   and    nvl(pkayi.ayi_information12,'X') = nvl(p_information12,nvl(pkayi.ayi_information12,'X'))
3242   and    nvl(pkayi.ayi_information13,'X') = nvl(p_information13,nvl(pkayi.ayi_information13,'X'))
3243   and    nvl(pkayi.ayi_information14,'X') = nvl(p_information14,nvl(pkayi.ayi_information14,'X'))
3244   and    nvl(pkayi.ayi_information15,'X') = nvl(p_information15,nvl(pkayi.ayi_information15,'X'))
3245   and    nvl(pkayi.ayi_information16,'X') = nvl(p_information16,nvl(pkayi.ayi_information16,'X'))
3246   and    nvl(pkayi.ayi_information17,'X') = nvl(p_information17,nvl(pkayi.ayi_information17,'X'))
3247   and    nvl(pkayi.ayi_information18,'X') = nvl(p_information18,nvl(pkayi.ayi_information18,'X'))
3248   and    nvl(pkayi.ayi_information19,'X') = nvl(p_information19,nvl(pkayi.ayi_information19,'X'))
3249   and    nvl(pkayi.ayi_information20,'X') = nvl(p_information20,nvl(pkayi.ayi_information20,'X'))
3250   and    nvl(pkayi.ayi_information21,'X') = nvl(p_information21,nvl(pkayi.ayi_information21,'X'))
3251   and    nvl(pkayi.ayi_information22,'X') = nvl(p_information22,nvl(pkayi.ayi_information22,'X'))
3252   and    nvl(pkayi.ayi_information23,'X') = nvl(p_information23,nvl(pkayi.ayi_information23,'X'))
3253   and    nvl(pkayi.ayi_information24,'X') = nvl(p_information24,nvl(pkayi.ayi_information24,'X'))
3254   and    nvl(pkayi.ayi_information25,'X') = nvl(p_information25,nvl(pkayi.ayi_information25,'X'))
3255   and    nvl(pkayi.ayi_information26,'X') = nvl(p_information26,nvl(pkayi.ayi_information26,'X'))
3256   and    nvl(pkayi.ayi_information27,'X') = nvl(p_information27,nvl(pkayi.ayi_information27,'X'))
3257   and    nvl(pkayi.ayi_information28,'X') = nvl(p_information28,nvl(pkayi.ayi_information28,'X'))
3258   and    nvl(pkayi.ayi_information29,'X') = nvl(p_information29,nvl(pkayi.ayi_information29,'X'))
3259   and    nvl(pkayi.ayi_information30,'X') = nvl(p_information30,nvl(pkayi.ayi_information30,'X'))
3260   and    nvl(pkayi.ayi_information31,'X') = nvl(p_information31,nvl(pkayi.ayi_information31,'X'))
3261   and    nvl(pkayi.ayi_information32,'X') = nvl(p_information32,nvl(pkayi.ayi_information32,'X'))
3262   and    nvl(pkayi.ayi_information33,'X') = nvl(p_information33,nvl(pkayi.ayi_information33,'X'))
3263   and    nvl(pkayi.ayi_information34,'X') = nvl(p_information34,nvl(pkayi.ayi_information34,'X'))
3264   and    nvl(pkayi.ayi_information35,'X') = nvl(p_information35,nvl(pkayi.ayi_information35,'X'))
3265   for update nowait;
3266 --
3267   l_csr_kr_ass_yea csr_kr_ass_yea%rowtype;
3268 --
3269 begin
3270 --
3271   if g_debug then
3272     hr_utility.set_location(l_proc,0);
3273   end if;
3274 --
3275   begin
3276   --
3277     open csr_kr_ass_yea;
3278     loop
3279     --
3280       fetch csr_kr_ass_yea into l_csr_kr_ass_yea;
3281       exit when csr_kr_ass_yea%notfound;
3282     --
3283       if l_csr_kr_ass_yea.assignment_yea_info_id is not null then
3284       --
3285         if g_debug then
3286           hr_utility.set_location(l_proc,10);
3287         end if;
3288       --
3289         delete from
3290         per_kr_assignment_yea_info
3291         where  assignment_yea_info_id = l_csr_kr_ass_yea.assignment_yea_info_id;
3292       --
3293       end if;
3294     --
3295     end loop;
3296     close csr_kr_ass_yea;
3297   --
3298   exception
3299   when others then
3300   --
3301     fnd_message.set_name('PAY','PAY_KR_YEA_PDF_LOCK_STATUS');
3302     fnd_message.set_token('ASS_ID',to_char(p_assignment_id));
3303     g_msg := fnd_message.get;
3304   --
3305     fnd_file.put_line(fnd_file.log,g_msg);
3306   --
3307     if g_debug then
3308       hr_utility.trace('skipped because p_assignment_id : '||to_char(p_assignment_id)||' entry status was locked.');
3309     end if;
3310   --
3311   end;
3312 --
3313   if g_debug then
3314     hr_utility.set_location(l_proc,1000);
3315   end if;
3316 --
3317 end delete_kr_ass_yea_info;
3318 --
3319 -- -------------------------------------------------------------------------
3320 -- insert_kr_ass_yea_info
3321 -- -------------------------------------------------------------------------
3322 procedure insert_kr_ass_yea_info(
3323   p_assignment_id          in number,
3324   p_target_year            in number,
3325   p_information_type       in varchar2,
3326   p_information1           in varchar2 default null,
3327   p_information2           in varchar2 default null,
3328   p_information3           in varchar2 default null,
3329   p_information4           in varchar2 default null,
3330   p_information5           in varchar2 default null,
3331   p_information6           in varchar2 default null,
3332   p_information7           in varchar2 default null,
3333   p_information8           in varchar2 default null,
3334   p_information9           in varchar2 default null,
3335   p_information10          in varchar2 default null,
3336   p_information11          in varchar2 default null,
3337   p_information12          in varchar2 default null,
3338   p_information13          in varchar2 default null,
3339   p_information14          in varchar2 default null,
3340   p_information15          in varchar2 default null,
3341   p_information16          in varchar2 default null,
3342   p_information17          in varchar2 default null,
3343   p_information18          in varchar2 default null,
3344   p_information19          in varchar2 default null,
3345   p_information20          in varchar2 default null,
3346   p_information21          in varchar2 default null,
3347   p_information22          in varchar2 default null,
3348   p_information23          in varchar2 default null,
3349   p_information24          in varchar2 default null,
3350   p_information25          in varchar2 default null,
3351   p_information26          in varchar2 default null,
3352   p_information27          in varchar2 default null,
3353   p_information28          in varchar2 default null,
3354   p_information29          in varchar2 default null,
3355   p_information30          in varchar2 default null,
3356   p_information31          in varchar2 default null,
3357   p_information32          in varchar2 default null,
3358   p_information33          in varchar2 default null,
3359   p_information34          in varchar2 default null,
3360   p_information35          in varchar2 default null,
3361   p_assignment_yea_info_id out nocopy number)
3362 is
3363 --
3364   l_proc varchar2(80) := c_package||'insert_kr_ass_yea_info';
3365 --
3366   l_assignment_yea_info_id number;
3367   l_object_version_number number := 1;
3368 --
3369 begin
3370 --
3371   if g_debug then
3372     hr_utility.set_location(l_proc,0);
3373   end if;
3374 --
3375   select per_kr_assignment_yea_info_s.nextval
3376   into l_assignment_yea_info_id
3377   from dual;
3378 --
3379   insert into per_kr_assignment_yea_info(
3380     assignment_yea_info_id,
3381     assignment_id,
3382     information_type,
3383     target_year,
3384     ayi_information_category,
3385     ayi_information1,
3386     ayi_information2,
3387     ayi_information3,
3388     ayi_information4,
3389     ayi_information5,
3390     ayi_information6,
3391     ayi_information7,
3392     ayi_information8,
3393     ayi_information9,
3394     ayi_information10,
3395     ayi_information11,
3396     ayi_information12,
3397     ayi_information13,
3398     ayi_information14,
3399     ayi_information15,
3400     ayi_information16,
3401     ayi_information17,
3402     ayi_information18,
3403     ayi_information19,
3404     ayi_information20,
3405     ayi_information21,
3406     ayi_information22,
3407     ayi_information23,
3408     ayi_information24,
3409     ayi_information25,
3410     ayi_information26,
3411     ayi_information27,
3412     ayi_information28,
3413     ayi_information29,
3414     ayi_information30,
3415     ayi_information31,
3416     ayi_information32,
3417     ayi_information33,
3418     ayi_information34,
3419     ayi_information35,
3420     object_version_number)
3421   values (
3422     l_assignment_yea_info_id,
3423     p_assignment_id,
3424     p_information_type,
3425     p_target_year,
3426     p_information_type,
3427     p_information1,
3428     p_information2,
3429     p_information3,
3430     p_information4,
3431     p_information5,
3432     p_information6,
3433     p_information7,
3434     p_information8,
3435     p_information9,
3436     p_information10,
3437     p_information11,
3438     p_information12,
3439     p_information13,
3440     p_information14,
3441     p_information15,
3442     p_information16,
3443     p_information17,
3444     p_information18,
3445     p_information19,
3446     p_information20,
3447     p_information21,
3448     p_information22,
3449     p_information23,
3450     p_information24,
3451     p_information25,
3452     p_information26,
3453     p_information27,
3454     p_information28,
3455     p_information29,
3456     p_information30,
3457     p_information31,
3458     p_information32,
3459     p_information33,
3460     p_information34,
3461     p_information35,
3462     l_object_version_number);
3463 --
3464   p_assignment_yea_info_id := l_assignment_yea_info_id;
3465 --
3466   if g_debug then
3467     hr_utility.set_location(l_proc,1000);
3468   end if;
3469 --
3470 end insert_kr_ass_yea_info;
3471 --
3472 -- -------------------------------------------------------------------------
3473 -- load_kr_ass_yea_info
3474 -- -------------------------------------------------------------------------
3475 procedure load_kr_ass_yea_info(
3476   p_assignment_id          in number,
3477   p_target_year            in number,
3478   p_information_type       in varchar2,
3479   p_information1           in varchar2 default null,
3480   p_information2           in varchar2 default null,
3481   p_information3           in varchar2 default null,
3482   p_information4           in varchar2 default null,
3483   p_information5           in varchar2 default null,
3484   p_information6           in varchar2 default null,
3485   p_information7           in varchar2 default null,
3486   p_information8           in varchar2 default null,
3487   p_information9           in varchar2 default null,
3488   p_information10          in varchar2 default null,
3489   p_information11          in varchar2 default null,
3490   p_information12          in varchar2 default null,
3491   p_information13          in varchar2 default null,
3492   p_information14          in varchar2 default null,
3493   p_information15          in varchar2 default null,
3494   p_information16          in varchar2 default null,
3495   p_information17          in varchar2 default null,
3496   p_information18          in varchar2 default null,
3497   p_information19          in varchar2 default null,
3498   p_information20          in varchar2 default null,
3499   p_information21          in varchar2 default null,
3500   p_information22          in varchar2 default null,
3501   p_information23          in varchar2 default null,
3502   p_information24          in varchar2 default null,
3503   p_information25          in varchar2 default null,
3504   p_information26          in varchar2 default null,
3505   p_information27          in varchar2 default null,
3506   p_information28          in varchar2 default null,
3507   p_information29          in varchar2 default null,
3508   p_information30          in varchar2 default null,
3509   p_information31          in varchar2 default null,
3510   p_information32          in varchar2 default null,
3511   p_information33          in varchar2 default null,
3512   p_information34          in varchar2 default null,
3513   p_information35          in varchar2 default null,
3514   p_force_update           in varchar2 default null,
3515   p_assignment_yea_info_id out nocopy number)
3516 is
3517 --
3518   l_proc varchar2(80) := c_package||'load_kr_ass_yea_info';
3519 --
3520   l_assignment_yea_info_id number;
3521   l_object_version_number number := 1;
3522 --
3523   cursor csr_kr_ass_yea
3524   is
3525   select pkayi.assignment_yea_info_id,
3526          pkayi.object_version_number
3527   from   per_kr_assignment_yea_info pkayi
3528   where  pkayi.assignment_id = p_assignment_id
3529   and    pkayi.target_year = p_target_year
3530   and    pkayi.information_type = p_information_type
3531   and    pkayi.ayi_information_category = p_information_type
3532   for update nowait;
3533 --
3534   l_csr_kr_ass_yea csr_kr_ass_yea%rowtype;
3535 --
3536 begin
3537 --
3538   if g_debug then
3539     hr_utility.set_location(l_proc,0);
3540   end if;
3541 --
3542   begin
3543   --
3544     open csr_kr_ass_yea;
3545     fetch csr_kr_ass_yea into l_csr_kr_ass_yea;
3546     close csr_kr_ass_yea;
3547   --
3548     if l_csr_kr_ass_yea.assignment_yea_info_id is not null then
3549     --
3550       if g_debug then
3551         hr_utility.set_location(l_proc,10);
3552       end if;
3553     --
3554       l_assignment_yea_info_id := l_csr_kr_ass_yea.assignment_yea_info_id;
3555       l_object_version_number := l_csr_kr_ass_yea.object_version_number + 1;
3556     --
3557       update per_kr_assignment_yea_info
3558       set ayi_information1 = decode(p_force_update,'Y',decode(p_information1,'NULL',null,nvl(p_information1,ayi_information1)),nvl(p_information1,ayi_information1)),
3559           ayi_information2 = decode(p_force_update,'Y',decode(p_information2,'NULL',null,nvl(p_information2,ayi_information2)),nvl(p_information2,ayi_information2)),
3560           ayi_information3 = decode(p_force_update,'Y',decode(p_information3,'NULL',null,nvl(p_information3,ayi_information3)),nvl(p_information3,ayi_information3)),
3561           ayi_information4 = decode(p_force_update,'Y',decode(p_information4,'NULL',null,nvl(p_information4,ayi_information4)),nvl(p_information4,ayi_information4)),
3562           ayi_information5 = decode(p_force_update,'Y',decode(p_information5,'NULL',null,nvl(p_information5,ayi_information5)),nvl(p_information5,ayi_information5)),
3563           ayi_information6 = decode(p_force_update,'Y',decode(p_information6,'NULL',null,nvl(p_information6,ayi_information6)),nvl(p_information6,ayi_information6)),
3564           ayi_information7 = decode(p_force_update,'Y',decode(p_information7,'NULL',null,nvl(p_information7,ayi_information7)),nvl(p_information7,ayi_information7)),
3565           ayi_information8 = decode(p_force_update,'Y',decode(p_information8,'NULL',null,nvl(p_information8,ayi_information8)),nvl(p_information8,ayi_information8)),
3566           ayi_information9 = decode(p_force_update,'Y',decode(p_information9,'NULL',null,nvl(p_information9,ayi_information9)),nvl(p_information9,ayi_information9)),
3567           ayi_information10 = decode(p_force_update,'Y',decode(p_information10,'NULL',null,nvl(p_information10,ayi_information10)),nvl(p_information10,ayi_information10)),
3568           ayi_information11 = decode(p_force_update,'Y',decode(p_information11,'NULL',null,nvl(p_information11,ayi_information11)),nvl(p_information11,ayi_information11)),
3569           ayi_information12 = decode(p_force_update,'Y',decode(p_information12,'NULL',null,nvl(p_information12,ayi_information12)),nvl(p_information12,ayi_information12)),
3570           ayi_information13 = decode(p_force_update,'Y',decode(p_information13,'NULL',null,nvl(p_information13,ayi_information13)),nvl(p_information13,ayi_information13)),
3571           ayi_information14 = decode(p_force_update,'Y',decode(p_information14,'NULL',null,nvl(p_information14,ayi_information14)),nvl(p_information14,ayi_information14)),
3572           ayi_information15 = decode(p_force_update,'Y',decode(p_information15,'NULL',null,nvl(p_information15,ayi_information15)),nvl(p_information15,ayi_information15)),
3573           ayi_information16 = decode(p_force_update,'Y',decode(p_information16,'NULL',null,nvl(p_information16,ayi_information16)),nvl(p_information16,ayi_information16)),
3574           ayi_information17 = decode(p_force_update,'Y',decode(p_information17,'NULL',null,nvl(p_information17,ayi_information17)),nvl(p_information17,ayi_information17)),
3575           ayi_information18 = decode(p_force_update,'Y',decode(p_information18,'NULL',null,nvl(p_information18,ayi_information18)),nvl(p_information18,ayi_information18)),
3576           ayi_information19 = decode(p_force_update,'Y',decode(p_information19,'NULL',null,nvl(p_information19,ayi_information19)),nvl(p_information19,ayi_information19)),
3577           ayi_information20 = decode(p_force_update,'Y',decode(p_information20,'NULL',null,nvl(p_information20,ayi_information20)),nvl(p_information20,ayi_information20)),
3578           ayi_information21 = decode(p_force_update,'Y',decode(p_information21,'NULL',null,nvl(p_information21,ayi_information21)),nvl(p_information21,ayi_information21)),
3579           ayi_information22 = decode(p_force_update,'Y',decode(p_information22,'NULL',null,nvl(p_information22,ayi_information22)),nvl(p_information22,ayi_information22)),
3580           ayi_information23 = decode(p_force_update,'Y',decode(p_information23,'NULL',null,nvl(p_information23,ayi_information23)),nvl(p_information23,ayi_information23)),
3581           ayi_information24 = decode(p_force_update,'Y',decode(p_information24,'NULL',null,nvl(p_information24,ayi_information24)),nvl(p_information24,ayi_information24)),
3582           ayi_information25 = decode(p_force_update,'Y',decode(p_information25,'NULL',null,nvl(p_information25,ayi_information25)),nvl(p_information25,ayi_information25)),
3583           ayi_information26 = decode(p_force_update,'Y',decode(p_information26,'NULL',null,nvl(p_information26,ayi_information26)),nvl(p_information26,ayi_information26)),
3584           ayi_information27 = decode(p_force_update,'Y',decode(p_information27,'NULL',null,nvl(p_information27,ayi_information27)),nvl(p_information27,ayi_information27)),
3585           ayi_information28 = decode(p_force_update,'Y',decode(p_information28,'NULL',null,nvl(p_information28,ayi_information28)),nvl(p_information28,ayi_information28)),
3586           ayi_information29 = decode(p_force_update,'Y',decode(p_information29,'NULL',null,nvl(p_information29,ayi_information29)),nvl(p_information29,ayi_information29)),
3587           ayi_information30 = decode(p_force_update,'Y',decode(p_information30,'NULL',null,nvl(p_information30,ayi_information30)),nvl(p_information30,ayi_information30)),
3588           ayi_information31 = decode(p_force_update,'Y',decode(p_information31,'NULL',null,nvl(p_information31,ayi_information31)),nvl(p_information31,ayi_information31)),
3589           ayi_information32 = decode(p_force_update,'Y',decode(p_information32,'NULL',null,nvl(p_information32,ayi_information32)),nvl(p_information32,ayi_information32)),
3590           ayi_information33 = decode(p_force_update,'Y',decode(p_information33,'NULL',null,nvl(p_information33,ayi_information33)),nvl(p_information33,ayi_information33)),
3591           ayi_information34 = decode(p_force_update,'Y',decode(p_information34,'NULL',null,nvl(p_information34,ayi_information34)),nvl(p_information34,ayi_information34)),
3592           ayi_information35 = decode(p_force_update,'Y',decode(p_information35,'NULL',null,nvl(p_information35,ayi_information35)),nvl(p_information35,ayi_information35)),
3593           object_version_number = l_object_version_number
3594       where assignment_yea_info_id = l_csr_kr_ass_yea.assignment_yea_info_id;
3595     --
3596     else
3597     --
3598       insert_kr_ass_yea_info(
3599         p_assignment_id          => p_assignment_id,
3600         p_target_year            => p_target_year,
3601         p_information_type       => p_information_type,
3602         p_information1           => p_information1,
3603         p_information2           => p_information2,
3604         p_information3           => p_information3,
3605         p_information4           => p_information4,
3606         p_information5           => p_information5,
3607         p_information6           => p_information6,
3608         p_information7           => p_information7,
3609         p_information8           => p_information8,
3610         p_information9           => p_information9,
3611         p_information10          => p_information10,
3612         p_information11          => p_information11,
3613         p_information12          => p_information12,
3614         p_information13          => p_information13,
3615         p_information14          => p_information14,
3616         p_information15          => p_information15,
3617         p_information16          => p_information16,
3618         p_information17          => p_information17,
3619         p_information18          => p_information18,
3620         p_information19          => p_information19,
3621         p_information20          => p_information20,
3622         p_information21          => p_information21,
3623         p_information22          => p_information22,
3624         p_information23          => p_information23,
3625         p_information24          => p_information24,
3626         p_information25          => p_information25,
3627         p_information26          => p_information26,
3628         p_information27          => p_information27,
3629         p_information28          => p_information28,
3630         p_information29          => p_information29,
3631         p_information30          => p_information30,
3632         p_information31          => p_information31,
3633         p_information32          => p_information32,
3634         p_information33          => p_information33,
3635         p_information34          => p_information34,
3636         p_information35          => p_information35,
3637         p_assignment_yea_info_id => l_assignment_yea_info_id);
3638     --
3639     end if;
3640   --
3641   exception
3642   when others then
3643   --
3644     fnd_message.set_name('PAY','PAY_KR_YEA_PDF_LOCK_STATUS');
3645     fnd_message.set_token('ASS_ID',to_char(p_assignment_id));
3646     g_msg := fnd_message.get;
3647   --
3648     fnd_file.put_line(fnd_file.log,g_msg);
3649   --
3650     if g_debug then
3651       hr_utility.trace('skipped because p_assignment_id : '||to_char(p_assignment_id)||' entry status was locked.');
3652     end if;
3653   --
3654   end;
3655 --
3656   p_assignment_yea_info_id := l_assignment_yea_info_id;
3657 --
3658   if g_debug then
3659     hr_utility.set_location(l_proc,1000);
3660   end if;
3661 --
3662 end load_kr_ass_yea_info;
3663 --
3664 -- -------------------------------------------------------------------------
3665 -- cei_datetrack_update_mode
3666 -- -------------------------------------------------------------------------
3667 function cei_datetrack_update_mode(
3668   p_contact_extra_info_id in number,
3669   p_effective_start_date  in date,
3670   p_effective_end_date    in date,
3671   p_effective_date        in date)
3672 return varchar2
3673 is
3674 --
3675   l_datetrack_mode varchar2(30);
3676   l_exists         varchar2(1);
3677 --
3678   cursor csr_future_exists
3679   is
3680   select 'Y'
3681   from   dual
3682   where exists(
3683     select null
3684     from   per_contact_extra_info_f
3685     where  contact_extra_info_id = p_contact_extra_info_id
3686     and    effective_start_date = p_effective_end_date + 1);
3687 --
3688 begin
3689 --
3690   if p_effective_start_date = p_effective_date then
3691   --
3692     l_datetrack_mode := 'CORRECTION';
3693   --
3694   else
3695   --
3696     open csr_future_exists;
3697     fetch csr_future_exists into l_exists;
3698     if csr_future_exists%notfound then
3699       l_datetrack_mode := 'UPDATE';
3700     else
3701       l_datetrack_mode := 'UPDATE_CHANGE_INSERT';
3702     end if;
3703   --
3704   end if;
3705 --
3706 return l_datetrack_mode;
3707 end cei_datetrack_update_mode;
3708 --
3709 -- -------------------------------------------------------------------------
3710 -- load_cei_dpnt_info
3711 -- -------------------------------------------------------------------------
3712 procedure load_cei_dpnt_info(
3713   p_assignment_id         in number,
3714   p_effective_date        in date,
3715   p_information_type      in varchar2,
3716   p_emp_num               in varchar2 default null,
3717   p_emp_name              in varchar2 default null,
3718   p_con_ni                in varchar2,
3719   p_information1          in varchar2 default null,
3720   p_information2          in varchar2 default null,
3721   p_information3          in varchar2 default null,
3722   p_information4          in varchar2 default null,
3723   p_information5          in varchar2 default null,
3724   p_information6          in varchar2 default null,
3725   p_information7          in varchar2 default null,
3726   p_information8          in varchar2 default null,
3727   p_information9          in varchar2 default null,
3728   p_information10         in varchar2 default null,
3729   p_information11         in varchar2 default null,
3730   p_information12         in varchar2 default null,
3731   p_information13         in varchar2 default null,
3732   p_information14         in varchar2 default null,
3733   p_information15         in varchar2 default null,
3734   p_information16         in varchar2 default null,
3735   p_information17         in varchar2 default null,
3736   p_information18         in varchar2 default null,
3737   p_information19         in varchar2 default null,
3738   p_information20         in varchar2 default null,
3739   p_information21         in varchar2 default null,
3740   p_information22         in varchar2 default null,
3741   p_information23         in varchar2 default null,
3742   p_information24         in varchar2 default null,
3743   p_information25         in varchar2 default null,
3744   p_information26         in varchar2 default null,
3745   p_information27         in varchar2 default null,
3746   p_information28         in varchar2 default null,
3747   p_information29         in varchar2 default null,
3748   p_information30         in varchar2 default null,
3749   p_contact_extra_info_id out nocopy number)
3750 is
3751 --
3752   l_proc varchar2(80) := c_package||'load_cei_dpnt_info';
3753 --
3754   l_contact_extra_info_id number;
3755   l_object_version_number number;
3756   l_esd date;
3757   l_eed date;
3758 --
3759   l_update_datetrack_mode varchar2(30);
3760 --
3761   cursor csr_pcr_dpnt
3762   is
3763   select pcr.contact_relationship_id
3764   from   per_all_assignments_f pa,
3765          per_contact_relationships pcr,
3766          per_all_people_f pp_con
3767   where  pa.assignment_id = p_assignment_id
3768   and    p_effective_date
3769          between pa.effective_start_date and pa.effective_end_date
3770   and    pcr.person_id = pa.person_id
3771   and    pp_con.person_id = pcr.contact_person_id
3772   and    p_effective_date
3773          between pp_con.effective_start_date and pp_con.effective_end_date
3774   and    cnv_ni(pp_con.national_identifier) = p_con_ni;
3775 --
3776   l_csr_pcr_dpnt csr_pcr_dpnt%rowtype;
3777 --
3778   cursor csr_cei_dpnt_info(
3779     p_contact_relationship_id in number)
3780   is
3781   select pcei.contact_extra_info_id,
3782          pcei.effective_start_date,
3783          pcei.effective_end_date,
3784          pcei.object_version_number,
3785          pcei.cei_information1,
3786          pcei.cei_information2,
3787          pcei.cei_information3,
3788          pcei.cei_information4,
3789          pcei.cei_information5,
3790          pcei.cei_information6,
3791          pcei.cei_information7,
3792          pcei.cei_information8,
3793          pcei.cei_information9,
3794          pcei.cei_information10,
3795          pcei.cei_information11,
3796          pcei.cei_information12,
3797          pcei.cei_information13,
3798          pcei.cei_information14,
3799          pcei.cei_information15,
3800          pcei.cei_information16,
3801          pcei.cei_information17,
3802          pcei.cei_information18,
3803          pcei.cei_information19,
3804          pcei.cei_information20,
3805          pcei.cei_information21,
3806          pcei.cei_information22,
3807          pcei.cei_information23,
3808          pcei.cei_information24,
3809          pcei.cei_information25,
3810          pcei.cei_information26,
3811          pcei.cei_information27,
3812          pcei.cei_information28,
3813          pcei.cei_information29,
3814          pcei.cei_information30
3815   from   per_contact_extra_info_f pcei
3816   where  pcei.contact_relationship_id = p_contact_relationship_id
3817   and    pcei.cei_information_category = p_information_type
3818   and    p_effective_date
3819          between pcei.effective_start_date and pcei.effective_end_date;
3820 --
3821   l_csr_cei_dpnt_info csr_cei_dpnt_info%rowtype;
3822 --
3823 begin
3824 --
3825   if g_debug then
3826     hr_utility.set_location(l_proc,0);
3827   end if;
3828 --
3829   open csr_pcr_dpnt;
3830   fetch csr_pcr_dpnt into l_csr_pcr_dpnt;
3831   close csr_pcr_dpnt;
3832 --
3833   if l_csr_pcr_dpnt.contact_relationship_id is not null then
3834   --
3835     if g_debug then
3836       hr_utility.set_location(l_proc,10);
3837     end if;
3838   --
3839     open csr_cei_dpnt_info(l_csr_pcr_dpnt.contact_relationship_id);
3840     fetch csr_cei_dpnt_info into l_csr_cei_dpnt_info;
3841     close csr_cei_dpnt_info;
3842   --
3843     if l_csr_cei_dpnt_info.contact_extra_info_id is not null then
3844     --
3845       if g_debug then
3846         hr_utility.set_location(l_proc,20);
3847       end if;
3848     --
3849       l_contact_extra_info_id := l_csr_cei_dpnt_info.contact_extra_info_id;
3850       l_object_version_number := l_csr_cei_dpnt_info.object_version_number;
3851     --
3852       l_update_datetrack_mode := cei_datetrack_update_mode(
3853                                    p_contact_extra_info_id => l_contact_extra_info_id,
3854                                    p_effective_start_date  => l_csr_cei_dpnt_info.effective_start_date,
3855                                    p_effective_end_date    => l_csr_cei_dpnt_info.effective_end_date,
3856                                    p_effective_date        => p_effective_date);
3857     --
3858       hr_contact_extra_info_api.update_contact_extra_info(
3859         p_validate              => false,
3860         p_effective_date        => p_effective_date,
3861         p_datetrack_update_mode => l_update_datetrack_mode,
3862         p_contact_extra_info_id => l_contact_extra_info_id,
3863         p_object_version_number => l_object_version_number,
3864         p_cei_information1      => nvl(p_information1,l_csr_cei_dpnt_info.cei_information1),
3865         p_cei_information2      => nvl(p_information2,l_csr_cei_dpnt_info.cei_information2),
3866         p_cei_information3      => nvl(p_information3,l_csr_cei_dpnt_info.cei_information3),
3867         p_cei_information4      => nvl(p_information4,l_csr_cei_dpnt_info.cei_information4),
3868         p_cei_information5      => nvl(p_information5,l_csr_cei_dpnt_info.cei_information5),
3869         p_cei_information6      => nvl(p_information6,l_csr_cei_dpnt_info.cei_information6),
3870         p_cei_information7      => nvl(p_information7,l_csr_cei_dpnt_info.cei_information7),
3871         p_cei_information8      => nvl(p_information8,l_csr_cei_dpnt_info.cei_information8),
3872         p_cei_information9      => nvl(p_information9,l_csr_cei_dpnt_info.cei_information9),
3873         p_cei_information10     => nvl(p_information10,l_csr_cei_dpnt_info.cei_information10),
3874         p_cei_information11     => nvl(p_information11,l_csr_cei_dpnt_info.cei_information11),
3875         p_cei_information12     => nvl(p_information12,l_csr_cei_dpnt_info.cei_information12),
3876         p_cei_information13     => nvl(p_information13,l_csr_cei_dpnt_info.cei_information13),
3877         p_cei_information14     => nvl(p_information14,l_csr_cei_dpnt_info.cei_information14),
3878         p_cei_information15     => nvl(p_information15,l_csr_cei_dpnt_info.cei_information15),
3879         p_cei_information16     => nvl(p_information16,l_csr_cei_dpnt_info.cei_information16),
3880         p_cei_information17     => nvl(p_information17,l_csr_cei_dpnt_info.cei_information17),
3881         p_cei_information18     => nvl(p_information18,l_csr_cei_dpnt_info.cei_information18),
3882         p_cei_information19     => nvl(p_information19,l_csr_cei_dpnt_info.cei_information19),
3883         p_cei_information20     => nvl(p_information20,l_csr_cei_dpnt_info.cei_information20),
3884         p_cei_information21     => nvl(p_information21,l_csr_cei_dpnt_info.cei_information21),
3885         p_cei_information22     => nvl(p_information22,l_csr_cei_dpnt_info.cei_information22),
3886         p_cei_information23     => nvl(p_information23,l_csr_cei_dpnt_info.cei_information23),
3887         p_cei_information24     => nvl(p_information24,l_csr_cei_dpnt_info.cei_information24),
3888         p_cei_information25     => nvl(p_information25,l_csr_cei_dpnt_info.cei_information25),
3889         p_cei_information26     => nvl(p_information26,l_csr_cei_dpnt_info.cei_information26),
3890         p_cei_information27     => nvl(p_information27,l_csr_cei_dpnt_info.cei_information27),
3891         p_cei_information28     => nvl(p_information28,l_csr_cei_dpnt_info.cei_information28),
3892         p_cei_information29     => nvl(p_information29,l_csr_cei_dpnt_info.cei_information29),
3893         p_cei_information30     => nvl(p_information30,l_csr_cei_dpnt_info.cei_information30),
3894         p_effective_start_date  => l_esd,
3895         p_effective_end_date    => l_eed);
3896     --
3897     else
3898     --
3899       if g_debug then
3900         hr_utility.set_location(l_proc,30);
3901       end if;
3902     --
3903       hr_contact_extra_info_api.create_contact_extra_info(
3904         p_validate                 => false,
3905         p_effective_date           => p_effective_date,
3906         p_contact_relationship_id  => l_csr_pcr_dpnt.contact_relationship_id,
3907         p_information_type         => p_information_type,
3908         p_cei_information_category => p_information_type,
3909         p_cei_information1         => p_information1,
3910         p_cei_information2         => p_information2,
3911         p_cei_information3         => p_information3,
3912         p_cei_information4         => p_information4,
3913         p_cei_information5         => p_information5,
3914         p_cei_information6         => p_information6,
3915         p_cei_information7         => p_information7,
3916         p_cei_information8         => p_information8,
3917         p_cei_information9         => p_information9,
3918         p_cei_information10        => p_information10,
3919         p_cei_information11        => p_information11,
3920         p_cei_information12        => p_information12,
3921         p_cei_information13        => p_information13,
3922         p_cei_information14        => p_information14,
3923         p_cei_information15        => p_information15,
3924         p_cei_information16        => p_information16,
3925         p_cei_information17        => p_information17,
3926         p_cei_information18        => p_information18,
3927         p_cei_information19        => p_information19,
3928         p_cei_information20        => p_information20,
3929         p_cei_information21        => p_information21,
3930         p_cei_information22        => p_information22,
3931         p_cei_information23        => p_information23,
3932         p_cei_information24        => p_information24,
3933         p_cei_information25        => p_information25,
3934         p_cei_information26        => p_information26,
3935         p_cei_information27        => p_information27,
3936         p_cei_information28        => p_information28,
3937         p_cei_information29        => p_information29,
3938         p_cei_information30        => p_information30,
3939         p_contact_extra_info_id    => l_contact_extra_info_id,
3940         p_object_version_number    => l_object_version_number,
3941         p_effective_start_date     => l_esd,
3942         p_effective_end_date       => l_eed);
3943     --
3944     end if;
3945   --
3946   else
3947   --
3948     if g_debug then
3949       hr_utility.set_location(l_proc,40);
3950     end if;
3951   --
3952     --warning
3953     fnd_message.set_name('PAY','PAY_KR_YEA_PDF_NO_CON_REL');
3954     fnd_message.set_token('EMP_NAME',p_emp_name);
3955     fnd_message.set_token('EMP_NO',p_emp_num);
3956     fnd_message.set_token('CON_NI',p_con_ni);
3957   --
3958     g_msg := fnd_message.get;
3959   --
3960     fnd_file.put_line(fnd_file.log,g_msg);
3961   --
3962   end if;
3963 --
3964   p_contact_extra_info_id := l_contact_extra_info_id;
3965 --
3966   if g_debug then
3967     hr_utility.set_location(l_proc,1000);
3968   end if;
3969 --
3970 end load_cei_dpnt_info;
3971 --
3972 -- -------------------------------------------------------------------------
3973 -- show_xml
3974 -- -------------------------------------------------------------------------
3975 procedure show_xml(
3976   p_xml in clob)
3977 is
3978 --
3979   l_proc varchar2(80) := c_package||'show_xml';
3980 --
3981   c_len_size number := 200;
3982   l_xml_len number;
3983   l_len_st number := 1;
3984   l_len_cnt number := 0;
3985   l_len_size number;
3986 --
3987 begin
3988 --
3989   if g_debug then
3990     hr_utility.set_location(l_proc,0);
3991   end if;
3992 --
3993   l_xml_len := dbms_lob.getlength(p_xml);
3994 --
3995   loop
3996   --
3997     l_len_st := l_len_cnt * c_len_size + 1;
3998   --
3999     l_len_size := c_len_size;
4000     if l_len_st + c_len_size - 1 > l_xml_len then
4001     --
4002       l_len_size := l_xml_len - l_len_st + 1;
4003     --
4004     end if;
4005   --
4006     fnd_file.put_line(fnd_file.log,dbms_lob.substr(p_xml,l_len_size,l_len_st));
4007   --
4008     if l_len_st + c_len_size - 1 > l_xml_len then
4009     --
4010       exit;
4011     --
4012     end if;
4013   --
4014     l_len_cnt := l_len_cnt + 1;
4015   --
4016   end loop;
4017 --
4018   if g_debug then
4019     hr_utility.trace('l_xml_len : '||to_char(l_xml_len));
4020     hr_utility.set_location(l_proc,1000);
4021   end if;
4022 --
4023 end show_xml;
4024 --
4025 -- -------------------------------------------------------------------------
4026 -- main_xml
4027 -- -------------------------------------------------------------------------
4028 function main_xml(
4029   p_assignment_id in number,
4030   p_emp_num       in varchar2,
4031   p_ni_num        in varchar2,
4032   p_emp_name      in varchar2,
4033   p_file_id       in number,
4034   p_xml           in clob)
4035 return varchar2
4036 is
4037 --
4038   l_proc varchar2(80) := c_package||'main_xml';
4039 --
4040   l_status varchar2(1);
4041 --
4042   l_ni_num per_all_people_f.national_identifier%type;
4043 --
4044   xml xmltype;
4045   xml_doc dbms_xmldom.domdocument;
4046 --
4047   form_nodelist dbms_xmldom.domnodelist;
4048   form_node dbms_xmldom.domnode;
4049 --
4050   l_form_cnt number;
4051 --
4052   l_value_tbl  t_char_tbl;
4053   l_values_tbl t_val_by_key_tbl;
4054   --l_value per_kr_assignment_yea_info.ayi_information1%type;
4055 --
4056   l_ass_data_rec t_ass_data_rec;
4057   l_ass_data_rec_n t_ass_data_rec;
4058 --
4059   l_ass_med_tbl      t_med_tbl;
4060   l_ass_don_tbl      t_don_tbl;
4061   l_ass_educ_tbl     t_educ_tbl;
4062   l_ass_uniform_tbl  t_uniform_tbl;
4063   l_ass_saving_tbl   t_saving_tbl;
4064   l_ass_dpnt_ind_tbl t_char_tbl;
4065   l_ass_dpnt_tbl     t_dpnt_tbl;
4066 --
4067   l_med_ind number;
4068   l_med_tbl t_med_tbl;
4069 --
4070   l_don_poli    number;
4071   l_don_tbl_tmp t_don_tbl;
4072   l_don_ind     number;
4073   l_don_tbl     t_don_tbl;
4074 --
4075   l_educ_tbl t_educ_tbl;
4076   l_uniform_tbl t_uniform_tbl;
4077 --
4078   l_saving_ind         number;
4079   l_saving_tbl         t_saving_tbl;
4080   l_cards_tbl          t_cards_tbl;
4081   l_lthouse_tbl        t_lthouse_tbl;
4082   l_pen_saving_ind     number := 0;
4083   l_sep_pen_saving_tbl t_saving_tbl;
4084   l_pen_saving_tbl     t_saving_tbl;
4085   l_hou_saving_tbl     t_saving_tbl;
4086   l_lts_saving_tbl     t_saving_tbl;
4087 --
4088   l_med_exp_nts number;
4089   l_don_exp_nts number;
4090 --
4091   l_dpnt_ind_tbl t_char_tbl;
4092   l_dpnt_ind     number;
4093   l_dpnt_tbl     t_dpnt_tbl;
4094   l_dpnt_num     number;
4095 --
4096   l_assignment_yea_info_id number;
4097   l_contact_extra_info_id number;
4098 --
4099   l_max_priority number;
4100   l_tmp per_kr_assignment_yea_info.ayi_information1%type;
4101 --
4102   l_return_status varchar2(5);
4103   l_return_message varchar2(300);
4104   l_ff_message0 per_kr_assignment_yea_info.ayi_information1%type;
4105   l_ff_message1 per_kr_assignment_yea_info.ayi_information1%type;
4106   l_ff_message2 per_kr_assignment_yea_info.ayi_information1%type;
4107   l_ff_message3 per_kr_assignment_yea_info.ayi_information1%type;
4108   l_ff_message4 per_kr_assignment_yea_info.ayi_information1%type;
4109   l_ff_message5 per_kr_assignment_yea_info.ayi_information1%type;
4110   l_ff_message6 per_kr_assignment_yea_info.ayi_information1%type;
4111   l_ff_message7 per_kr_assignment_yea_info.ayi_information1%type;
4112   l_ff_message8 per_kr_assignment_yea_info.ayi_information1%type;
4113   l_ff_message9 per_kr_assignment_yea_info.ayi_information1%type;
4114   l_ff_return_status varchar2(30);
4115   l_failed_record per_kr_assignment_yea_info.information_type%type;
4116   -- Bug 14062211
4117 p_stat_self  	number;
4118 p_stat_spouse number;
4119 p_stat_child  number;
4120 p_pol_self  	number;
4121 p_tax_self  	number;
4122 p_tax_spouse  number;
4123 p_tax_child  	number;
4124 p_pledt_self  number;
4125 p_pledt_spouse number;
4126 p_pledt_child  number;
4127 p_esoa_self  	number;
4128 p_spec_self  	number;
4129 p_spec_spouse  number;
4130 p_spec_child   number;
4131 p_rel_self      number;
4132 p_rel_spouse   number;
4133 p_rel_child  	 number;
4134 p_oth_self  	 number;
4135 p_oth_spouse  	 number;
4136 p_oth_child  	 number;
4137 p_stat_parent  	 number;
4138 p_stat_bro_sis	 number;
4139 p_tax_parent  	 number;
4140 p_tax_bro_sis 	number;
4141 p_pledt_parent 	number;
4142 p_pledt_bro_sis	number;
4143 p_spec_parent  	number;
4144 p_spec_bro_sis 	number;
4145 p_rel_parent  	number;
4146 p_rel_bro_sis  	number;
4147 p_oth_parent  	number;
4148 p_oth_bro_sis   number;
4149 p_political	    number;
4150 p_statutory 	  number;
4151 p_esoa		      number;
4152 p_pledt		      number;
4153 p_religious	    number;
4154 p_specified	    number;
4155 p_tax_law	      number;
4156 p_total_don_dpnts number;
4157 l_start_dt number;
4158 --
4159   cursor csr_pkayi
4160   is
4161   select sptei.ayi_information5   pers_ins_prem,
4162          sptei.ayi_information6   disabled_ins_prem,
4163          sptei.ayi_information15  housing_loan_repay,
4164          sptei.ayi_information14  housing_loan_date,
4165          sptei.ayi_information17  lt_housing_loan_interest_rep,
4166          sptei.ayi_information26  lt_housing_loan_int_repay_1,
4167          sptei2.ayi_information2  lt_housing_loan_int_repay_2,
4168 		 sptei3.ayi_information6  lt_2012_fixed_intr_wo_grace,
4169 		 sptei3.ayi_information7  lt_2012_housing_other_intr,
4170          sptei.ayi_information9   med_exp_aged,
4171          sptei.ayi_information24  med_exp_emp,
4172          sptei.ayi_information7   med_exp,
4173          sptei.ayi_information19  political_donation1,
4174          sptei.ayi_information10  ee_educ_exp,
4175          sptei2.ayi_information2  ee_occupation_educ_exp,
4176          tei.ayi_information3     pers_pension_prem,
4177          tei.ayi_information20    small_bus_install,
4178          tei.ayi_information7     credit_card_exp,
4179          tei.ayi_information13    cash_receipt_exp,
4180          tei.ayi_information10    direct_card_exp,
4181 		 tei2.ayi_information3    credit_tm_exp,
4182 		 tei2.ayi_information5    cash_tm_exp,
4183 		 tei2.ayi_information7    direct_tm_exp,
4184          eed.ayi_information6     ins_exp_nts,
4185          eed.ayi_information2     med_exp_nts,
4186          eed.ayi_information3     educ_exp_nts,
4187          eed.ayi_information4     card_exp_nts,
4188 		 eed.ayi_information8     card_tm_nts,
4189          eed.ayi_information7     direct_payment_nts,
4190 		 eed.ayi_information9     direct_tm_nts,
4191          eed.ayi_information5     don_exp_nts,
4192          --
4193          es.ayi_information3      entry_status,
4194          --
4195          sptei.ayi_information11  housing_saving_type,
4196          sptei.ayi_information12  housing_saving,
4197          sptei.ayi_information13  housing_purchase_date,
4198          sptei.ayi_information16  lt_housing_loan_date,
4199          sptei.ayi_information18  donation1,
4200          sptei.ayi_information2   hi_prem,
4201          sptei.ayi_information20  political_donation2,
4202          sptei.ayi_information21  political_donation3,
4203          sptei.ayi_information22  donation2,
4204          sptei.ayi_information23  donation3,
4205          sptei.ayi_information25  lt_housing_loan_date_1,
4206          sptei.ayi_information27  mfr_marriage_occasions,
4207          sptei.ayi_information28  mfr_funeral_occasions,
4208          sptei.ayi_information29  mfr_relocation_occasions,
4209          sptei.ayi_information3   ei_prem,
4210          sptei.ayi_information30  esoa_donation,
4211          sptei.ayi_information4   pers_ins_name,
4212          sptei.ayi_information8   med_exp_disabled,
4213          fwtbi.ayi_information1   immigration_purpose,
4214          fwtbi.ayi_information2   contract_date,
4215          fwtbi.ayi_information3   expiry_date,
4216          fwtbi.ayi_information4   stax_applicable_flag,
4217          fwtbi.ayi_information5   fw_application_date,
4218          fwtbi.ayi_information6   fw_submission_date,
4219          ovtbi.ayi_information1   tax_paid_date,
4220          ovtbi.ayi_information10  ovs_submission_date,
4221          ovtbi.ayi_information11  kr_ovs_location,
4222          ovtbi.ayi_information12  kr_ovs_work_period,
4223          ovtbi.ayi_information13  kr_ovs_responsibility,
4224          ovtbi.ayi_information2   territory_code,
4225          ovtbi.ayi_information3   currency_code,
4226          ovtbi.ayi_information4   taxable,
4227          ovtbi.ayi_information5   taxable_subj_tax_break,
4228          ovtbi.ayi_information6   tax_break_rate,
4229          ovtbi.ayi_information7   tax_foreign_currency,
4230          ovtbi.ayi_information8   tax,
4231          ovtbi.ayi_information9   ovs_application_date,
4232          tbi.ayi_information2     housing_loan_interest_repay,
4233          tbi.ayi_information3     stock_saving,
4234          tbi.ayi_information4     lt_stock_saving1,
4235          tbi.ayi_information5     lt_stock_saving2,
4236          tei.ayi_information11    dpnt_direct_exp,
4237          tei.ayi_information12    giro_tuition_paid_exp,
4238          tei.ayi_information2     np_prem,
4239          tei.ayi_information4     pers_pension_saving,
4240          tei.ayi_information5     invest_partnership_fin1,
4241          tei.ayi_information6     invest_partnership_fin2,
4242          tei.ayi_information8     emp_stock_own_plan_contri,
4243          tei.ayi_information9     credit_card_exp_dpnt,
4244          tei.ayi_information15    pen_prem,
4245          sptei2.ayi_information11 ltci_prem
4246   from   per_kr_assignment_yea_info sptei,
4247          per_kr_assignment_yea_info sptei2,
4248 		 per_kr_assignment_yea_info sptei3,
4249          per_kr_assignment_yea_info fwtbi,
4250          per_kr_assignment_yea_info ovtbi,
4251          per_kr_assignment_yea_info tbi,
4252          per_kr_assignment_yea_info tei,
4253 		 per_kr_assignment_yea_info tei2,
4254          per_kr_assignment_yea_info eed,
4255          per_kr_assignment_yea_info es
4256   where  sptei.assignment_id = p_assignment_id
4257   and    sptei.target_year = g_target_yyyy
4258   and    sptei.information_type = 'KR_YEA_SP_TAX_EXEM_INFO'
4259   and    sptei2.assignment_id = sptei.assignment_id
4260   and    sptei2.target_year = sptei.target_year
4261   and    sptei2.information_type = 'KR_YEA_SP_TAX_EXEM_INFO2'
4262   and    sptei3.assignment_id = sptei.assignment_id
4263   and    sptei3.target_year = sptei.target_year
4264   and    sptei3.information_type = 'KR_YEA_SP_TAX_EXEM_INFO3'
4265   and    fwtbi.assignment_id (+) = sptei.assignment_id
4266   and    fwtbi.target_year (+) = sptei.target_year
4267   and    fwtbi.information_type (+) = 'KR_YEA_FW_TAX_BREAK_INFO'
4268   and    ovtbi.assignment_id = sptei.assignment_id
4269   and    ovtbi.target_year = sptei.target_year
4270   and    ovtbi.information_type = 'KR_YEA_OVS_TAX_BREAK_INFO'
4271   and    tbi.assignment_id (+) = sptei.assignment_id
4272   and    tbi.target_year (+) = sptei.target_year
4273   and    tbi.information_type (+) = 'KR_YEA_TAX_BREAK_INFO'
4274   and    tei.assignment_id = sptei.assignment_id
4275   and    tei.target_year = sptei.target_year
4276   and    tei.information_type = 'KR_YEA_TAX_EXEM_INFO'
4277   and    tei2.assignment_id = sptei.assignment_id
4278   and    tei2.target_year = sptei.target_year
4279   and    tei2.information_type = 'KR_YEA_TAX_EXEM_INFO2'
4280   and    eed.assignment_id (+) = sptei.assignment_id
4281   and    eed.target_year (+) = sptei.target_year
4282   and    eed.information_type (+) = 'KR_YEA_EMP_EXPENSE_DETAILS'
4283   and    es.assignment_id = sptei.assignment_id
4284   and    es.target_year = sptei.target_year
4285   and    es.information_type = 'KR_YEA_ENTRY_STATUS';
4286 --
4287   l_csr_pkayi csr_pkayi%rowtype;
4288 --
4289   cursor csr_med_max_priority
4290   is
4291   select max(fnd_number.canonical_to_number(nvl(ayi_information10,0)))
4292   from   per_kr_assignment_yea_info
4293   where  assignment_id = p_assignment_id
4294   and    information_type = 'KR_YEA_DETAIL_MEDICAL_EXP_INFO'
4295   and    ayi_information_category = 'KR_YEA_DETAIL_MEDICAL_EXP_INFO'
4296   and    target_year = g_target_yyyy;
4297 --
4298   cursor csr_med_total_o
4299   is
4300   select sum(to_number(decode(ayi_information7,
4301            '0',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0) + nvl(fnd_number.canonical_to_number(ayi_information11),0)),null))) emp,
4302          sum(to_number(decode(ayi_information7,
4303            '0',null,to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0) + nvl(fnd_number.canonical_to_number(ayi_information11),0))))) dep,
4304          sum(to_number(decode(ayi_information9,
4305            'B',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0) + nvl(fnd_number.canonical_to_number(ayi_information11),0)),null))) aged
4306   from   per_kr_assignment_yea_info
4307   where  assignment_id = p_assignment_id
4308   and    information_type = 'KR_YEA_DETAIL_MEDICAL_EXP_INFO'
4309   and    ayi_information_category = 'KR_YEA_DETAIL_MEDICAL_EXP_INFO'
4310   and    target_year = g_target_yyyy
4311   and    ayi_information13 <> '1';
4312 --
4313   l_csr_med_total_o csr_med_total_o%rowtype;
4314 --
4315   cursor csr_don_total
4316   is
4317   select sum(to_number(decode(ayi_information5,
4318            '10',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) statutory,
4319          sum(to_number(decode(ayi_information5,
4320            '20',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) political,
4321          sum(to_number(decode(ayi_information5,
4322            '21',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) promotional,
4323          sum(to_number(decode(ayi_information5,
4324            '30',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) special,
4325          sum(to_number(decode(ayi_information5,
4326            '31',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) publicLegal,
4327          sum(to_number(decode(ayi_information5,
4328            '40',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) specified,
4329          sum(to_number(decode(ayi_information5,
4330            '41',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) religious,
4331          sum(to_number(decode(ayi_information5,
4332            '42',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) esoa,
4333          sum(to_number(decode(ayi_information5,
4334            '50',to_char(nvl(fnd_number.canonical_to_number(ayi_information3),0)),null))) other
4335   from   per_kr_assignment_yea_info
4336   where  assignment_id = p_assignment_id
4337   and    information_type = 'KR_YEA_DETAIL_DONATION_INFO'
4338   and    ayi_information_category = 'KR_YEA_DETAIL_DONATION_INFO'
4339   and    target_year = g_target_yyyy;
4340 --
4341   l_csr_don_total csr_don_total%rowtype;
4342 --
4343   cursor csr_sep_pen_total
4344   is
4345   select sum(to_number(decode(ayi_information2,
4346            '1',to_char(nvl(fnd_number.canonical_to_number(ayi_information5),0)),null))) employment,
4347          sum(to_number(decode(ayi_information2,
4348            '2',to_char(nvl(fnd_number.canonical_to_number(ayi_information5),0)),null))) scientific
4349   from   per_kr_assignment_yea_info
4350   where  assignment_id = p_assignment_id
4351   and    information_type = 'KR_YEA_SEP_PEN_DETAILS'
4352   and    ayi_information_category = 'KR_YEA_SEP_PEN_DETAILS'
4353   and    target_year = g_target_yyyy;
4354 --
4355   l_csr_sep_pen_total csr_sep_pen_total%rowtype;
4356 --
4357   cursor csr_lts_total
4358   is
4359   select sum(to_number(decode(ayi_information2,
4360            '1',to_char(nvl(fnd_number.canonical_to_number(ayi_information5),0)),null))) year1,
4361          sum(to_number(decode(ayi_information2,
4362            '2',to_char(nvl(fnd_number.canonical_to_number(ayi_information5),0)),null))) year2,
4363          sum(to_number(decode(ayi_information2,
4364            '3',to_char(nvl(fnd_number.canonical_to_number(ayi_information5),0)),null))) year3
4365   from   per_kr_assignment_yea_info
4366   where  assignment_id = p_assignment_id
4367   and    information_type = 'KR_YEA_LT_STOCK_SAVING_DETAILS'
4368   and    ayi_information_category = 'KR_YEA_LT_STOCK_SAVING_DETAILS'
4369   and    target_year = g_target_yyyy;
4370 --
4371   l_csr_lts_total csr_lts_total%rowtype;
4372 --
4373   cursor csr_pen_total
4374   is
4375   select sum(to_number(decode(ayi_information2,
4376            '2',to_char(nvl(fnd_number.canonical_to_number(ayi_information5),0)),null))) pen_saving
4377   from   per_kr_assignment_yea_info
4378   where  assignment_id = p_assignment_id
4379   and    information_type = 'KR_YEA_PEN_SAVING_DETAILS'
4380   and    ayi_information_category = 'KR_YEA_PEN_SAVING_DETAILS'
4381   and    target_year = g_target_yyyy;
4382 --
4383   l_csr_pen_total csr_pen_total%rowtype;
4384 --
4385 begin
4386 --
4387   if g_debug then
4388     hr_utility.set_location(l_proc,0);
4389   end if;
4390 --
4391   if nvl(g_show_xml,'N') = 'Y' then
4392   --
4393     show_xml(p_xml);
4394   --
4395   end if;
4396 --
4397   l_ni_num := cnv_ni(p_ni_num);
4398 --
4399 -- *************************************
4400 -- capture data from xml
4401 -- *************************************
4402   xml := xmltype.createxml(p_xml);
4403   xml_doc := dbms_xmldom.newdomdocument(xml);
4404 --
4405   form_nodelist := dbms_xmldom.getelementsbytagname(xml_doc,'form');
4406   l_form_cnt := dbms_xmldom.getlength(form_nodelist);
4407 --
4408   if not dbms_xmldom.isnull(form_nodelist)
4409   and l_form_cnt > 0 then
4410   --
4411     l_med_ind := 0;
4412     l_med_tbl.delete;
4413   --
4414     l_don_poli := 0;
4415     l_don_ind := 0;
4416     l_don_tbl_tmp.delete;
4417     l_don_tbl.delete;
4418   --
4419     l_educ_tbl.delete;
4420   --
4421     l_saving_ind := 0;
4422     l_saving_tbl.delete;
4423 	l_cards_tbl.delete;
4424     l_lthouse_tbl.delete;
4425 	l_uniform_tbl.delete;
4426     l_sep_pen_saving_tbl.delete;
4427     l_hou_saving_tbl.delete;
4428     l_lts_saving_tbl.delete;
4429   --
4430     l_med_exp_nts := 0;
4431     l_don_exp_nts := 0;
4432   --
4433     g_dpnt_ind := null;
4434     g_dpnt_ni_num := null;
4435     l_dpnt_tbl.delete;
4436     l_dpnt_ind := 0;
4437     l_dpnt_ind_tbl.delete;
4438   --
4439     for i in 0..l_form_cnt - 1 loop
4440     --
4441       form_node := dbms_xmldom.item(form_nodelist,i);
4442     --
4443       -- --------------------------------------------------
4444       -- Special Tax Exemptions
4445       -- --------------------------------------------------
4446       --
4447       -- <<Insurance Premium>>
4448       --
4449       -- Personal Ins. Premium
4450       l_values_tbl := get_item_values_in_form(
4451                         p_form_node => form_node,
4452                         p_form_type => 'A102Y',
4453                         p_man_key   => 'resid',
4454                         p_data_type => 'A01',
4455                         p_item_name => 'sum');
4456       --
4457       if l_values_tbl.count > 0 then
4458       --
4459         for a01cnt in l_values_tbl.first..l_values_tbl.last loop
4460         --
4461           -- accumulate for only person
4462           if l_values_tbl(a01cnt).key = l_ni_num then
4463           --
4464             l_ass_data_rec.pers_ins_prem := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.pers_ins_prem),0)
4465                                             + nvl(to_number(l_values_tbl(a01cnt).val),0));
4466           --
4467           else
4468           --
4469             begin
4470             --
4471               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(a01cnt).key)).ins_prem_nts;
4472             --
4473             exception
4474             when others then
4475             --
4476               l_dpnt_num := 0;
4477               l_dpnt_ind_tbl(l_dpnt_ind) := l_values_tbl(a01cnt).key;
4478               l_dpnt_ind := l_dpnt_ind + 1;
4479             --
4480             end;
4481           --
4482             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(a01cnt).key)).ins_prem_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_values_tbl(a01cnt).val),0);
4483           --
4484           end if;
4485         --
4486         end loop;
4487       --
4488       end if;
4489      --
4490       -- Disabled Ins. Premium
4491       l_values_tbl := get_item_values_in_form(
4492                         p_form_node => form_node,
4493                         p_form_type => 'A102Y',
4494                         p_man_key   => 'resid',
4495                         p_data_type => 'A02',
4496                         p_item_name => 'sum');
4497       --
4498       if l_values_tbl.count > 0 then
4499       --
4500         for a02cnt in l_values_tbl.first..l_values_tbl.last loop
4501         --
4502           -- accumulate for only person
4503           if l_values_tbl(a02cnt).key = l_ni_num then
4504           --
4505             l_ass_data_rec.disabled_ins_prem := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.disabled_ins_prem),0)
4506                                                 + nvl(to_number(l_values_tbl(a02cnt).val),0));
4507           --
4508           else
4509           --
4510             begin
4511             --
4512               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(a02cnt).key)).dis_ins_nts;
4513             --
4514             exception
4515             when others then
4516             --
4517               l_dpnt_num := 0;
4518               l_dpnt_ind_tbl(l_dpnt_ind) := l_values_tbl(a02cnt).key;
4519               l_dpnt_ind := l_dpnt_ind + 1;
4520             --
4521             end;
4522           --
4523             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(a02cnt).key)).dis_ins_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_values_tbl(a02cnt).val),0);
4524           --
4525           end if;
4526         --
4527         end loop;
4528       --
4529       end if;
4530       --
4531       -- <<Housing>>
4532       --
4533       -- Institution Loan.Loan Paid
4534       l_value_tbl := get_item_values_in_form(
4535                        p_form_node => form_node,
4536                        p_form_type => 'J101Y',
4537                        p_data_type => 'J01',
4538                        p_item_name => 'sum');
4539       --
4540       if l_value_tbl.count > 0 then
4541       --
4542         for j01cnt in l_value_tbl.first..l_value_tbl.last loop
4543         --
4544           l_ass_data_rec.housing_loan_repay := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.housing_loan_repay),0)
4545                                                + nvl(to_number(l_value_tbl(j01cnt)),0));
4546         --
4547         end loop;
4548       --
4549       end if;
4550       --
4551       -- Institution Loan.Loan Date
4552       l_value_tbl := get_item_values_in_form(
4553                        p_form_node => form_node,
4554                        p_form_type => 'J101Y',
4555                        p_data_type => 'J01',
4556                        p_item_name => 'lend_dt');
4557       --
4558       if l_value_tbl.count > 0 then
4559       --
4560         if l_value_tbl.count = 1 then
4561         --
4562           l_ass_data_rec.housing_loan_date := fnd_date.date_to_canonical(to_date(l_value_tbl(l_value_tbl.first),c_xml_date_fmt));
4563         --
4564         else
4565         --
4566           -- warning
4567           fnd_message.set_name('PAY','PAY_KR_YEA_PDF_MLT_HOU_DATE');
4568           fnd_message.set_token('EMP_NAME',p_emp_name);
4569           fnd_message.set_token('EMP_NO',p_emp_num);
4570         --
4571           g_msg := fnd_message.get;
4572         --
4573           fnd_file.put_line(fnd_file.log,g_msg);
4574         --
4575         end if;
4576         --
4577       --
4578       end if;
4579       --
4580       -- 600/1000/1500 Man Won Limit.Interest Paid
4581       /*l_values_tbl := get_item_values_in_form(
4582                         p_form_node => form_node,
4583                         p_form_type => 'J201Y',
4584                         p_data_type => 'J02',
4585                         p_item_key  => 'term',
4586                         p_item_name => 'sum'); */
4587 
4588 	  l_lthouse_tbl := get_long_term_house_values(
4589                         p_form_node => form_node,
4590                         p_form_type => 'J203Y',
4591                         p_data_type => 'J02',
4592                         p_item_key  => 'repay_years',
4593                         p_item_name => 'sum');
4594       --
4595      if l_lthouse_tbl.count > 0 then
4596       --
4597         for j02cnt in l_lthouse_tbl.first..l_lthouse_tbl.last loop
4598         --
4599 		select substr(l_lthouse_tbl(j02cnt).start_date,1,4) into l_start_dt from dual;
4600 
4601 		IF l_start_dt < 2012 THEN
4602           if l_lthouse_tbl(j02cnt).key is not null then
4603           --
4604             if to_number(l_lthouse_tbl(j02cnt).key) < c_int_type1_year_min then
4605             --
4606               l_ass_data_rec.lt_housing_loan_interest_rep := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.lt_housing_loan_interest_rep),0)
4607                                                              + nvl(to_number(l_lthouse_tbl(j02cnt).val),0));
4608             --
4609             elsif to_number(l_lthouse_tbl(j02cnt).key) >= c_int_type1_year_min
4610                   and to_number(l_lthouse_tbl(j02cnt).key) < c_int_type2_year_min then
4611             --
4612               l_ass_data_rec.lt_housing_loan_int_repay_1 := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.lt_housing_loan_int_repay_1),0)
4613                                                             + nvl(to_number(l_lthouse_tbl(j02cnt).val),0));
4614             --
4615             elsif to_number(l_lthouse_tbl(j02cnt).key) >= c_int_type2_year_min then
4616             --
4617               l_ass_data_rec.lt_housing_loan_int_repay_2 := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.lt_housing_loan_int_repay_2),0)
4618                                                             + nvl(to_number(l_lthouse_tbl(j02cnt).val),0));
4619             --
4620              end if;
4621           --
4622            end if;
4623 		ELSIF l_start_dt >=  2012 THEN
4624 		     if ( nvl(to_number(l_lthouse_tbl(j02cnt).debt),0) = 0  and
4625 			     nvl(to_number(l_lthouse_tbl(j02cnt).fixed_rate),0) = 0 and
4626 				 nvl(to_number(l_lthouse_tbl(j02cnt).defer_debt),0) = 0 and
4627 				 nvl(to_number(l_lthouse_tbl(j02cnt).year_amt),0) = 0 and
4628 				 to_number(l_lthouse_tbl(j02cnt).val) is not null) then
4629 			 l_ass_data_rec.lt_2012_housing_other_intr := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.lt_2012_housing_other_intr),0)
4630                                                             + nvl(to_number(l_lthouse_tbl(j02cnt).val),0));
4631 			 else
4632 			 l_ass_data_rec.lt_2012_fixed_intr_wo_grace := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.lt_2012_fixed_intr_wo_grace),0)
4633                                                             + nvl(to_number(l_lthouse_tbl(j02cnt).val),0));
4634 			 end if;
4635 
4636 		END IF;
4637         --
4638         end loop;
4639       --
4640       end if;
4641       --
4642       -- <<Medical Exemptions>>
4643       --
4644       -- Total Medical Expenses.Employee/Dependent/Aged
4645       l_values_tbl := get_item_values_in_form(
4646                         p_form_node => form_node,
4647                         p_form_type => 'B101Y',
4648                         p_man_key   => 'resid',
4649                         p_data_type => 'B01',
4650                         p_item_name => 'sum');
4651       --
4652       if l_values_tbl.count > 0 then
4653       --
4654         for b01cnt in l_values_tbl.first..l_values_tbl.last loop
4655         --
4656           -- accumulate for only person
4657           if l_values_tbl(b01cnt).key = l_ni_num then
4658           --
4659             if pay_kr_ff_functions_pkg.aged_flag(l_values_tbl(b01cnt).key,g_target_eoy) = 'Y' then
4660             --
4661               l_ass_data_rec.med_exp_aged := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.med_exp_aged),0)
4662                                              + nvl(to_number(l_values_tbl(b01cnt).val),0));
4663             --
4664               l_med_tbl(l_med_ind).paid_amount              := to_number(l_values_tbl(b01cnt).val);
4665               l_med_tbl(l_med_ind).source_code              := '1'; /* KR_YEA_SOURCE_CODE */
4666               l_med_tbl(l_med_ind).resident_registration_no := l_values_tbl(b01cnt).key;
4667               l_med_tbl(l_med_ind).disabled_or_aged         := 'B'; /* KR_DISABLED_OR_AGED */
4668             --
4669             else
4670             --
4671               l_ass_data_rec.med_exp_emp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.med_exp_emp),0)
4672                                             + nvl(to_number(l_values_tbl(b01cnt).val),0));
4673             --
4674               l_med_tbl(l_med_ind).paid_amount              := to_number(l_values_tbl(b01cnt).val);
4675               l_med_tbl(l_med_ind).source_code              := '1'; /* KR_YEA_SOURCE_CODE */
4676               l_med_tbl(l_med_ind).resident_registration_no := l_values_tbl(b01cnt).key;
4677             --
4678             end if;
4679           --
4680             l_med_exp_nts := l_med_exp_nts + nvl(to_number(l_values_tbl(b01cnt).val),0);
4681           --
4682           -- accumulate for only dependent
4683           else
4684           --
4685             if pay_kr_ff_functions_pkg.aged_flag(l_values_tbl(b01cnt).key,g_target_eoy) = 'Y' then
4686             --
4687               l_ass_data_rec.med_exp_aged := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.med_exp_aged),0)
4688                                              + nvl(to_number(l_values_tbl(b01cnt).val),0));
4689             --
4690               l_med_tbl(l_med_ind).paid_amount              := to_number(l_values_tbl(b01cnt).val);
4691               l_med_tbl(l_med_ind).source_code              := '1'; /* KR_YEA_SOURCE_CODE */
4692               l_med_tbl(l_med_ind).resident_registration_no := l_values_tbl(b01cnt).key;
4693               l_med_tbl(l_med_ind).disabled_or_aged         := 'B'; /* KR_DISABLED_OR_AGED */
4694             --
4695             else
4696             --
4697               l_ass_data_rec.med_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.med_exp),0)
4698                                         + nvl(to_number(l_values_tbl(b01cnt).val),0));
4699             --
4700               l_med_tbl(l_med_ind).paid_amount              := to_number(l_values_tbl(b01cnt).val);
4701               l_med_tbl(l_med_ind).source_code              := '1'; /* KR_YEA_SOURCE_CODE */
4702               l_med_tbl(l_med_ind).resident_registration_no := l_values_tbl(b01cnt).key;
4703             --
4704             end if;
4705           --
4706             begin
4707             --
4708               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(b01cnt).key)).med_exp_nts;
4709             --
4710             exception
4711             when others then
4712             --
4713               l_dpnt_num := 0;
4714               l_dpnt_ind_tbl(l_dpnt_ind) := l_values_tbl(b01cnt).key;
4715               l_dpnt_ind := l_dpnt_ind + 1;
4716             --
4717             end;
4718           --
4719             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(b01cnt).key)).med_exp_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_values_tbl(b01cnt).val),0);
4720           --
4721           end if;
4722         --
4723           -- assume to recursive for each unique different person
4724           l_med_ind := l_med_ind + 1;
4725         --
4726         end loop;
4727       --
4728         l_ass_data_rec.med_tbl := l_med_tbl;
4729       --
4730       end if;
4731       --
4732       -- <<Donations>>
4733       --
4734       -- Total Donation Amounts.Employee/Dependent/Aged
4735       l_don_tbl_tmp := get_donate_values(
4736                          p_form_node => form_node);
4737       --
4738       if l_don_tbl_tmp.count > 0 then
4739       --
4740         for l01cnt in l_don_tbl_tmp.first..l_don_tbl_tmp.last loop
4741         --
4742           -- accumulate for only person
4743           if l_don_tbl_tmp(l01cnt).ni_num = l_ni_num then
4744           --
4745             if l_don_tbl_tmp(l01cnt).donation_code = '20' then
4746             --
4747               if l_don_poli + nvl(to_number(nvl(l_don_tbl_tmp(l01cnt).donated_amount,l_don_tbl_tmp(l01cnt).sum)),0) < c_don_poli_max then
4748               --
4749 	      null;
4750                -- l_don_poli := l_don_poli + nvl(to_number(nvl(l_don_tbl_tmp(l01cnt).donated_amount,l_don_tbl_tmp(l01cnt).sum)),0);
4751               --
4752               else
4753               --
4754                 l_don_tbl(l_don_ind).ni_num                        := l_don_tbl_tmp(l01cnt).ni_num;
4755                 l_don_tbl(l_don_ind).donator_name                  := l_don_tbl_tmp(l01cnt).donator_name;
4756                 l_don_tbl(l_don_ind).donation_code                 := l_don_tbl_tmp(l01cnt).donation_code;
4757                 l_don_tbl(l_don_ind).donated_date                  := fnd_date.date_to_canonical(to_date(l_don_tbl_tmp(l01cnt).donated_date,c_xml_date_fmt)); /* covert to canonical from xml fmt */
4758                 l_don_tbl(l_don_ind).recipient_name                := l_don_tbl_tmp(l01cnt).recipient_name;
4759                 l_don_tbl(l_don_ind).recipient_registration_number := l_don_tbl_tmp(l01cnt).recipient_registration_number;
4760                 l_don_tbl(l_don_ind).donated_amount                := fnd_number.number_to_canonical(l_don_poli
4761                                                                       + nvl(to_number(nvl(l_don_tbl_tmp(l01cnt).donated_amount,l_don_tbl_tmp(l01cnt).sum)),0)
4762                                                                       /*- c_don_poli_max*/);
4763                 l_don_tbl(l_don_ind).donation_detail_type          := '1'; /* KR_YEA_DONATION_DETAIL_TYPE */
4764                 l_don_ind := l_don_ind + 1;
4765               --
4766                 -- l_don_poli := c_don_poli_max;
4767               --
4768               end if;
4769             --
4770             else
4771             --
4772               l_don_tbl(l_don_ind).ni_num                        := l_don_tbl_tmp(l01cnt).ni_num;
4773               l_don_tbl(l_don_ind).donator_name                  := l_don_tbl_tmp(l01cnt).donator_name;
4774               l_don_tbl(l_don_ind).donation_code                 := l_don_tbl_tmp(l01cnt).donation_code;
4775               l_don_tbl(l_don_ind).donated_date                  := fnd_date.date_to_canonical(to_date(l_don_tbl_tmp(l01cnt).donated_date,c_xml_date_fmt));
4776               l_don_tbl(l_don_ind).recipient_name                := l_don_tbl_tmp(l01cnt).recipient_name;
4777               l_don_tbl(l_don_ind).recipient_registration_number := l_don_tbl_tmp(l01cnt).recipient_registration_number;
4778               l_don_tbl(l_don_ind).donated_amount                := fnd_number.number_to_canonical(to_number(nvl(l_don_tbl_tmp(l01cnt).donated_amount,l_don_tbl_tmp(l01cnt).sum)));
4779               l_don_tbl(l_don_ind).donation_detail_type          := '1'; /* KR_YEA_DONATION_DETAIL_TYPE */
4780               l_don_ind := l_don_ind + 1;
4781             --
4782             end if;
4783           --
4784             l_don_exp_nts := l_don_exp_nts + nvl(to_number(nvl(l_don_tbl_tmp(l01cnt).donated_amount,l_don_tbl_tmp(l01cnt).sum)),0);
4785           --
4786           -- accumulate for only dependent
4787           else
4788           --
4789             l_don_tbl(l_don_ind).ni_num                        := l_don_tbl_tmp(l01cnt).ni_num;
4790             l_don_tbl(l_don_ind).donator_name                  := l_don_tbl_tmp(l01cnt).donator_name;
4791             l_don_tbl(l_don_ind).donation_code                 := l_don_tbl_tmp(l01cnt).donation_code;
4792             l_don_tbl(l_don_ind).donated_date                  := fnd_date.date_to_canonical(to_date(l_don_tbl_tmp(l01cnt).donated_date,c_xml_date_fmt));
4793             l_don_tbl(l_don_ind).recipient_name                := l_don_tbl_tmp(l01cnt).recipient_name;
4794             l_don_tbl(l_don_ind).recipient_registration_number := l_don_tbl_tmp(l01cnt).recipient_registration_number;
4795             l_don_tbl(l_don_ind).donated_amount                := fnd_number.number_to_canonical(to_number(nvl(l_don_tbl_tmp(l01cnt).donated_amount,l_don_tbl_tmp(l01cnt).sum)));
4796             l_don_tbl(l_don_ind).donation_detail_type          := '1'; /* KR_YEA_DONATION_DETAIL_TYPE */
4797             l_don_ind := l_don_ind + 1;
4798           --
4799             begin
4800             --
4801               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_don_tbl_tmp(l01cnt).ni_num)).don_exp_nts;
4802             --
4803             exception
4804             when others then
4805             --
4806               l_dpnt_num := 0;
4807               l_dpnt_ind_tbl(l_dpnt_ind) := l_don_tbl_tmp(l01cnt).ni_num;
4808               l_dpnt_ind := l_dpnt_ind + 1;
4809             --
4810             end;
4811           --
4812             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_don_tbl_tmp(l01cnt).ni_num)).don_exp_nts := nvl(l_dpnt_num,0)
4813               + nvl(to_number(nvl(l_don_tbl_tmp(l01cnt).donated_amount,l_don_tbl_tmp(l01cnt).sum)),0);
4814           --
4815           end if;
4816         --
4817         end loop;
4818       --
4819        -- if l_don_poli > 0 then
4820         --
4821           l_ass_data_rec.political_donation1 := nvl(l_don_poli,0);
4822         --
4823        --- end if;
4824       --
4825         l_ass_data_rec.don_tbl := l_don_tbl;
4826       --
4827       end if;
4828       --
4829       -- <<Education Expenses>>
4830       --
4831       -- Employee.Education
4832       l_values_tbl := get_item_values_in_form(
4833                         p_form_node => form_node,
4834                         p_form_type => 'C101Y',
4835                         p_man_key   => 'resid',
4836                         p_data_type => 'C01',
4837                         p_item_name => 'sum');
4838       --
4839       if l_values_tbl.count > 0 then
4840       --
4841         for c01cnt in l_values_tbl.first..l_values_tbl.last loop
4842         --
4843           -- accumulate for only person
4844           if l_values_tbl(c01cnt).key = l_ni_num then
4845           --
4846             l_ass_data_rec.ee_educ_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_educ_exp),0)
4847                                           + nvl(to_number(l_values_tbl(c01cnt).val),0));
4848           --
4849           else
4850           --
4851             begin
4852             --
4853               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(c01cnt).key)).educ_exp_nts;
4854             --
4855             exception
4856             when others then
4857             --
4858               l_dpnt_num := 0;
4859               l_dpnt_ind_tbl(l_dpnt_ind) := l_values_tbl(c01cnt).key;
4860               l_dpnt_ind := l_dpnt_ind + 1;
4861             --
4862             end;
4863           --
4864             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(c01cnt).key)).educ_exp_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_values_tbl(c01cnt).val),0);
4865           --
4866           end if;
4867         --
4868         end loop;
4869       --
4870       end if;
4871       --
4872       l_values_tbl := get_item_values_in_form(
4873                         p_form_node => form_node,
4874                         p_form_type => 'C101Y',
4875                         p_man_key   => 'resid',
4876                         p_data_type => 'C03',
4877                         p_item_name => 'sum');
4878       --
4879       if l_values_tbl.count > 0 then
4880       --
4881         for c03cnt in l_values_tbl.first..l_values_tbl.last loop
4882         --
4883           -- accumulate for only person
4884           if l_values_tbl(c03cnt).key = l_ni_num then
4885           --
4886             l_ass_data_rec.ee_educ_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_educ_exp),0)
4887                                           + nvl(to_number(l_values_tbl(c03cnt).val),0));
4888           --
4889           else
4890           --
4891             begin
4892             --
4893               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(c03cnt).key)).educ_exp_nts;
4894             --
4895             exception
4896             when others then
4897             --
4898               l_dpnt_num := 0;
4899               l_dpnt_ind_tbl(l_dpnt_ind) := l_values_tbl(c03cnt).key;
4900               l_dpnt_ind := l_dpnt_ind + 1;
4901             --
4902             end;
4903           --
4904             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(c03cnt).key)).educ_exp_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_values_tbl(c03cnt).val),0);
4905           --
4906           end if;
4907         --
4908         end loop;
4909       --
4910       end if;
4911       --
4912       l_values_tbl := get_item_values_in_form(
4913                         p_form_node => form_node,
4914                         p_form_type => 'C101Y',
4915                         p_man_key   => 'resid',
4916                         p_data_type => 'C04',
4917                         p_item_name => 'sum');
4918       --
4919       if l_values_tbl.count > 0 then
4920       --
4921         for c04cnt in l_values_tbl.first..l_values_tbl.last loop
4922         --
4923           -- accumulate for only person
4924           if l_values_tbl(c04cnt).key = l_ni_num then
4925           --
4926             l_ass_data_rec.ee_educ_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_educ_exp),0)
4927                                           + nvl(to_number(l_values_tbl(c04cnt).val),0));
4928           --
4929           else
4930           --
4931             begin
4932             --
4933               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(c04cnt).key)).educ_exp_nts;
4934             --
4935             exception
4936             when others then
4937             --
4938               l_dpnt_num := 0;
4939               l_dpnt_ind_tbl(l_dpnt_ind) := l_values_tbl(c04cnt).key;
4940               l_dpnt_ind := l_dpnt_ind + 1;
4941             --
4942             end;
4943           --
4944             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_values_tbl(c04cnt).key)).educ_exp_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_values_tbl(c04cnt).val),0);
4945           --
4946           end if;
4947         --
4948         end loop;
4949       --
4950       end if;
4951       --
4952       -- Employee.Occupational Training
4953       l_values_tbl := get_item_values_in_form(
4954                         p_form_node => form_node,
4955                         p_form_type => 'C202Y',
4956                         p_man_key   => 'resid',
4957                         p_data_type => 'C02',
4958                         p_item_name => 'sum');
4959       --
4960       if l_values_tbl.count > 0 then
4961       --
4962         for c02cnt in l_values_tbl.first..l_values_tbl.last loop
4963         --
4964           -- accumulate for only person
4965           if l_values_tbl(c02cnt).key = l_ni_num then
4966           --
4967             l_ass_data_rec.ee_occupation_educ_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_occupation_educ_exp),0)
4968                                                      + nvl(to_number(l_values_tbl(c02cnt).val),0));
4969           --
4970           end if;
4971         --
4972         end loop;
4973       --
4974       end if;
4975       --
4976       -- Dependent.Name/School Type/NTS/Other/Expense
4977       l_educ_tbl := get_dep_eduction_values(
4978                       p_form_node => form_node,
4979                       p_ni_num    => l_ni_num);
4980       --
4981       if l_educ_tbl.count > 0 then
4982       --
4983         l_ass_data_rec.educ_tbl := l_educ_tbl;
4984       --
4985       end if;
4986     --
4987     -- Uniform Expense
4988 	        l_uniform_tbl := get_uniform_values(
4989                         p_form_node => form_node,
4990                         p_form_type => 'C301Y',
4991                         p_man_key   => 'resid',
4992                         p_data_type => 'C06',
4993                         p_item_name => 'sum');
4994       --
4995       if l_uniform_tbl.count > 0 then
4996       --
4997          for c06cnt in l_uniform_tbl.first..l_uniform_tbl.last loop
4998         --
4999           -- accumulate for only person
5000           if l_uniform_tbl(c06cnt).key = l_ni_num then
5001           --
5002             l_ass_data_rec.ee_uniform_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_educ_exp),0)
5003                                           + nvl(to_number(l_uniform_tbl(c06cnt).val),0));
5004           --
5005           else
5006           --
5007             begin
5008             --
5009 			 l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_uniform_tbl(c06cnt).key)).educ_exp_nts;
5010             --
5011             exception
5012             when others then
5013             --
5014               l_dpnt_num := 0;
5015               l_dpnt_ind_tbl(l_dpnt_ind) := l_uniform_tbl(c06cnt).key;
5016               l_dpnt_ind := l_dpnt_ind + 1;
5017             --
5018             end;
5019           --
5020             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_uniform_tbl(c06cnt).key)).educ_exp_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_uniform_tbl(c06cnt).val),0);
5021           end if;
5022         --
5023         end loop;
5024       --
5025 	   l_ass_data_rec.uniform_tbl := l_uniform_tbl;
5026       end if;
5027       --
5028       -- --------------------------------------------------
5029       -- Other Tax Exemptions
5030       -- --------------------------------------------------
5031       --
5032       -- <<Pension>>
5033       --
5034       -- Civil Worker Pension Premium
5035       l_value_tbl := get_item_values_in_form(
5036                        p_form_node => form_node,
5037                        p_form_type => 'D101Y',
5038                        p_data_type => 'D01',
5039                        p_item_name => 'sum');
5040       --
5041       if l_value_tbl.count > 0 then
5042       --
5043         for d01cnt in l_value_tbl.first..l_value_tbl.last loop
5044         --
5045           l_ass_data_rec.pers_pension_prem := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.pers_pension_prem),0)
5046                                               + nvl(to_number(l_value_tbl(d01cnt)),0));
5047         --
5048         end loop;
5049       --
5050       end if;
5051       --
5052       -- <<Small Business Installment>>
5053       --
5054       -- Installment
5055       l_value_tbl := get_item_values_in_form(
5056                        p_form_node => form_node,
5057                        p_form_type => 'K101M',
5058                        p_data_type => 'K01',
5059                        p_item_name => 'sum');
5060       --
5061       if l_value_tbl.count > 0 then
5062       --
5063         for k01cnt in l_value_tbl.first..l_value_tbl.last loop
5064         --
5065           l_ass_data_rec.small_bus_install := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.small_bus_install),0)
5066                                               + nvl(to_number(l_value_tbl(k01cnt)),0));
5067         --
5068         end loop;
5069       --
5070       end if;
5071       --
5072       -- <<Credit Card Expense>>
5073       --
5074         -- Credit Card For Employee
5075       l_cards_tbl := get_card_values(
5076                         p_form_node => form_node,
5077                         p_form_type => 'G102Y',
5078                         p_man_key   => 'resid',
5079                         p_data_type => 'G01',
5080                         p_item_name => 'sum');
5081       --
5082       if l_cards_tbl.count > 0 then
5083       --
5084         for g01cnt in l_cards_tbl.first..l_cards_tbl.last loop
5085         --
5086           -- accumulate for only person
5087           if l_cards_tbl(g01cnt).key = l_ni_num then
5088           --
5089            if l_cards_tbl(g01cnt).use_place_cd = 1 then
5090             l_ass_data_rec.credit_card_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.credit_card_exp),0)
5091                                               + nvl(to_number(l_cards_tbl(g01cnt).val),0));
5092 		   else
5093             l_ass_data_rec.credit_tm_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.credit_tm_exp),0)
5094                                               + nvl(to_number(l_cards_tbl(g01cnt).val),0));
5095 		   end if;
5096           else
5097           --
5098             begin
5099             --
5100 			  if l_cards_tbl(g01cnt).use_place_cd = 1 then
5101               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g01cnt).key)).card_exp_nts;
5102 			  else
5103 			  l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g01cnt).key)).card_tm_nts;
5104 			  end if;
5105             --
5106             exception
5107             when others then
5108             --
5109               l_dpnt_num := 0;
5110               l_dpnt_ind_tbl(l_dpnt_ind) := l_cards_tbl(g01cnt).key;
5111               l_dpnt_ind := l_dpnt_ind + 1;
5112             --
5113             end;
5114           --
5115 		    if l_cards_tbl(g01cnt).use_place_cd = 1 then
5116             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g01cnt).key)).card_exp_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_cards_tbl(g01cnt).val),0);
5117 			else
5118 			l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g01cnt).key)).card_tm_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_cards_tbl(g01cnt).val),0);
5119 			end if;
5120           --
5121           end if;
5122         --
5123         end loop;
5124       --
5125       end if;
5126       --
5127          -- Cash Receipt Expenses
5128       l_cards_tbl := get_card_values(
5129                         p_form_node => form_node,
5130                         p_form_type => 'G203M',
5131                         p_man_key   => 'resid',
5132                         p_data_type => 'G02',
5133                         p_item_name => 'sum'
5134                        );
5135       --
5136       if l_cards_tbl.count > 0 then
5137       --
5138         for g02cnt in l_cards_tbl.first..l_cards_tbl.last loop
5139         --
5140           -- accumulate for only person
5141           if l_cards_tbl(g02cnt).key = l_ni_num then
5142           --
5143 		    if l_cards_tbl(g02cnt).use_place_cd = 1 then
5144             l_ass_data_rec.cash_receipt_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.cash_receipt_exp),0)
5145                                                + nvl(to_number(l_cards_tbl(g02cnt).val),0));
5146 		    else
5147             l_ass_data_rec.cash_tm_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.cash_tm_exp),0)
5148                                                + nvl(to_number(l_cards_tbl(g02cnt).val),0));
5149 			end if;
5150           --
5151           else
5152           --
5153             begin
5154             --
5155 			  if l_cards_tbl(g02cnt).use_place_cd = 1 then
5156               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g02cnt).key)).cash_exp_nts;
5157 			  else
5158 			  l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g02cnt).key)).cash_tm_nts;
5159 			  end if;
5160             --
5161             exception
5162             when others then
5163             --
5164               l_dpnt_num := 0;
5165               l_dpnt_ind_tbl(l_dpnt_ind) := l_cards_tbl(g02cnt).key;
5166               l_dpnt_ind := l_dpnt_ind + 1;
5167             --
5168             end;
5169           --
5170 		    if l_cards_tbl(g02cnt).use_place_cd = 1 then
5171             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g02cnt).key)).cash_exp_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_cards_tbl(g02cnt).val),0);
5172 			else
5173 			l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g02cnt).key)).cash_tm_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_cards_tbl(g02cnt).val),0);
5174 			end if;
5175           --
5176           end if;
5177         --
5178         end loop;
5179       --
5180       end if;
5181 	  --
5182       -- Direct Payment For Employee
5183       l_cards_tbl := get_card_values(
5184                         p_form_node => form_node,
5185                         p_form_type => 'G302Y',
5186                         p_man_key   => 'resid',
5187                         p_data_type => 'G03',
5188                         p_item_name => 'sum');
5189       --
5190       if l_cards_tbl.count > 0 then
5191       --
5192         for g03cnt in l_cards_tbl.first..l_cards_tbl.last loop
5193         --
5194           -- accumulate for only person
5195           if l_cards_tbl(g03cnt).key = l_ni_num then
5196           --
5197 		    if l_cards_tbl(g03cnt).use_place_cd = 1 then
5198             l_ass_data_rec.direct_card_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.direct_card_exp),0)
5199                                               + nvl(to_number(l_cards_tbl(g03cnt).val),0));
5200 			else
5201             l_ass_data_rec.direct_tm_exp := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.direct_tm_exp),0)
5202                                               + nvl(to_number(l_cards_tbl(g03cnt).val),0));
5203             end if;
5204           --
5205           else
5206           --
5207             begin
5208             --
5209 			  if l_cards_tbl(g03cnt).use_place_cd = 1 then
5210               l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g03cnt).key)).direct_payment_nts;
5211 			  else
5212 			  l_dpnt_num := l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g03cnt).key)).direct_tm_nts;
5213 			  end if;
5214             --
5215             exception
5216             when others then
5217             --
5218               l_dpnt_num := 0;
5219               l_dpnt_ind_tbl(l_dpnt_ind) := l_cards_tbl(g03cnt).key;
5220               l_dpnt_ind := l_dpnt_ind + 1;
5221             --
5222             end;
5223           --
5224 		    if l_cards_tbl(g03cnt).use_place_cd = 1 then
5225             l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g03cnt).key)).direct_payment_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_cards_tbl(g03cnt).val),0);
5226 			else
5227 			l_dpnt_tbl(get_dpnt_ind(l_dpnt_ind_tbl,l_cards_tbl(g03cnt).key)).direct_tm_nts := nvl(l_dpnt_num,0) + nvl(to_number(l_cards_tbl(g03cnt).val),0);
5228 			end if;
5229           --
5230           end if;
5231         --
5232         end loop;
5233       --
5234       end if;
5235       --
5236       -- --------------------------------------------------
5237       -- Pension, Saving Details
5238       -- --------------------------------------------------
5239       --
5240       -- <<Separation Pension>>
5241       --
5242       -- Priority/Type/Financial Institue, etc./Account Number/Contributed Amount
5243       l_saving_tbl := get_saving_values(
5244                         p_form_node => form_node,
5245                         p_form_type => 'F101Y',
5246                         p_data_type => 'F01',
5247                         p_item_type => 'pension_cd');
5248       --
5249       if l_saving_tbl.count > 0 then
5250       --
5251         for f01cnt in l_saving_tbl.first..l_saving_tbl.last loop
5252         --
5253           l_sep_pen_saving_tbl(l_saving_ind).priority        := fnd_number.number_to_canonical(c_priority_inc * (l_saving_ind + 1));
5254           l_sep_pen_saving_tbl(l_saving_ind).type            := l_saving_tbl(f01cnt).type;
5255           l_sep_pen_saving_tbl(l_saving_ind).financial_inst  := l_saving_tbl(f01cnt).financial_inst;
5256           l_sep_pen_saving_tbl(l_saving_ind).account_num     := l_saving_tbl(f01cnt).account_num;
5257           l_sep_pen_saving_tbl(l_saving_ind).contributed_amt := fnd_number.number_to_canonical(to_number(l_saving_tbl(f01cnt).contributed_amt));
5258           l_saving_ind := l_saving_ind + 1;
5259        --
5260         end loop;
5261       --
5262       end if;
5263       --
5264       if l_sep_pen_saving_tbl.count > 0 then
5265       --
5266         l_ass_data_rec.sep_pen_saving_tbl := l_sep_pen_saving_tbl;
5267       --
5268       end if;
5269       --
5270       -- <<Pension Saving>>
5271       --
5272       -- Priority/Type/Financial Institue, etc./Account Number/Contributed Amount
5273       --
5274       l_saving_tbl := get_saving_values(
5275                         p_form_node => form_node,
5276                         p_form_type => 'D101Y',
5277                         p_data_type => 'D01');
5278       --
5279       if l_saving_tbl.count > 0 then
5280       --
5281         for d01cnt in l_saving_tbl.first..l_saving_tbl.last loop
5282         --
5283           l_pen_saving_tbl(l_pen_saving_ind).priority        := fnd_number.number_to_canonical(c_priority_inc * (l_pen_saving_ind + 1));
5284           l_pen_saving_tbl(l_pen_saving_ind).type            := '1'; /* KR_YEA_PEN_SAVING_TYPES */
5285           l_pen_saving_tbl(l_pen_saving_ind).financial_inst  := l_saving_tbl(d01cnt).financial_inst;
5286           l_pen_saving_tbl(l_pen_saving_ind).account_num     := l_saving_tbl(d01cnt).account_num;
5287           l_pen_saving_tbl(l_pen_saving_ind).contributed_amt := fnd_number.number_to_canonical(to_number(l_saving_tbl(d01cnt).contributed_amt));
5288           l_pen_saving_ind := l_pen_saving_ind + 1;
5289        --
5290         end loop;
5291       --
5292       end if;
5293       --
5294       l_saving_tbl := get_saving_values(
5295                         p_form_node => form_node,
5296                         p_form_type => 'E101Y',
5297                         p_data_type => 'E01');
5298       --
5299       if l_saving_tbl.count > 0 then
5300       --
5301         for e01cnt in l_saving_tbl.first..l_saving_tbl.last loop
5302         --
5303           l_pen_saving_tbl(l_pen_saving_ind).priority        := fnd_number.number_to_canonical(c_priority_inc * (l_pen_saving_ind + 1));
5304           l_pen_saving_tbl(l_pen_saving_ind).type            := '2'; /* KR_YEA_PEN_SAVING_TYPES */
5305           l_pen_saving_tbl(l_pen_saving_ind).financial_inst  := l_saving_tbl(e01cnt).financial_inst;
5306           l_pen_saving_tbl(l_pen_saving_ind).account_num     := l_saving_tbl(e01cnt).account_num;
5307           l_pen_saving_tbl(l_pen_saving_ind).contributed_amt := fnd_number.number_to_canonical(to_number(l_saving_tbl(e01cnt).contributed_amt));
5308           l_pen_saving_ind := l_pen_saving_ind + 1;
5309        --
5310         end loop;
5311       --
5312       end if;
5313       --
5314       if l_pen_saving_tbl.count > 0 then
5315       --
5316         l_ass_data_rec.pen_saving_tbl := l_pen_saving_tbl;
5317       --
5318       end if;
5319       --
5320       -- <<Housing Saving>>
5321       --
5322       -- Housing Saving Details.Priority/Type/Financial Institue, etc./Account Number/Contributed Amount
5323       l_saving_ind := 0;
5324       l_saving_tbl.delete;
5325       --
5326       l_saving_tbl := get_saving_values(
5327                         p_form_node => form_node,
5328                         p_form_type => 'J301Y',
5329                         p_data_type => 'J03',
5330                         p_item_type => 'saving_gubn');
5331       --
5332       if l_saving_tbl.count > 0 then
5333       --
5334         for j03cnt in l_saving_tbl.first..l_saving_tbl.last loop
5335         --
5336           l_hou_saving_tbl(l_saving_ind).priority        := fnd_number.number_to_canonical(c_priority_inc * (l_saving_ind + 1));
5337           l_hou_saving_tbl(l_saving_ind).type            := l_saving_tbl(j03cnt).type;
5338           l_hou_saving_tbl(l_saving_ind).financial_inst  := l_saving_tbl(j03cnt).financial_inst;
5339           l_hou_saving_tbl(l_saving_ind).account_num     := l_saving_tbl(j03cnt).account_num;
5340           l_hou_saving_tbl(l_saving_ind).contributed_amt := fnd_number.number_to_canonical(to_number(l_saving_tbl(j03cnt).contributed_amt));
5341           l_saving_ind := l_saving_ind + 1;
5342        --
5343         end loop;
5344       --
5345       end if;
5346       --
5347       if l_hou_saving_tbl.count > 0 then
5348       --
5349         l_ass_data_rec.hou_saving_tbl := l_hou_saving_tbl;
5350       --
5351       end if;
5352       --
5353       -- <<Long Term Stock Saving>>
5354       --
5355       -- Long Term Stock Saving Details.Priority/Financial Institue, etc./Account Number/Year/Contributed Amount
5356       l_saving_ind := 0;
5357       l_saving_tbl.delete;
5358       --
5359       l_saving_tbl := get_saving_values(
5360                         p_form_node => form_node,
5361                         p_form_type => 'M101Y',
5362                         p_data_type => 'M01',
5363                         p_lts_type  => 'Y');
5364       --
5365       if l_saving_tbl.count > 0 then
5366       --
5367         for m01cnt in l_saving_tbl.first..l_saving_tbl.last loop
5368         --
5369           if l_saving_tbl(m01cnt).cont_amt_y2 > 0 then
5370           --
5371             l_lts_saving_tbl(l_saving_ind).priority        := fnd_number.number_to_canonical(c_priority_inc * (l_saving_ind + 1));
5372             l_lts_saving_tbl(l_saving_ind).financial_inst  := l_saving_tbl(m01cnt).financial_inst;
5373             l_lts_saving_tbl(l_saving_ind).account_num     := l_saving_tbl(m01cnt).account_num;
5374             l_lts_saving_tbl(l_saving_ind).type            := '2'; /* KR_YEA_LT_STOCK_SAVING_YEAR */
5375             l_lts_saving_tbl(l_saving_ind).contributed_amt := fnd_number.number_to_canonical(to_number(l_saving_tbl(m01cnt).cont_amt_y2));
5376             l_saving_ind := l_saving_ind + 1;
5377           --
5378           end if;
5379         --
5380           if l_saving_tbl(m01cnt).cont_amt_y3 > 0 then
5381           --
5382             l_lts_saving_tbl(l_saving_ind).priority        := fnd_number.number_to_canonical(c_priority_inc * (l_saving_ind + 1));
5383             l_lts_saving_tbl(l_saving_ind).financial_inst  := l_saving_tbl(m01cnt).financial_inst;
5384             l_lts_saving_tbl(l_saving_ind).account_num     := l_saving_tbl(m01cnt).account_num;
5385             l_lts_saving_tbl(l_saving_ind).type            := '3'; /* KR_YEA_LT_STOCK_SAVING_YEAR */
5386             l_lts_saving_tbl(l_saving_ind).contributed_amt := fnd_number.number_to_canonical(to_number(l_saving_tbl(m01cnt).cont_amt_y3));
5387             l_saving_ind := l_saving_ind + 1;
5388           --
5389           end if;
5390         --
5391         end loop;
5392       --
5393       end if;
5394       --
5395       if l_lts_saving_tbl.count > 0 then
5396       --
5397         l_ass_data_rec.lts_saving_tbl := l_lts_saving_tbl;
5398       --
5399       end if;
5400       --
5401       -- --------------------------------------------------
5402       -- Employee Expense
5403       -- --------------------------------------------------
5404       --
5405       -- <<Insurance>>
5406       --
5407       -- NTS
5408       l_ass_data_rec.ins_exp_nts := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.pers_ins_prem),0)
5409                                                                    + nvl(fnd_number.canonical_to_number(l_ass_data_rec.disabled_ins_prem),0));
5410       --
5411       if l_ass_data_rec.ins_exp_nts = 0 then
5412       --
5413         l_ass_data_rec.ins_exp_nts := null;
5414       --
5415       end if;
5416       --
5417       -- <<Medical>>
5418       --
5419       -- NTS
5420       if l_med_exp_nts <> 0 then
5421       --
5422         l_ass_data_rec.med_exp_nts := fnd_number.number_to_canonical(l_med_exp_nts);
5423       --
5424       end if;
5425       --
5426       -- <<Education>>
5427       --
5428       -- NTS
5429       l_ass_data_rec.educ_exp_nts := fnd_number.number_to_canonical(nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_educ_exp),0)
5430 																	+ nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_uniform_exp),0)
5431                                                                    + nvl(fnd_number.canonical_to_number(l_ass_data_rec.ee_occupation_educ_exp),0));
5432       --
5433       if l_ass_data_rec.educ_exp_nts = 0 then
5434       --
5435         l_ass_data_rec.educ_exp_nts := null;
5436       --
5437       end if;
5438       --
5439       -- <<Cards>>
5440       --
5441       -- NTS
5442       l_ass_data_rec.card_exp_nts := l_ass_data_rec.credit_card_exp;
5443 	  l_ass_data_rec.card_tm_nts := l_ass_data_rec.credit_tm_exp;
5444       --
5445       -- <<Direct Payment>>
5446       --
5447       -- NTS
5448       l_ass_data_rec.direct_payment_nts := l_ass_data_rec.direct_card_exp;
5449 	  l_ass_data_rec.direct_tm_nts := l_ass_data_rec.direct_tm_exp;
5450       --
5451       -- <<Donation>>
5452       --
5453       -- NTS
5454       if l_don_exp_nts <> 0 then
5455       --
5456         l_ass_data_rec.don_exp_nts := fnd_number.number_to_canonical(l_don_exp_nts);
5457       --
5458       end if;
5459       --
5460       -- --------------------------------------------------
5461       -- Dependent Information
5462       -- --------------------------------------------------
5463       --
5464       -- <<Dependent Exemption Details>>
5465       --
5466       -- Personal Insurance (NTS)
5467       -- Disabled Insurance (NTS)
5468       -- Medical (NTS)
5469       -- Education (NTS)
5470       -- Cards (NTS)
5471       -- Direct Payment (NTS)
5472       -- Cash (NTS)
5473       -- Donation (NTS)
5474       --
5475       if l_dpnt_tbl.count > 0 then
5476       --
5477         l_ass_data_rec.dpnt_ind_tbl := l_dpnt_ind_tbl;
5478         l_ass_data_rec.dpnt_tbl := l_dpnt_tbl;
5479       --
5480       end if;
5481     --
5482     end loop;
5483   --
5484   end if;
5485 --
5486 -- *************************************
5487 -- validate data and upload to kr temp
5488 -- *************************************
5489 --
5490   if g_upload then
5491   --
5492     -- include following behavior, some are skipped because of feasible case for nts data
5493     -- ------------------------------------------------------
5494     -- YeaCO.java processRequest create following rows
5495     -- ------------------------------------------------------
5496     -- KR_YEA_SP_TAX_EXEM_INFO    : target_year, effective_date eoy, AYI_INFORMATION31 N
5497     -- KR_YEA_SP_TAX_EXEM_INFO2   : target_year, effective_date eoy
5498     -- KR_YEA_TAX_EXEM_INFO       : target_year, effective_date eoy
5499     -- KR_YEA_OVS_TAX_BREAK_INFO  : target_year
5500     -- KR_YEA_EMP_EXPENSE_DETAILS : target_year, effective_date eoy
5501     --
5502     -- ------------------------------------------------------
5503     -- YeaCO.java handleSaveForLater validation
5504     -- ------------------------------------------------------
5505     -- calculation
5506     -- 1. medical detail                 : syncTotalMedical calc total (self: emp (nts), A: disabled, B: aged, dependent, card, medical expence)
5507     --    KR_YEA_DETAIL_MEDICAL_EXP_INFO
5508     -- 2. donation detail                : syncTotalDonation calc total (10: statutory, 20: political, 21: promptional,
5509     --    KR_YEA_DETAIL_DONATION_INFO                                    30: special, 31: publiclegal, 40: specified,
5510     --                                                                   41: religious, 42: esoa, 50: other, donated)
5511     -- 3. separation pension detail      : syncTotalSepPension calc total (1: emplyment, 2: scientific, pension)
5512     --    KR_YEA_SEP_PEN_DETAILS
5513     -- 4. long term stock saving detail  : syncTotalLTStockSaving calc total (1: year 1, 2: year 2, 3: year 3, contributed)
5514     --    KR_YEA_LT_STOCK_SAVING_DETAILS
5515     -- 5. pension saving detail          : syncTotalPenSaving calc total (1: pension prem, 2: pension saving, contributed)
5516     --    KR_YEA_PEN_SAVING_DETAILS
5517     --
5518     -- error
5519     -- 1. validate medical detail        : PAY_KR_YEA_AGD_DSBLD_DPNT_MSG     incompatible aged disabled flag
5520     --    validateDetailMedical
5521     --    KR_YEA_DETAIL_MEDICAL_EXP_INFO : PAY_KR_YEA_MED_PROVIDER_MSG       same provider name
5522     -- 2. validate donation detail       : PAY_KR_YEA_INV_DON_NAME_MSG       same recipient name
5523     --    validateDetailDonation
5524     --    KR_YEA_DETAIL_DONATION_INFO
5525     -- 3. validate donation type         : PAY_KR_TAX_PERIOD_UNIQUE_ERROR(?) unique donation type in target year
5526     --    validateDetailDon
5527     --    KR_YEA_DONATION_TYPE_DETAIL
5528     -- 4. validate non taxable           : PAY_KR_NTAX_EARN_UNIQUE_ERROR     unique taxation period in target year
5529     --    validateNonTaxableDetail
5530     --    KR_YEA_NON_TAXABLE_EARN_DETAIL
5531     -- 5. validate long term             : PAY_KR_INV_PRIORITY               unique priority
5532     --    stock savings                  : PAY_KR_INV_ACCOUNT_NUMBER         unique combination of account number and type
5533     --    validateLTStockSaving
5534     --    KR_YEA_LT_STOCK_SAVING_DETAILS
5535     -- 6. validate housing saving        : PAY_KR_INV_PRIORITY               unique priority
5536     --    validateHousingSaving          : PAY_KR_INV_ACCOUNT_NUMBER         unique combination of account number and type
5537     --    KR_YEA_HOU_SAVING_DETAILS
5538     -- 7. validate pension saving        : PAY_KR_INV_PRIORITY               unique priority
5539     --    validatePensionSaving          : PAY_KR_INV_ACCOUNT_NUMBER         unique combination of account number and type
5540     --    KR_YEA_PEN_SAVING_DETAILS
5541     -- 8. validate separation            : PAY_KR_INV_PRIORITY               unique priority
5542     --    pension                        : PAY_KR_INV_ACCOUNT_NUMBER         unique combination of account number and type
5543     --    validateSepPension
5544     --    KR_YEA_SEP_PEN_DETAILS
5545     --
5546     -- warning
5547     -- 1. KR_YEA_SP_TAX_EXEM_INFO2 card warning : PAY_KR_MED_CARD_EXCEEDS_TOTAL card > total
5548     --    KR_YEA_SP_TAX_EXEM_INFO  total
5549     --    isCardAmountMoreThanTotal
5550     -- 2. KR_YEA_DETAIL_MEDICAL_EXP_INFO pay_kr_yea_sshr_utils_pkg.validate_bus_reg_num
5551     --    : PAY_KR_INV_BUS_REG_NUM invalid provider business reg num
5552     --    medProviderRegNumValidate
5553     -- 3. KR_YEA_DETAIL_DONATION_INFO pay_kr_yea_sshr_utils_pkg.validate_bus_reg_num
5554     --    : PAY_KR_INV_BUS_REG_NUM invalid receipt business reg num
5555     --    donRecipientRegNumValidate
5556     --
5557     -- 1. I PAY_KR_TOT_INS_LESS_THAN_NTS
5558     --      KR_YEA_EMP_EXPENSE_DETAILS : target_year, effective_date eoy
5559     --      hi, lctc, ei, personalprem, disabledprem, hieebal, ltcieebal, eibal, insexpnts,
5560     --      KR_YEA_PREV_ER_INFO : hi, ltci, ei
5561     --      ins exp nts > total
5562     -- 2. M PAY_KR_TOT_MED_LESS_THAN_NTS
5563     --      KR_YEA_EMP_EXPENSE_DETAILS (KR_YEA_SP_TAX_EXEM_INFO)
5564     --      med exp nts > med exp total
5565     -- 3. E PAY_KR_TOT_EDUC_LESS_THAN_NTS
5566     --      KR_YEA_EMP_EXPENSE_DETAILS nts deuc exp
5567     --      KR_YEA_SP_TAX_EXEM_INFO  educ exp
5568     --      KR_YEA_SP_TAX_EXEM_INFO2 occupational educ
5569     --      nts educ exp > (educ exp + occupational educ)
5570     -- 4. C PAY_KR_TOT_CARD_LESS_THAN_NTS
5571     --      KR_YEA_EMP_EXPENSE_DETAILS : card nts
5572     --      KR_YEA_TAX_EXEM_INFO : card, directpay, tuition giro
5573     --      nts card > (card + tuition giro)
5574     -- 5. D PAY_KR_TOT_DON_LESS_THAN_NTS
5575     --      pay_kr_yea_form_pkg.get_donation_tax_break political don tax break
5576     --      KR_YEA_EMP_EXPENSE_DETAILS nts don
5577     --      KR_YEA_SP_TAX_EXEM_INFO political don, statutory don, political2 don, tax red law don, specified don, esoa don, public legal don, other don exp
5578     --      KR_YEA_SP_TAX_EXEM_INFO2 promotional fund don, religious don, other don
5579     --      nts don > don total (plicitacal don - tax break + statutory + political2 + promotional + tax red + public + specified + religious + esoa + other)
5580     -- 6. P PAY_KR_TOT_DIR_LESS_THAN_NTS
5581     --      KR_YEA_EMP_EXPENSE_DETAILS : directpay nts
5582     --      KR_YEA_TAX_EXEM_INFO : directpay
5583     --      nts directpay > directpay
5584     --
5585     -- ------------------------------------------------------
5586     -- YeaCO.java handleSubmit validation
5587     -- ------------------------------------------------------
5588     -- calculation, error, expence warning, update entry, same behavior as save for later so skip
5589   --
5590     -- B01
5591     l_ass_med_tbl := l_ass_data_rec.med_tbl;
5592     --
5593     if l_ass_med_tbl.count > 0 then
5594     --
5595       delete_kr_ass_yea_info(
5596         p_assignment_id    => p_assignment_id,
5597         p_target_year      => g_target_yyyy,
5598         p_information13    => '1',
5599         p_information_type => 'KR_YEA_DETAIL_MEDICAL_EXP_INFO');
5600     --
5601       open csr_med_max_priority;
5602       fetch csr_med_max_priority into l_max_priority;
5603       close csr_med_max_priority;
5604     --
5605       for i in l_ass_med_tbl.first..l_ass_med_tbl.last loop
5606       --
5607         insert_kr_ass_yea_info(
5608           p_assignment_id          => p_assignment_id,
5609           p_target_year            => g_target_yyyy,
5610           p_information_type       => 'KR_YEA_DETAIL_MEDICAL_EXP_INFO',
5611           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
5612           p_information3           => l_ass_med_tbl(i).paid_amount,
5613           p_information7           => get_relship(p_assignment_id,'KR_YEA_DETAIL_MEDICAL_EXP_INFO',l_ass_med_tbl(i).resident_registration_no),
5614           p_information8           => cnv_reg(l_ass_med_tbl(i).resident_registration_no),
5615           p_information9           => l_ass_med_tbl(i).disabled_or_aged,
5616           p_information10          => fnd_number.number_to_canonical(l_max_priority + c_priority_inc * (i + 1)),
5617           p_information13          => l_ass_med_tbl(i).source_code,
5618           p_assignment_yea_info_id => l_assignment_yea_info_id);
5619       --
5620       end loop;
5621     --
5622     end if;
5623   --
5624     -- L01
5625     l_ass_don_tbl := l_ass_data_rec.don_tbl;
5626     --
5627     p_stat_self  := 0;
5628 p_stat_spouse := 0;
5629 p_stat_child := 0;
5630 p_pol_self  := 0;
5631 p_tax_self  := 0;
5632 p_tax_spouse := 0;
5633 p_tax_child   := 0;
5634 p_pledt_self   := 0;
5635 p_pledt_spouse  := 0;
5636 p_pledt_child   := 0;
5637 p_esoa_self  	 := 0;
5638 p_spec_self  	 := 0;
5639 p_spec_spouse   := 0;
5640 p_spec_child    := 0;
5641 p_rel_self       := 0;
5642 p_rel_spouse    := 0;
5643 p_rel_child  	  := 0;
5644 p_oth_self  	  := 0;
5645 p_oth_spouse  	  := 0;
5646 p_oth_child  	  := 0;
5647 p_stat_parent  	  := 0;
5648 p_stat_bro_sis	  := 0;
5649 p_tax_parent  	  := 0;
5650 p_tax_bro_sis 	 := 0;
5651 p_pledt_parent 	 := 0;
5652 p_pledt_bro_sis	 := 0;
5653 p_spec_parent  	 := 0;
5654 p_spec_bro_sis 	 := 0;
5655 p_rel_parent  	 := 0;
5656 p_rel_bro_sis  	 := 0;
5657 p_oth_parent  	 := 0;
5658 p_oth_bro_sis    := 0;
5659 p_political	:= 0;
5660 p_statutory 	:= 0;
5661 p_esoa		:= 0;
5662 p_pledt		:= 0;
5663 p_religious	:= 0;
5664 p_specified	:= 0;
5665 p_tax_law	:= 0;
5666 
5667 
5668     if l_ass_don_tbl.count > 0 then
5669     --
5670       delete_kr_ass_yea_info(
5671         p_assignment_id    => p_assignment_id,
5672         p_target_year      => g_target_yyyy,
5673         p_information15    => '1',
5674         p_information_type => 'KR_YEA_DETAIL_DONATION_INFO');
5675     --
5676       for i in l_ass_don_tbl.first..l_ass_don_tbl.last loop
5677       --
5678         validate_kr_ass_yea_info(
5679           p_assignment_id          => p_assignment_id,
5680           p_target_year            => g_target_yyyy,
5681           p_information_type       => 'KR_YEA_DETAIL_DONATION_INFO',
5682           p_information2           => l_ass_don_tbl(i).donated_date,
5683           p_information7           => cnv_reg(l_ass_don_tbl(i).recipient_registration_number),
5684           p_information8           => l_ass_don_tbl(i).recipient_name,
5685           p_information13          => cnv_reg(l_ass_don_tbl(i).ni_num)	);
5686       --
5687         insert_kr_ass_yea_info(
5688           p_assignment_id          => p_assignment_id,
5689           p_target_year            => g_target_yyyy,
5690           p_information_type       => 'KR_YEA_DETAIL_DONATION_INFO',
5691           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
5692           p_information2           => l_ass_don_tbl(i).donated_date,
5693           p_information3           => l_ass_don_tbl(i).donated_amount,
5694           p_information5           => l_ass_don_tbl(i).donation_code,
5695           p_information7           => cnv_reg(l_ass_don_tbl(i).recipient_registration_number),
5696           p_information8           => l_ass_don_tbl(i).recipient_name,
5697           p_information12          => get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num),
5698           p_information13          => cnv_reg(l_ass_don_tbl(i).ni_num),
5699           p_information14          => l_ass_don_tbl(i).donator_name,
5700           p_information15          => l_ass_don_tbl(i).donation_detail_type,
5701           p_assignment_yea_info_id => l_assignment_yea_info_id);
5702       --
5703 
5704       if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) <> '1' then
5705           p_total_don_dpnts := p_total_don_dpnts +  l_ass_don_tbl(i).donated_amount;
5706       end if;
5707 
5708       if  l_ass_don_tbl(i).donation_code = '10' then
5709 
5710        p_statutory  := p_statutory +  l_ass_don_tbl(i).donated_amount;
5711 
5712     if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5713         p_stat_self := p_stat_self + l_ass_don_tbl(i).donated_amount;
5714 
5715     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '2' then
5716 
5717         p_stat_spouse := p_stat_spouse + l_ass_don_tbl(i).donated_amount;
5718 
5719     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '3' then
5720 
5721         p_stat_child := p_stat_child + l_ass_don_tbl(i).donated_amount;
5722 
5723     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '4' then
5724 
5725         p_stat_parent := p_stat_parent + l_ass_don_tbl(i).donated_amount;
5726 
5727       elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '5' then
5728 
5729          p_stat_bro_sis := p_stat_bro_sis +  l_ass_don_tbl(i).donated_amount;
5730 
5731     end if;
5732 
5733 
5734   elsif  l_ass_don_tbl(i).donation_code = '20' then
5735 
5736        p_political := p_political + l_ass_don_tbl(i).donated_amount;
5737 
5738     if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5739 
5740         p_pol_self := p_pol_self + l_ass_don_tbl(i).donated_amount;
5741     end if;
5742 
5743    elsif  l_ass_don_tbl(i).donation_code = '30' then
5744 
5745       p_tax_law := p_tax_law + l_ass_don_tbl(i).donated_amount;
5746 
5747        if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5748 
5749         p_tax_self := p_tax_self + l_ass_don_tbl(i).donated_amount;
5750 
5751     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '2' then
5752 
5753         p_tax_spouse := p_tax_spouse + l_ass_don_tbl(i).donated_amount;
5754 
5755     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '3' then
5756 
5757         p_tax_child := p_tax_child + l_ass_don_tbl(i).donated_amount;
5758 
5759     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '4' then
5760 
5761         p_tax_parent := p_tax_parent + l_ass_don_tbl(i).donated_amount;
5762 
5763       elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '5' then
5764 
5765          p_tax_bro_sis := p_tax_bro_sis +  l_ass_don_tbl(i).donated_amount;
5766 
5767     end if;
5768 
5769 
5770    elsif  l_ass_don_tbl(i).donation_code = '31' then
5771 
5772       p_pledt := p_pledt + l_ass_don_tbl(i).donated_amount;
5773 
5774        if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5775 
5776         p_pledt_self := p_pledt_self + l_ass_don_tbl(i).donated_amount;
5777 
5778     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '2' then
5779 
5780         p_pledt_spouse := p_pledt_spouse + l_ass_don_tbl(i).donated_amount;
5781 
5782     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '3' then
5783 
5784         p_pledt_child := p_pledt_child + l_ass_don_tbl(i).donated_amount;
5785 
5786     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '4' then
5787 
5788         p_pledt_parent := p_pledt_parent + l_ass_don_tbl(i).donated_amount;
5789 
5790       elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '5' then
5791 
5792          p_pledt_bro_sis := p_pledt_bro_sis +  l_ass_don_tbl(i).donated_amount;
5793 
5794     end if;
5795 
5796    elsif  l_ass_don_tbl(i).donation_code = '40' then
5797 
5798       p_specified := p_specified + l_ass_don_tbl(i).donated_amount;
5799 
5800        if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5801 
5802         p_spec_self := p_spec_self + l_ass_don_tbl(i).donated_amount;
5803 
5804     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '2' then
5805 
5806         p_spec_spouse := p_spec_spouse + l_ass_don_tbl(i).donated_amount;
5807 
5808     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '3' then
5809 
5810         p_spec_child := p_spec_child + l_ass_don_tbl(i).donated_amount;
5811 
5812     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '4' then
5813 
5814         p_spec_parent := p_spec_parent + l_ass_don_tbl(i).donated_amount;
5815 
5816       elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '5' then
5817 
5818          p_spec_bro_sis := p_spec_bro_sis +  l_ass_don_tbl(i).donated_amount;
5819 
5820     end if;
5821 
5822    elsif  l_ass_don_tbl(i).donation_code = '41' then
5823 
5824 
5825      p_religious := p_religious + l_ass_don_tbl(i).donated_amount;
5826 
5827        if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5828 
5829         p_rel_self := p_rel_self + l_ass_don_tbl(i).donated_amount;
5830 
5831     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '2' then
5832 
5833         p_rel_spouse := p_rel_spouse + l_ass_don_tbl(i).donated_amount;
5834 
5835     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '3' then
5836 
5837         p_rel_child := p_rel_child + l_ass_don_tbl(i).donated_amount;
5838 
5839     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '4' then
5840 
5841         p_rel_parent := p_rel_parent + l_ass_don_tbl(i).donated_amount;
5842 
5843       elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '5' then
5844 
5845          p_rel_bro_sis := p_rel_bro_sis +  l_ass_don_tbl(i).donated_amount;
5846 
5847      end if;
5848 
5849    elsif  l_ass_don_tbl(i).donation_code = '42' then
5850 
5851        p_esoa := p_esoa + l_ass_don_tbl(i).donated_amount;
5852 
5853        if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5854 
5855         p_esoa_self := p_esoa_self + l_ass_don_tbl(i).donated_amount;
5856 
5857     end if;
5858 
5859    elsif  l_ass_don_tbl(i).donation_code = '50' then
5860 
5861 
5862 
5863        if get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '1' then
5864 
5865         p_oth_self := p_oth_self + l_ass_don_tbl(i).donated_amount;
5866 
5867     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '2' then
5868 
5869         p_oth_spouse := p_oth_spouse + l_ass_don_tbl(i).donated_amount;
5870 
5871     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '3' then
5872 
5873         p_oth_child := p_oth_child + l_ass_don_tbl(i).donated_amount;
5874 
5875     elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '4' then
5876 
5877         p_oth_parent := p_oth_parent + l_ass_don_tbl(i).donated_amount;
5878 
5879       elsif get_relship(p_assignment_id,'KR_YEA_DETAIL_DONATION_INFO',l_ass_don_tbl(i).ni_num) = '5' then
5880 
5881          p_oth_bro_sis := p_oth_bro_sis +  l_ass_don_tbl(i).donated_amount;
5882 
5883   end if;
5884 
5885 end if;
5886 
5887       end loop;
5888     --
5889     end if;
5890 
5891     pay_kr_yea_sshr_utils_pkg.update_don_tot_data(
5892 						p_assignment_id	 =>     p_assignment_id,
5893 						p_target_year  	=>	g_target_yyyy ,
5894 						p_stat_self  	=>	p_stat_self  ,
5895 						p_stat_spouse 	=>	p_stat_spouse ,
5896 						p_stat_child  	=>	p_stat_child  ,
5897 						p_pol_self  	=>	p_pol_self  ,
5898 						p_tax_self  	=>	p_tax_self  ,
5899 						p_tax_spouse  	=>	p_tax_spouse  ,
5900 						p_tax_child  	=>	p_tax_child ,
5901 						p_pledt_self  	=>	p_pledt_self  ,
5902 						p_pledt_spouse	=>	p_pledt_spouse,
5903 						p_pledt_child 	=>	p_pledt_child ,
5904 						p_esoa_self  	=>	p_esoa_self ,
5905 						p_spec_self  	=>	p_spec_self ,
5906 						p_spec_spouse 	=>	p_spec_spouse ,
5907 						p_spec_child  	=>	p_spec_child  ,
5908 						p_rel_self  	=>	p_rel_self  ,
5909 						p_rel_spouse  	=>	p_rel_spouse  ,
5910 						p_rel_child  	=>	p_rel_child ,
5911 						p_oth_self  	=>	p_oth_self  ,
5912 						p_oth_spouse  	=>	p_oth_spouse  ,
5913 						p_oth_child  	=>	p_oth_child ,
5914 						p_stat_parent 	=>	p_stat_parent ,
5915 						p_stat_bro_sis	=>	p_stat_bro_sis,
5916 						p_tax_parent  	=>	p_tax_parent  ,
5917 						p_tax_bro_sis 	=>	p_tax_bro_sis ,
5918 						p_pledt_parent 	=>	p_pledt_parent ,
5919 						p_pledt_bro_sis	=>	p_pledt_bro_sis	,
5920 						p_spec_parent  	=>	p_spec_parent  	,
5921 						p_spec_bro_sis 	=>	p_spec_bro_sis 	,
5922 						p_rel_parent  	=>	p_rel_parent  	,
5923 						p_rel_bro_sis	=>	p_rel_bro_sis,
5924 						p_oth_parent  	=>	p_oth_parent ,
5925 						p_oth_bro_sis	=>	p_oth_bro_sis	);
5926 
5927 
5928 pay_kr_yea_sshr_utils_pkg.sync_don_type_data (p_assignment_id => p_assignment_id ,
5929 			p_target_year	=> g_target_yyyy,
5930 			p_political	=> p_political	,
5931 			p_statutory 	=> p_statutory 	,
5932 			p_esoa	=> p_esoa,
5933 			p_pledt	=> p_pledt	,
5934 			p_religious	=> p_religious	,
5935 			p_specified	=> p_specified	,
5936 			p_tax_law	=> p_tax_law) ;
5937   --
5938   --
5939     -- C01/C03/C04
5940     l_ass_educ_tbl := l_ass_data_rec.educ_tbl;
5941 	-- C06
5942 	l_ass_uniform_tbl := l_ass_data_rec.uniform_tbl;
5943     --
5944     if l_ass_educ_tbl.count > 0 then
5945     --
5946       delete_kr_ass_yea_info(
5947         p_assignment_id    => p_assignment_id,
5948         p_target_year      => g_target_yyyy,
5949         p_information6     => '1',
5950         p_information_type => 'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO');
5951     --
5952       for i in l_ass_educ_tbl.first..l_ass_educ_tbl.last loop
5953       --
5954         insert_kr_ass_yea_info(
5955           p_assignment_id          => p_assignment_id,
5956           p_target_year            => g_target_yyyy,
5957           p_information_type       => 'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO',
5958           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
5959           p_information2           => get_relship(p_assignment_id,'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO',l_ass_educ_tbl(i).ni_num),
5960           p_information3           => l_ass_educ_tbl(i).school_type,
5961           p_information4           => l_ass_educ_tbl(i).exp,
5962           p_information5           => cnv_reg(l_ass_educ_tbl(i).ni_num),
5963           p_information6           => l_ass_educ_tbl(i).nts_other,
5964           p_information7           => l_ass_educ_tbl(i).dpnt_name,
5965           p_assignment_yea_info_id => l_assignment_yea_info_id);
5966       --
5967       end loop;
5968     --
5969     end if;
5970   --
5971    -- Uniform Expense
5972   if l_ass_uniform_tbl.count > 0 then
5973     --
5974      if l_ass_educ_tbl.count = 0 then
5975       delete_kr_ass_yea_info(
5976         p_assignment_id    => p_assignment_id,
5977         p_target_year      => g_target_yyyy,
5978         p_information6     => '1',
5979         p_information_type => 'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO');
5980 	 end if;
5981     --
5982       for i in l_ass_uniform_tbl.first..l_ass_uniform_tbl.last loop
5983       --
5984         insert_kr_ass_yea_info(
5985           p_assignment_id          => p_assignment_id,
5986           p_target_year            => g_target_yyyy,
5987           p_information_type       => 'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO',
5988           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
5989           p_information2           => get_relship(p_assignment_id,'KR_YEA_DPNT_EDUC_TAX_EXEM_INFO',l_ass_uniform_tbl(i).key),
5990           p_information3           => 'H',
5991           p_information4           => l_ass_uniform_tbl(i).val,
5992           p_information5           => cnv_reg(l_ass_uniform_tbl(i).key),
5993           p_information6           => '1',
5994           p_information7           => l_ass_uniform_tbl(i).empname,
5995           p_assignment_yea_info_id => l_assignment_yea_info_id);
5996       --
5997       end loop;
5998     --
5999     end if;
6000     -- F01
6001     l_ass_saving_tbl := l_ass_data_rec.sep_pen_saving_tbl;
6002     --
6003     if l_ass_saving_tbl.count > 0 then
6004     --
6005       delete_kr_ass_yea_info(
6006         p_assignment_id    => p_assignment_id,
6007         p_target_year      => g_target_yyyy,
6008         p_information_type => 'KR_YEA_SEP_PEN_DETAILS');
6009     --
6010       for i in l_ass_saving_tbl.first..l_ass_saving_tbl.last loop
6011       --
6012         insert_kr_ass_yea_info(
6013           p_assignment_id          => p_assignment_id,
6014           p_target_year            => g_target_yyyy,
6015           p_information_type       => 'KR_YEA_SEP_PEN_DETAILS',
6016           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6017           p_information2           => get_type('KR_YEA_SEP_PEN_DETAILS',l_ass_saving_tbl(i).type),
6018           p_information3           => '110', --get_fin(l_ass_saving_tbl(i).financial_inst),
6019           p_information4           => l_ass_saving_tbl(i).account_num,
6020           p_information5           => l_ass_saving_tbl(i).contributed_amt,
6021           p_information6           => l_ass_saving_tbl(i).priority,
6022           p_assignment_yea_info_id => l_assignment_yea_info_id);
6023       --
6024       end loop;
6025     --
6026     end if;
6027   --
6028     -- D01/E01
6029     l_ass_saving_tbl := l_ass_data_rec.pen_saving_tbl;
6030     --
6031     if l_ass_saving_tbl.count > 0 then
6032     --
6033       delete_kr_ass_yea_info(
6034         p_assignment_id    => p_assignment_id,
6035         p_target_year      => g_target_yyyy,
6036         p_information_type => 'KR_YEA_PEN_SAVING_DETAILS');
6037     --
6038       for i in l_ass_saving_tbl.first..l_ass_saving_tbl.last loop
6039       --
6040         insert_kr_ass_yea_info(
6041           p_assignment_id          => p_assignment_id,
6042           p_target_year            => g_target_yyyy,
6043           p_information_type       => 'KR_YEA_PEN_SAVING_DETAILS',
6044           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6045           p_information2           => l_ass_saving_tbl(i).type,
6046           p_information3           => '110', --get_fin(l_ass_saving_tbl(i).financial_inst),
6047           p_information4           => l_ass_saving_tbl(i).account_num,
6048           p_information5           => l_ass_saving_tbl(i).contributed_amt,
6049           p_information6           => l_ass_saving_tbl(i).priority,
6050           p_assignment_yea_info_id => l_assignment_yea_info_id);
6051       --
6052       end loop;
6053     --
6054     end if;
6055   --
6056     -- M01
6057     l_ass_saving_tbl := l_ass_data_rec.lts_saving_tbl;
6058     --
6059     if l_ass_saving_tbl.count > 0 then
6060     --
6061       delete_kr_ass_yea_info(
6062         p_assignment_id    => p_assignment_id,
6063         p_target_year      => g_target_yyyy,
6064         p_information_type => 'KR_YEA_LT_STOCK_SAVING_DETAILS');
6065     --
6066       for i in l_ass_saving_tbl.first..l_ass_saving_tbl.last loop
6067       --
6068         insert_kr_ass_yea_info(
6069           p_assignment_id          => p_assignment_id,
6070           p_target_year            => g_target_yyyy,
6071           p_information_type       => 'KR_YEA_LT_STOCK_SAVING_DETAILS',
6072           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6073           p_information2           => l_ass_saving_tbl(i).type,
6074           p_information3           => '110', --get_fin(l_ass_saving_tbl(i).financial_inst),
6075           p_information4           => l_ass_saving_tbl(i).account_num,
6076           p_information5           => l_ass_saving_tbl(i).contributed_amt,
6077           p_information6           => l_ass_saving_tbl(i).priority,
6078           p_assignment_yea_info_id => l_assignment_yea_info_id);
6079       --
6080       end loop;
6081     --
6082     end if;
6083   --
6084     -- J03
6085     l_ass_saving_tbl := l_ass_data_rec.hou_saving_tbl;
6086     --
6087     if l_ass_saving_tbl.count > 0 then
6088     --
6089       delete_kr_ass_yea_info(
6090         p_assignment_id    => p_assignment_id,
6091         p_target_year      => g_target_yyyy,
6092         p_information_type => 'KR_YEA_HOU_SAVING_DETAILS');
6093     --
6094       for i in l_ass_saving_tbl.first..l_ass_saving_tbl.last loop
6095       --
6096         validate_kr_ass_yea_info(
6097           p_assignment_id          => p_assignment_id,
6098           p_target_year            => g_target_yyyy,
6099           p_information_type       => 'KR_YEA_HOU_SAVING_DETAILS',
6100           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6101           p_information2           => get_type('KR_YEA_HOU_SAVING_DETAILS',l_ass_saving_tbl(i).type),
6102           p_information5           => l_ass_saving_tbl(i).contributed_amt);
6103       --
6104         insert_kr_ass_yea_info(
6105           p_assignment_id          => p_assignment_id,
6106           p_target_year            => g_target_yyyy,
6107           p_information_type       => 'KR_YEA_HOU_SAVING_DETAILS',
6108           p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6109           p_information2           => get_type('KR_YEA_HOU_SAVING_DETAILS',l_ass_saving_tbl(i).type),
6110           p_information3           => '110', --get_fin(l_ass_saving_tbl(i).financial_inst),
6111           p_information4           => l_ass_saving_tbl(i).account_num,
6112           p_information5           => l_ass_saving_tbl(i).contributed_amt,
6113           p_information6           => l_ass_saving_tbl(i).priority,
6114           p_assignment_yea_info_id => l_assignment_yea_info_id);
6115       --
6116       end loop;
6117     --
6118     end if;
6119   --
6120     -- syncTotalMedical, no need to recalc total for other data except for NTS, just inherit
6121     open csr_med_total_o;
6122     fetch csr_med_total_o into l_csr_med_total_o;
6123     close csr_med_total_o;
6124   --
6125     -- syncTotalDonation
6126     open csr_don_total;
6127     fetch csr_don_total into l_csr_don_total;
6128     close csr_don_total;
6129   --
6130     -- A01/A02/J01/J02/B01/L01/C01/C03/C04/C06
6131 	-- C06 Uniform Expense will be accumlated with C01/C03/C04
6132     load_kr_ass_yea_info(
6133       p_assignment_id          => p_assignment_id,
6134       p_target_year            => g_target_yyyy,
6135       p_information_type       => 'KR_YEA_SP_TAX_EXEM_INFO',
6136       p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6137       p_information5           => l_ass_data_rec.pers_ins_prem,
6138       p_information6           => l_ass_data_rec.disabled_ins_prem,
6139       p_information7           => l_ass_data_rec.med_exp + nvl(l_csr_med_total_o.dep,0),
6140       p_information9           => l_ass_data_rec.med_exp_aged + nvl(l_csr_med_total_o.aged,0),
6141       p_information10          => l_ass_data_rec.ee_educ_exp + nvl(l_ass_data_rec.ee_uniform_exp,0),
6142       p_information15          => l_ass_data_rec.housing_loan_repay,
6143       p_information16          => l_ass_data_rec.housing_loan_date,
6144       p_information17          => l_ass_data_rec.lt_housing_loan_interest_rep,
6145       p_information18          => l_csr_don_total.statutory,
6146       p_information19          => l_ass_data_rec.political_donation1,
6147       p_information20          => l_csr_don_total.political,
6148       p_information22          => l_csr_don_total.specified,
6149       p_information23          => l_csr_don_total.special,
6150       p_information24          => l_ass_data_rec.med_exp_emp + nvl(l_csr_med_total_o.emp,0),
6151       p_information26          => l_ass_data_rec.lt_housing_loan_int_repay_1,
6152       p_information30          => l_csr_don_total.esoa,
6153       p_information31          => 'N',
6154       p_assignment_yea_info_id => l_assignment_yea_info_id);
6155   --
6156     -- J02/C02
6157     load_kr_ass_yea_info(
6158       p_assignment_id          => p_assignment_id,
6159       p_target_year            => g_target_yyyy,
6160       p_information_type       => 'KR_YEA_SP_TAX_EXEM_INFO2',
6161       p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6162       p_information2           => l_ass_data_rec.ee_occupation_educ_exp,
6163       p_information4           => l_csr_don_total.promotional,
6164       p_information5           => l_csr_don_total.religious,
6165       p_information6           => l_csr_don_total.other,
6166       p_information7           => l_csr_don_total.publicLegal,
6167       p_information8  	       => p_total_don_dpnts,
6168       p_information13          => l_ass_data_rec.lt_housing_loan_int_repay_2,
6169       p_assignment_yea_info_id => l_assignment_yea_info_id);
6170   --
6171           -- J02
6172     load_kr_ass_yea_info(
6173       p_assignment_id          => p_assignment_id,
6174       p_target_year            => g_target_yyyy,
6175       p_information_type       => 'KR_YEA_SP_TAX_EXEM_INFO3',
6176       p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6177       p_information6           => l_ass_data_rec.lt_2012_fixed_intr_wo_grace,
6178 	  p_information7           => l_ass_data_rec.lt_2012_housing_other_intr,
6179       p_assignment_yea_info_id => l_assignment_yea_info_id);
6180 
6181     --syncTotalSepPension
6182     open csr_sep_pen_total;
6183     fetch csr_sep_pen_total into l_csr_sep_pen_total;
6184     close csr_sep_pen_total;
6185   --
6186     --syncTotalLTStockSaving
6187     open csr_lts_total;
6188     fetch csr_lts_total into l_csr_lts_total;
6189     close csr_lts_total;
6190   --
6191     --syncTotalPenSaving
6192     open csr_pen_total;
6193     fetch csr_pen_total into l_csr_pen_total;
6194     close csr_pen_total;
6195   --
6196     -- D01/K01
6197     load_kr_ass_yea_info(
6198       p_assignment_id          => p_assignment_id,
6199       p_target_year            => g_target_yyyy,
6200       p_information_type       => 'KR_YEA_TAX_EXEM_INFO',
6201       p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6202       p_information3           => l_ass_data_rec.pers_pension_prem,
6203       p_information4           => l_csr_pen_total.pen_saving,
6204       p_information7           => l_ass_data_rec.credit_card_exp,
6205       p_information10          => l_ass_data_rec.direct_card_exp,
6206       p_information13          => l_ass_data_rec.cash_receipt_exp,
6207       p_information14          => l_csr_sep_pen_total.employment,
6208       p_information20          => l_ass_data_rec.small_bus_install,
6209       p_information22          => l_csr_lts_total.year1,
6210       p_information23          => l_csr_lts_total.year2,
6211       p_information24          => l_csr_lts_total.year3,
6212       p_information31          => l_csr_sep_pen_total.scientific,
6213       p_assignment_yea_info_id => l_assignment_yea_info_id);
6214   --
6215       --G101 Tradition Market details
6216 	    load_kr_ass_yea_info(
6217       p_assignment_id          => p_assignment_id,
6218       p_target_year            => g_target_yyyy,
6219       p_information_type       => 'KR_YEA_TAX_EXEM_INFO2',
6220       p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6221       p_information3           => l_ass_data_rec.credit_tm_exp,
6222 	  p_information5           => l_ass_data_rec.cash_tm_exp,
6223       p_information7          => l_ass_data_rec.direct_tm_exp,
6224       p_assignment_yea_info_id => l_assignment_yea_info_id);
6225   --
6226     -- A01/A02/B01/C01/C02/C03/C4/G01/G03/L01
6227     load_kr_ass_yea_info(
6228       p_assignment_id          => p_assignment_id,
6229       p_target_year            => g_target_yyyy,
6230       p_information_type       => 'KR_YEA_EMP_EXPENSE_DETAILS',
6231       p_information1           => fnd_date.date_to_canonical(g_target_eoy),
6232       p_information2           => l_ass_data_rec.med_exp_nts,
6233       p_information3           => l_ass_data_rec.educ_exp_nts,
6234       p_information4           => l_ass_data_rec.card_exp_nts,
6235       p_information5           => l_ass_data_rec.don_exp_nts,
6236       p_information6           => l_ass_data_rec.ins_exp_nts,
6237       p_information7           => l_ass_data_rec.direct_payment_nts,
6238 	  p_information8           => l_ass_data_rec.card_tm_nts,
6239 	  p_information9           => l_ass_data_rec.direct_tm_nts,
6240       p_assignment_yea_info_id => l_assignment_yea_info_id);
6241   --
6242     -- A01/A02/B01/C01/C02/C03/C4/G01/G02/G03/L01
6243     l_ass_dpnt_ind_tbl := l_ass_data_rec.dpnt_ind_tbl;
6244     l_ass_dpnt_tbl := l_ass_data_rec.dpnt_tbl;
6245     --
6246     if l_ass_dpnt_ind_tbl.count > 0 then
6247     --
6248       for i in l_ass_dpnt_ind_tbl.first..l_ass_dpnt_ind_tbl.last loop
6249       --
6250         l_tmp := null;
6251       --
6252         begin
6253         --
6254           l_tmp := nvl(to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).ins_prem_nts),'X');
6255         --
6256         exception
6257         when others then
6258         --
6259           -- warning
6260           fnd_message.set_name('PAY','PAY_KR_YEA_PDF_NO_DEP_CACHE');
6261           fnd_message.set_token('EMP_NAME',p_emp_name);
6262           fnd_message.set_token('EMP_NO',p_emp_num);
6263         --
6264           g_msg := fnd_message.get;
6265         --
6266           fnd_file.put_line(fnd_file.log,g_msg);
6267         --
6268         end;
6269       --
6270         if l_tmp is not null then
6271         --
6272           --fnd_file.put_line(fnd_file.log,'ins_prem_nts       : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).ins_prem_nts));
6273           --fnd_file.put_line(fnd_file.log,'med_exp_nts        : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).med_exp_nts));
6274           --fnd_file.put_line(fnd_file.log,'educ_exp_nts       : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).educ_exp_nts));
6275           --fnd_file.put_line(fnd_file.log,'card_exp_nts       : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).card_exp_nts));
6276           --fnd_file.put_line(fnd_file.log,'cash_exp_nts       : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).cash_exp_nts));
6277           --fnd_file.put_line(fnd_file.log,'dis_ins_nts        : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).dis_ins_nts));
6278           --fnd_file.put_line(fnd_file.log,'don_exp_nts        : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).don_exp_nts));
6279           --fnd_file.put_line(fnd_file.log,'direct_payment_nts : '||to_char(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).direct_payment_nts));
6280         --
6281           load_cei_dpnt_info(
6282             p_assignment_id         => p_assignment_id,
6283             p_effective_date        => g_target_eoy,
6284             p_information_type      => 'KR_DPNT_EXPENSE_INFO',
6285             p_emp_num               => p_emp_num,
6286             p_emp_name              => p_emp_name,
6287             p_con_ni                => l_ass_dpnt_ind_tbl(i),
6288             p_information1          => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).ins_prem_nts),
6289             p_information3          => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).med_exp_nts),
6290             p_information5          => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).educ_exp_nts),
6291             p_information7          => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).card_exp_nts),
6292             p_information9          => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).cash_exp_nts),
6293             p_information10         => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).dis_ins_nts),
6294             p_information14         => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).don_exp_nts),
6295             p_information16         => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).direct_payment_nts),
6296 			p_information18         => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).card_tm_nts),
6297 			p_information20         => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).cash_tm_nts),
6298             p_information21         => fnd_number.number_to_canonical(l_ass_dpnt_tbl(get_dpnt_ind(l_ass_dpnt_ind_tbl,l_ass_dpnt_ind_tbl(i))).direct_tm_nts),
6299             p_contact_extra_info_id => l_contact_extra_info_id);
6300         --
6301         end if;
6302       --
6303       end loop;
6304     --
6305     end if;
6306   --
6307     -- behave initial action same as YeaCO.java processRequest
6308     load_kr_ass_yea_info(
6309       p_assignment_id          => p_assignment_id,
6310       p_target_year            => g_target_yyyy,
6311       p_information_type       => 'KR_YEA_OVS_TAX_BREAK_INFO',
6312       p_assignment_yea_info_id => l_assignment_yea_info_id);
6313   --
6314     open csr_pkayi;
6315     fetch csr_pkayi into l_csr_pkayi;
6316     close csr_pkayi;
6317   --
6318     l_ass_data_rec_n.pers_ins_prem                := l_csr_pkayi.pers_ins_prem;
6319     l_ass_data_rec_n.disabled_ins_prem            := l_csr_pkayi.disabled_ins_prem;
6320     l_ass_data_rec_n.housing_loan_repay           := l_csr_pkayi.housing_loan_repay;
6321     l_ass_data_rec_n.housing_loan_date            := l_csr_pkayi.housing_loan_date;
6322     l_ass_data_rec_n.lt_housing_loan_interest_rep := l_csr_pkayi.lt_housing_loan_interest_rep;
6323     l_ass_data_rec_n.lt_housing_loan_int_repay_1  := l_csr_pkayi.lt_housing_loan_int_repay_1;
6324     l_ass_data_rec_n.lt_housing_loan_int_repay_2  := l_csr_pkayi.lt_housing_loan_int_repay_2;
6325 	l_ass_data_rec_n.lt_2012_fixed_intr_wo_grace  := l_csr_pkayi.lt_2012_fixed_intr_wo_grace;
6326 	l_ass_data_rec_n.lt_2012_housing_other_intr   := l_csr_pkayi.lt_2012_housing_other_intr;
6327     l_ass_data_rec_n.med_exp_aged                 := l_csr_pkayi.med_exp_aged;
6328     l_ass_data_rec_n.med_exp_emp                  := l_csr_pkayi.med_exp_emp;
6329     l_ass_data_rec_n.med_exp                      := l_csr_pkayi.med_exp;
6330     l_ass_data_rec_n.political_donation1          := l_csr_pkayi.political_donation1;
6331     l_ass_data_rec_n.ee_educ_exp                  := l_csr_pkayi.ee_educ_exp;
6332     l_ass_data_rec_n.ee_occupation_educ_exp       := l_csr_pkayi.ee_occupation_educ_exp;
6333     l_ass_data_rec_n.pers_pension_prem            := l_csr_pkayi.pers_pension_prem;
6334     l_ass_data_rec_n.small_bus_install            := l_csr_pkayi.small_bus_install;
6335     l_ass_data_rec_n.credit_card_exp              := l_csr_pkayi.credit_card_exp;
6336 	l_ass_data_rec_n.credit_tm_exp                := l_csr_pkayi.credit_tm_exp;
6337     l_ass_data_rec_n.cash_receipt_exp             := l_csr_pkayi.cash_receipt_exp;
6338 	l_ass_data_rec_n.cash_tm_exp                  := l_csr_pkayi.cash_tm_exp;
6339     l_ass_data_rec_n.direct_card_exp              := l_csr_pkayi.direct_card_exp;
6340 	l_ass_data_rec_n.direct_tm_exp                := l_csr_pkayi.direct_tm_exp;
6341     l_ass_data_rec_n.ins_exp_nts                  := l_csr_pkayi.ins_exp_nts;
6342     l_ass_data_rec_n.med_exp_nts                  := l_csr_pkayi.med_exp_nts;
6343     l_ass_data_rec_n.educ_exp_nts                 := l_csr_pkayi.educ_exp_nts;
6344     l_ass_data_rec_n.card_exp_nts                 := l_csr_pkayi.card_exp_nts;
6345 	l_ass_data_rec_n.card_tm_nts                  := l_csr_pkayi.card_tm_nts;
6346     l_ass_data_rec_n.direct_payment_nts           := l_csr_pkayi.direct_payment_nts;
6347 	l_ass_data_rec_n.direct_tm_nts                := l_csr_pkayi.direct_tm_nts;
6348     l_ass_data_rec_n.don_exp_nts                  := l_csr_pkayi.don_exp_nts;
6349     --
6350     l_ass_data_rec_n.entry_status                 := l_csr_pkayi.entry_status;
6351     --
6352     l_ass_data_rec_n.housing_saving_type         := l_csr_pkayi.housing_saving_type;
6353     l_ass_data_rec_n.housing_saving              := l_csr_pkayi.housing_saving;
6354     l_ass_data_rec_n.housing_purchase_date       := l_csr_pkayi.housing_purchase_date;
6355     l_ass_data_rec_n.lt_housing_loan_date        := l_csr_pkayi.lt_housing_loan_date;
6356     l_ass_data_rec_n.donation1                   := l_csr_pkayi.donation1;
6357     l_ass_data_rec_n.hi_prem                     := l_csr_pkayi.hi_prem;
6358     l_ass_data_rec_n.political_donation2         := l_csr_pkayi.political_donation2;
6359     l_ass_data_rec_n.political_donation3         := l_csr_pkayi.political_donation3;
6360     l_ass_data_rec_n.donation2                   := l_csr_pkayi.donation2;
6361     l_ass_data_rec_n.donation3                   := l_csr_pkayi.donation3;
6362     l_ass_data_rec_n.lt_housing_loan_date_1      := l_csr_pkayi.lt_housing_loan_date_1;
6363     l_ass_data_rec_n.mfr_marriage_occasions      := l_csr_pkayi.mfr_marriage_occasions;
6364     l_ass_data_rec_n.mfr_funeral_occasions       := l_csr_pkayi.mfr_funeral_occasions;
6365     l_ass_data_rec_n.mfr_relocation_occasions    := l_csr_pkayi.mfr_relocation_occasions;
6366     l_ass_data_rec_n.ei_prem                     := l_csr_pkayi.ei_prem;
6367     l_ass_data_rec_n.esoa_donation               := l_csr_pkayi.esoa_donation;
6368     l_ass_data_rec_n.pers_ins_name               := l_csr_pkayi.pers_ins_name;
6369     l_ass_data_rec_n.med_exp_disabled            := l_csr_pkayi.med_exp_disabled;
6370     l_ass_data_rec_n.immigration_purpose         := l_csr_pkayi.immigration_purpose;
6371     l_ass_data_rec_n.contract_date               := l_csr_pkayi.contract_date;
6372     l_ass_data_rec_n.expiry_date                 := l_csr_pkayi.expiry_date;
6373     l_ass_data_rec_n.stax_applicable_flag        := l_csr_pkayi.stax_applicable_flag;
6374     l_ass_data_rec_n.fw_application_date         := l_csr_pkayi.fw_application_date;
6375     l_ass_data_rec_n.fw_submission_date          := l_csr_pkayi.fw_submission_date;
6376     l_ass_data_rec_n.tax_paid_date               := l_csr_pkayi.tax_paid_date;
6377     l_ass_data_rec_n.ovs_submission_date         := l_csr_pkayi.ovs_submission_date;
6378     l_ass_data_rec_n.kr_ovs_location             := l_csr_pkayi.kr_ovs_location;
6379     l_ass_data_rec_n.kr_ovs_work_period          := l_csr_pkayi.kr_ovs_work_period;
6380     l_ass_data_rec_n.kr_ovs_responsibility       := l_csr_pkayi.kr_ovs_responsibility;
6381     l_ass_data_rec_n.territory_code              := l_csr_pkayi.territory_code;
6382     l_ass_data_rec_n.currency_code               := l_csr_pkayi.currency_code;
6383     l_ass_data_rec_n.taxable                     := l_csr_pkayi.taxable;
6384     l_ass_data_rec_n.taxable_subj_tax_break      := l_csr_pkayi.taxable_subj_tax_break;
6385     l_ass_data_rec_n.tax_break_rate              := l_csr_pkayi.tax_break_rate;
6386     l_ass_data_rec_n.tax_foreign_currency        := l_csr_pkayi.tax_foreign_currency;
6387     l_ass_data_rec_n.tax                         := l_csr_pkayi.tax;
6388     l_ass_data_rec_n.ovs_application_date        := l_csr_pkayi.ovs_application_date;
6389     l_ass_data_rec_n.housing_loan_interest_repay := l_csr_pkayi.housing_loan_interest_repay;
6390     l_ass_data_rec_n.stock_saving                := l_csr_pkayi.stock_saving;
6391     l_ass_data_rec_n.lt_stock_saving1            := l_csr_pkayi.lt_stock_saving1;
6392     l_ass_data_rec_n.lt_stock_saving2            := l_csr_pkayi.lt_stock_saving2;
6393     l_ass_data_rec_n.dpnt_direct_exp             := l_csr_pkayi.dpnt_direct_exp;
6394     l_ass_data_rec_n.giro_tuition_paid_exp       := l_csr_pkayi.giro_tuition_paid_exp;
6395     l_ass_data_rec_n.np_prem                     := l_csr_pkayi.np_prem;
6396     l_ass_data_rec_n.pers_pension_saving         := l_csr_pkayi.pers_pension_saving;
6397     l_ass_data_rec_n.invest_partnership_fin1     := l_csr_pkayi.invest_partnership_fin1;
6398     l_ass_data_rec_n.invest_partnership_fin2     := l_csr_pkayi.invest_partnership_fin2;
6399     l_ass_data_rec_n.emp_stock_own_plan_contri   := l_csr_pkayi.emp_stock_own_plan_contri;
6400     l_ass_data_rec_n.credit_card_exp_dpnt        := l_csr_pkayi.credit_card_exp_dpnt;
6401     l_ass_data_rec_n.pen_prem                    := l_csr_pkayi.pen_prem;
6402     l_ass_data_rec_n.ltci_prem                   := l_csr_pkayi.ltci_prem;
6403   --
6404   -- *************************************
6405   -- upload to Assignment EIT
6406   -- *************************************
6407   --
6408     if nvl(g_upload_to,'SS') = 'EIT' then
6409     --
6410       -- validate yea
6411       pay_kr_yea_sshr_utils_pkg.run_validation_formula(
6412         p_business_group_id            => g_business_group_id,
6413         p_assignment_id                => p_assignment_id,
6414         p_target_year                  => to_char(g_target_yyyy),
6415         p_effective_date               => fnd_date.date_to_canonical(g_target_eoy),
6416         p_return_message               => l_return_message,
6417         p_return_status                => l_return_status,
6418         p_ff_message0                  => l_ff_message0,
6419         p_ff_message1                  => l_ff_message1,
6420         p_ff_message2                  => l_ff_message2,
6421         p_ff_message3                  => l_ff_message3,
6422         p_ff_message4                  => l_ff_message4,
6423         p_ff_message5                  => l_ff_message5,
6424         p_ff_message6                  => l_ff_message6,
6425         p_ff_message7                  => l_ff_message7,
6426         p_ff_message8                  => l_ff_message8,
6427         p_ff_message9                  => l_ff_message9,
6428         p_ff_return_status             => l_ff_return_status,
6429         p_ee_educ_exp                  => cnv_m(l_ass_data_rec_n.ee_educ_exp),
6430         p_housing_saving_type          => l_ass_data_rec_n.housing_saving_type,
6431         p_housing_saving               => cnv_m(l_ass_data_rec_n.housing_saving),
6432         p_housing_purchase_date        => l_ass_data_rec_n.housing_purchase_date, /* fnd_date ? */
6433         p_housing_loan_date            => l_ass_data_rec_n.housing_loan_date,
6434         p_housing_loan_repay           => cnv_m(l_ass_data_rec_n.housing_loan_repay),
6435         p_lt_housing_loan_date         => l_ass_data_rec_n.lt_housing_loan_date,
6436         p_lt_housing_loan_interest_rep => cnv_m(l_ass_data_rec_n.lt_housing_loan_interest_rep),
6437         p_donation1                    => cnv_m(l_ass_data_rec_n.donation1),
6438         p_political_donation1          => cnv_m(l_ass_data_rec_n.political_donation1),
6439         p_hi_prem                      => cnv_m(l_ass_data_rec_n.hi_prem),
6440         p_political_donation2          => cnv_m(l_ass_data_rec_n.political_donation2),
6441         p_political_donation3          => cnv_m(l_ass_data_rec_n.political_donation3),
6442         p_donation2                    => cnv_m(l_ass_data_rec_n.donation2),
6443         p_donation3                    => cnv_m(l_ass_data_rec_n.donation3),
6444         p_med_exp_emp                  => cnv_m(l_ass_data_rec_n.med_exp_emp),
6445         p_lt_housing_loan_date_1       => l_ass_data_rec_n.lt_housing_loan_date_1,
6446         p_lt_housing_loan_int_repay_1  => cnv_m(l_ass_data_rec_n.lt_housing_loan_int_repay_1),
6447         p_mfr_marriage_occasions       => cnv_m(l_ass_data_rec_n.mfr_marriage_occasions),
6448         p_mfr_funeral_occasions        => cnv_m(l_ass_data_rec_n.mfr_funeral_occasions),
6449         p_mfr_relocation_occasions     => cnv_m(l_ass_data_rec_n.mfr_relocation_occasions),
6450         p_ei_prem                      => cnv_m(l_ass_data_rec_n.ei_prem),
6451         p_esoa_donation                => cnv_m(l_ass_data_rec_n.esoa_donation),
6452         p_pers_ins_name                => l_ass_data_rec_n.pers_ins_name,
6453         p_pers_ins_prem                => cnv_m(l_ass_data_rec_n.pers_ins_prem),
6454         p_disabled_ins_prem            => cnv_m(l_ass_data_rec_n.disabled_ins_prem),
6455         p_med_exp                      => cnv_m(l_ass_data_rec_n.med_exp),
6456         p_med_exp_disabled             => cnv_m(l_ass_data_rec_n.med_exp_disabled),
6457         p_med_exp_aged                 => cnv_m(l_ass_data_rec_n.med_exp_aged),
6458         p_ee_occupation_educ_exp       => cnv_m(l_ass_data_rec_n.ee_occupation_educ_exp),
6459         p_immigration_purpose          => l_ass_data_rec_n.immigration_purpose,
6460         p_contract_date                => l_ass_data_rec_n.contract_date,
6461         p_expiry_date                  => l_ass_data_rec_n.expiry_date,
6462         p_stax_applicable_flag         => l_ass_data_rec_n.stax_applicable_flag,
6463         p_fw_application_date          => l_ass_data_rec_n.fw_application_date,
6464         p_fw_submission_date           => l_ass_data_rec_n.fw_submission_date,
6465         p_tax_paid_date                => l_ass_data_rec_n.tax_paid_date,
6466         p_ovs_submission_date          => l_ass_data_rec_n.ovs_submission_date,
6467         p_kr_ovs_location              => l_ass_data_rec_n.kr_ovs_location,
6468         p_kr_ovs_work_period           => l_ass_data_rec_n.kr_ovs_work_period,
6469         p_kr_ovs_responsibility        => l_ass_data_rec_n.kr_ovs_responsibility,
6470         p_territory_code               => l_ass_data_rec_n.territory_code,
6471         p_currency_code                => l_ass_data_rec_n.currency_code,
6472         p_taxable                      => cnv_m(l_ass_data_rec_n.taxable),
6473         p_taxable_subj_tax_break       => cnv_m(l_ass_data_rec_n.taxable_subj_tax_break),
6474         p_tax_break_rate               => l_ass_data_rec_n.tax_break_rate,
6475         p_tax_foreign_currency         => cnv_m(l_ass_data_rec_n.tax_foreign_currency,l_ass_data_rec_n.currency_code),
6476         p_tax                          => cnv_m(l_ass_data_rec_n.tax),
6477         p_ovs_application_date         => l_ass_data_rec_n.ovs_application_date,
6478         p_housing_loan_interest_repay  => cnv_m(l_ass_data_rec_n.housing_loan_interest_repay),
6479         p_stock_saving                 => cnv_m(l_ass_data_rec_n.stock_saving),
6480         p_lt_stock_saving1             => cnv_m(l_ass_data_rec_n.lt_stock_saving1),
6481         p_lt_stock_saving2             => cnv_m(l_ass_data_rec_n.lt_stock_saving2),
6482         p_direct_card_exp              => cnv_m(l_ass_data_rec_n.direct_card_exp),
6483         p_dpnt_direct_exp              => cnv_m(l_ass_data_rec_n.dpnt_direct_exp),
6484         p_giro_tuition_paid_exp        => cnv_m(l_ass_data_rec_n.giro_tuition_paid_exp),
6485         p_cash_receipt_exp             => cnv_m(l_ass_data_rec_n.cash_receipt_exp),
6486         p_np_prem                      => cnv_m(l_ass_data_rec_n.np_prem),
6487         p_pers_pension_prem            => cnv_m(l_ass_data_rec_n.pers_pension_prem),
6488         p_pers_pension_saving          => cnv_m(l_ass_data_rec_n.pers_pension_saving),
6489         p_invest_partnership_fin1      => cnv_m(l_ass_data_rec_n.invest_partnership_fin1),
6490         p_invest_partnership_fin2      => cnv_m(l_ass_data_rec_n.invest_partnership_fin2),
6491         p_credit_card_exp              => cnv_m(l_ass_data_rec_n.credit_card_exp),
6492         p_emp_stock_own_plan_contri    => cnv_m(l_ass_data_rec_n.emp_stock_own_plan_contri),
6493         p_credit_card_exp_dpnt         => cnv_m(l_ass_data_rec_n.credit_card_exp_dpnt),
6494         p_pen_prem                     => cnv_m(l_ass_data_rec_n.pen_prem),
6495         p_ltci_prem                    => cnv_m(l_ass_data_rec_n.ltci_prem));
6496     --
6497       if l_return_status = 'S' then
6498       --
6499         l_status := 'V';
6500       --
6501         -- this will sync KR_DPNT_EXPENSE_INFO with medical/donation tbl
6502         pay_kr_yea_sshr_utils_pkg.submit_yea_info(
6503           p_assignment_id  => p_assignment_id,
6504           p_target_year    => to_char(g_target_yyyy),
6505           p_effective_date => null,
6506           p_return_status  => l_return_status,
6507           p_return_message => l_return_message,
6508           p_failed_record  => l_failed_record);
6509       --
6510         if l_return_status = 'S' then
6511         --
6512           -- same behavior YeaAMImpl.updateEntryStatus.SUBMIT_OK
6513           l_ass_data_rec_n.entry_status := 'C';
6514         --
6515           if nvl(g_remove_pdf,'N') = 'Y' then
6516           --
6517             delete_pdf(p_file_id);
6518           --
6519           end if;
6520         --
6521           l_status := 'U';
6522         --
6523         else
6524         --
6525           fnd_message.set_name('PAY','PAY_KR_YEA_PDF_SUBMIT_FAILED');
6526           fnd_message.set_token('EMP_NAME',p_emp_name);
6527           fnd_message.set_token('EMP_NO',p_emp_num);
6528           fnd_message.set_token('FAIL_REC',l_failed_record);
6529         --
6530           g_msg := fnd_message.get;
6531         --
6532           fnd_file.put_line(fnd_file.log,g_msg||' '||l_return_message);
6533         --
6534           -- same behavior YeaAMImpl.updateEntryStatus.SUBMIT_FAILED
6535           if l_ass_data_rec_n.entry_status in ('IU','FU','C') then
6536           --
6537             l_ass_data_rec_n.entry_status := 'FU';
6538           --
6539           else
6540           --
6541             l_ass_data_rec_n.entry_status := 'FE';
6542           --
6543           end if;
6544         --
6545         end if;
6546       --
6547       else
6548       --
6549         fnd_message.set_name('PAY','PAY_KR_YEA_PDF_VALID_FAILED');
6550         fnd_message.set_token('EMP_NAME',p_emp_name);
6551         fnd_message.set_token('EMP_NO',p_emp_num);
6552       --
6553         g_msg := fnd_message.get;
6554       --
6555         fnd_file.put_line(fnd_file.log,g_msg||' '||l_return_message);
6556       --
6557         l_ass_data_rec_n.validation_status := l_return_status;
6558         l_ass_data_rec_n.entry_error1      := l_ff_message0;
6559         l_ass_data_rec_n.entry_error2      := l_ff_message1;
6560         l_ass_data_rec_n.entry_error3      := l_ff_message2;
6561         l_ass_data_rec_n.entry_error4      := l_ff_message3;
6562         l_ass_data_rec_n.entry_error5      := l_ff_message4;
6563         l_ass_data_rec_n.entry_error6      := l_ff_message5;
6564         l_ass_data_rec_n.entry_error7      := l_ff_message6;
6565         l_ass_data_rec_n.entry_error8      := l_ff_message7;
6566         l_ass_data_rec_n.entry_error9      := l_ff_message8;
6567         l_ass_data_rec_n.entry_error10     := l_ff_message9;
6568       --
6569         -- same behavior YeaAMImpl.updateEntryStatus.SUBMIT_FAILED
6570         if l_ass_data_rec_n.entry_status in ('IU','FU','C') then
6571         --
6572           l_ass_data_rec_n.entry_status := 'FU';
6573         --
6574         else
6575         --
6576           l_ass_data_rec_n.entry_status := 'FE';
6577         --
6578         end if;
6579       --
6580       end if;
6581     --
6582     else
6583     --
6584       -- same behavior YeaAMImpl.updateEntryStatus.SFL
6585       if l_ass_data_rec_n.entry_status in ('N','IE','FE') then
6586       --
6587         l_ass_data_rec_n.entry_status := 'IE';
6588       --
6589       else
6590       --
6591         l_ass_data_rec_n.entry_status := 'IU';
6592       --
6593       end if;
6594     --
6595       l_status := 'U';
6596     --
6597     end if;
6598   --
6599     load_kr_ass_yea_info(
6600       p_assignment_id          => p_assignment_id,
6601       p_target_year            => g_target_yyyy,
6602       p_information_type       => 'KR_YEA_ENTRY_STATUS',
6603       p_information2           => l_ass_data_rec_n.validation_status,
6604       p_information3           => l_ass_data_rec_n.entry_status,
6605       p_information4           => nvl(l_ass_data_rec_n.entry_error1,'NULL'),
6606       p_information5           => nvl(l_ass_data_rec_n.entry_error2,'NULL'),
6607       p_information6           => nvl(l_ass_data_rec_n.entry_error3,'NULL'),
6608       p_information7           => nvl(l_ass_data_rec_n.entry_error4,'NULL'),
6609       p_information8           => nvl(l_ass_data_rec_n.entry_error5,'NULL'),
6610       p_information9           => nvl(l_ass_data_rec_n.entry_error6,'NULL'),
6611       p_information10          => nvl(l_ass_data_rec_n.entry_error7,'NULL'),
6612       p_information11          => nvl(l_ass_data_rec_n.entry_error8,'NULL'),
6613       p_information12          => nvl(l_ass_data_rec_n.entry_error9,'NULL'),
6614       p_information13          => nvl(l_ass_data_rec_n.entry_error10,'NULL'),
6615       p_force_update           => 'Y',
6616       p_assignment_yea_info_id => l_assignment_yea_info_id);
6617 --
6618 else
6619 --
6620   fnd_file.put_line(fnd_file.log,'-----------------------------------------------------------------------------');
6621   fnd_file.put_line(fnd_file.log,'debug upload data');
6622   fnd_file.put_line(fnd_file.log,'-----------------------------------------------------------------------------');
6623   fnd_file.put_line(fnd_file.log,'-- KR_YEA_DETAIL_MEDICAL_EXP_INFO --');
6624   l_ass_med_tbl := l_ass_data_rec.med_tbl;
6625   fnd_file.put_line(fnd_file.log,'B   : '||to_char(l_ass_med_tbl.count));
6626   fnd_file.put_line(fnd_file.log,'-- KR_YEA_DETAIL_DONATION_INFO --');
6627   l_ass_don_tbl := l_ass_data_rec.don_tbl;
6628   fnd_file.put_line(fnd_file.log,'L   : '||to_char(l_ass_don_tbl.count)||'('||to_char(l_don_tbl_tmp.count)||')');
6629   fnd_file.put_line(fnd_file.log,'-- KR_YEA_DPNT_EDUC_TAX_EXEM_INFO --');
6630   l_ass_educ_tbl := l_ass_data_rec.educ_tbl;
6631   fnd_file.put_line(fnd_file.log,'C   : '||to_char(l_ass_educ_tbl.count));
6632   fnd_file.put_line(fnd_file.log,'-- KR_YEA_SEP_PEN_DETAILS --');
6633   l_ass_saving_tbl := l_ass_data_rec.sep_pen_saving_tbl;
6634   fnd_file.put_line(fnd_file.log,'F   : '||to_char(l_ass_saving_tbl.count));
6635   fnd_file.put_line(fnd_file.log,'-- KR_YEA_PEN_SAVING_DETAILS --');
6636   l_ass_saving_tbl := l_ass_data_rec.pen_saving_tbl;
6637   fnd_file.put_line(fnd_file.log,'D/E : '||to_char(l_ass_saving_tbl.count));
6638   fnd_file.put_line(fnd_file.log,'-- KR_YEA_LT_STOCK_SAVING_DETAILS --');
6639   l_ass_saving_tbl := l_ass_data_rec.lts_saving_tbl;
6640   fnd_file.put_line(fnd_file.log,'M   : '||to_char(l_ass_saving_tbl.count));
6641   fnd_file.put_line(fnd_file.log,'-- KR_YEA_HOU_SAVING_DETAILS --');
6642   l_ass_saving_tbl := l_ass_data_rec.hou_saving_tbl;
6643   fnd_file.put_line(fnd_file.log,'J   : '||to_char(l_ass_saving_tbl.count));
6644   fnd_file.put_line(fnd_file.log,'-- KR_YEA_SP_TAX_EXEM_INFO --');
6645   fnd_file.put_line(fnd_file.log,'pers_ins_prem                : A01 : '||l_ass_data_rec.pers_ins_prem);
6646   fnd_file.put_line(fnd_file.log,'disabled_ins_prem            : A01 : '||l_ass_data_rec.disabled_ins_prem);
6647   fnd_file.put_line(fnd_file.log,'med_exp                      : B01 : '||l_ass_data_rec.med_exp);
6648   fnd_file.put_line(fnd_file.log,'med_exp_aged                 : B01 : '||l_ass_data_rec.med_exp_aged);
6649   fnd_file.put_line(fnd_file.log,'ee_educ_exp                  : C01/03/04 : '||l_ass_data_rec.ee_educ_exp);
6650   fnd_file.put_line(fnd_file.log,'housing_loan_repay           : J01 : '||l_ass_data_rec.housing_loan_repay);
6651   fnd_file.put_line(fnd_file.log,'housing_loan_date            : J01 : '||l_ass_data_rec.housing_loan_date);
6652   fnd_file.put_line(fnd_file.log,'lt_housing_loan_interest_rep : J02 : '||l_ass_data_rec.lt_housing_loan_interest_rep);
6653   fnd_file.put_line(fnd_file.log,'political_donation1          : L01 '||l_ass_data_rec.political_donation1);
6654   fnd_file.put_line(fnd_file.log,'med_exp_emp                  : B01 : '||l_ass_data_rec.med_exp_emp);
6655   fnd_file.put_line(fnd_file.log,'lt_housing_loan_int_repay_1  : J02 : '||l_ass_data_rec.lt_housing_loan_int_repay_1);
6656   fnd_file.put_line(fnd_file.log,'-- KR_YEA_SP_TAX_EXEM_INFO2 --');
6657   fnd_file.put_line(fnd_file.log,'ee_occupation_educ_exp       : C02 : '||l_ass_data_rec.ee_occupation_educ_exp);
6658   fnd_file.put_line(fnd_file.log,'lt_housing_loan_int_repay_2  : J02 : '||l_ass_data_rec.lt_housing_loan_int_repay_2);
6659   fnd_file.put_line(fnd_file.log,'lt_2012_fixed_intr_wo_grace  : J02 : '||l_ass_data_rec.lt_2012_fixed_intr_wo_grace);
6660   fnd_file.put_line(fnd_file.log,'lt_2012_housing_other_intr   : J02 : '||l_ass_data_rec.lt_2012_housing_other_intr);
6661   fnd_file.put_line(fnd_file.log,'-- KR_YEA_TAX_EXEM_INFO --');
6662   fnd_file.put_line(fnd_file.log,'pers_pension_prem            : D01 : '||l_ass_data_rec.pers_pension_prem);
6663   fnd_file.put_line(fnd_file.log,'credit_card_exp              : G01 : '||l_ass_data_rec.credit_card_exp);
6664   fnd_file.put_line(fnd_file.log,'credit_tm_exp                : G01 : '||l_ass_data_rec.credit_tm_exp);
6665   fnd_file.put_line(fnd_file.log,'direct_card_exp              : G03 : '||l_ass_data_rec.direct_card_exp);
6666   fnd_file.put_line(fnd_file.log,'direct_tm_exp                : G03 : '||l_ass_data_rec.direct_tm_exp);
6667   fnd_file.put_line(fnd_file.log,'cash_receipt_exp             : G02 : '||l_ass_data_rec.cash_receipt_exp);
6668   fnd_file.put_line(fnd_file.log,'cash_tm_exp                  : G02 : '||l_ass_data_rec.cash_tm_exp);
6669   fnd_file.put_line(fnd_file.log,'small_bus_install            : K01 : '||l_ass_data_rec.small_bus_install);
6670   fnd_file.put_line(fnd_file.log,'-- KR_YEA_EMP_EXPENSE_DETAILS --');
6671   fnd_file.put_line(fnd_file.log,'med_exp_nts                  : B ; '||l_ass_data_rec.med_exp_nts);
6672   fnd_file.put_line(fnd_file.log,'educ_exp_nts                 : C : '||l_ass_data_rec.educ_exp_nts);
6673   fnd_file.put_line(fnd_file.log,'card_exp_nts                 : G01 : '||l_ass_data_rec.card_exp_nts);
6674   fnd_file.put_line(fnd_file.log,'card_tm _nts                 : G01 : '||l_ass_data_rec.card_tm_nts);
6675   fnd_file.put_line(fnd_file.log,'don_exp_nts                  : L01 : '||l_ass_data_rec.don_exp_nts);
6676   fnd_file.put_line(fnd_file.log,'ins_exp_nts                  : A01/A03 : '||l_ass_data_rec.ins_exp_nts);
6677   fnd_file.put_line(fnd_file.log,'direct_payment_nts           : G03 : '||l_ass_data_rec.direct_payment_nts);
6678   fnd_file.put_line(fnd_file.log,'direct_tm_nts           : G03 : '||l_ass_data_rec.direct_tm_nts);
6679   fnd_file.put_line(fnd_file.log,'-- KR_YEA_EMP_EXPENSE_DETAILS --');
6680   l_ass_dpnt_ind_tbl := l_ass_data_rec.dpnt_ind_tbl;
6681   l_ass_dpnt_tbl := l_ass_data_rec.dpnt_tbl;
6682   fnd_file.put_line(fnd_file.log,'dpnt_ind_tbl                 : '||to_char(l_ass_dpnt_ind_tbl.count));
6683   fnd_file.put_line(fnd_file.log,'dpnt_tbl                     : '||to_char(l_ass_dpnt_tbl.count));
6684   fnd_file.put_line(fnd_file.log,'-----------------------------------------------------------------------------');
6685 --
6686   l_status := 'U';
6687 --
6688 end if;
6689 --
6690   if g_debug then
6691     hr_utility.set_location(l_proc,1000);
6692   end if;
6693 --
6694   return l_status;
6695 --
6696 end main_xml;
6697 --
6698 -- -------------------------------------------------------------------------
6699 -- load_xml
6700 -- -------------------------------------------------------------------------
6701 procedure load_xml(
6702   p_emp_num  in varchar2,
6703   p_ni_num   in varchar2,
6704   p_emp_name in varchar2,
6705   p_xml      in clob)
6706 is
6707 --
6708   l_proc varchar2(80) := c_package||'load_xml';
6709 --
6710   l_status varchar2(1);
6711 --
6712 begin
6713 --
6714   if g_debug then
6715     hr_utility.set_location(l_proc,0);
6716   end if;
6717 --
6718   if g_ass_yea_tbl.count > 0 then
6719   --
6720     -- might update multiple assignment rows for same file id
6721     for i in g_ass_yea_tbl.first..g_ass_yea_tbl.last loop
6722     --
6723       g_ass_yea_tbl(i).status := main_xml(
6724                                    p_assignment_id => g_ass_yea_tbl(i).assignment_id,
6725                                    p_emp_num       => p_emp_num,
6726                                    p_ni_num        => p_ni_num,
6727                                    p_emp_name      => p_emp_name,
6728                                    p_file_id       => g_ass_yea_tbl(i).file_id,
6729                                    p_xml           => p_xml);
6730     --
6731       if nvl(g_ass_yea_tbl(i).status,'X') = 'U' then
6732       --
6733         g_ass_yea_tbl(i).status := 'C';
6734       --
6735       end if;
6736     --
6737     end loop;
6738   --
6739   end if;
6740 --
6741   if g_debug then
6742     hr_utility.set_location(l_proc,1000);
6743   end if;
6744 --
6745 end load_xml;
6746 --
6747 -- -------------------------------------------------------------------------
6748 -- upload_xml
6749 -- -------------------------------------------------------------------------
6750 function upload_xml(
6751   p_xml in clob)
6752 return varchar2
6753 is
6754 --
6755   l_proc varchar2(80) := c_package||'upload_xml';
6756 --
6757   l_status varchar2(1);
6758 --
6759 begin
6760 --
6761   if g_debug then
6762     hr_utility.set_location(l_proc,0);
6763   end if;
6764 --
6765   l_status := main_xml(
6766                 p_assignment_id => g_pdf_tbl(g_pdf_ind).assignment_id,
6767                 p_emp_num       => g_pdf_tbl(g_pdf_ind).emp_num,
6768                 p_ni_num        => g_pdf_tbl(g_pdf_ind).ni_num,
6769                 p_emp_name      => g_pdf_tbl(g_pdf_ind).emp_name,
6770                 p_file_id       => g_pdf_tbl(g_pdf_ind).file_id,
6771                 p_xml           => p_xml);
6772 --
6773   if g_debug then
6774     hr_utility.set_location(l_proc,1000);
6775   end if;
6776 --
6777   return l_status;
6778 --
6779 end upload_xml;
6780 --
6781 -- -------------------------------------------------------------------------
6782 -- main_post
6783 -- -------------------------------------------------------------------------
6784 procedure main_post(
6785   p_assignment_yea_info_id in number,
6786   p_emp_num                in varchar2,
6787   p_emp_name               in varchar2,
6788   p_file_name              in varchar2,
6789   p_status                 in varchar2,
6790   p_error_code             in varchar2)
6791 is
6792 --
6793   l_proc varchar2(80) := c_package||'main_post';
6794 --
6795 begin
6796 --
6797   if g_debug then
6798     hr_utility.set_location(l_proc,0);
6799   end if;
6800 --
6801   update per_kr_assignment_yea_info
6802   set ayi_information14 = decode(nvl(p_error_code,'X'),'X',decode(nvl(p_status,'X'),'C',c_upload_status,ayi_information14),c_error_status),
6803       ayi_information16 = p_status,
6804       ayi_information17 = p_error_code,
6805       object_version_number = object_version_number + 1
6806   where assignment_yea_info_id = p_assignment_yea_info_id;
6807 --
6808   if nvl(g_ss_call,'N') <> 'Y' then
6809   --
6810     if p_status = 'C' then
6811     --
6812       if nvl(g_upl_output_hd_show,'N') = 'N' then
6813       --
6814         fnd_file.put_line(fnd_file.output,'-----------------------------------------------------------------------------');
6815         fnd_file.put_line(fnd_file.output,fnd_message.get_string('PAY','PAY_KR_YEA_PDF_UPL_EMP'));
6816         fnd_file.put_line(fnd_file.output,'-----------------------------------------------------------------------------');
6817       --
6818         g_upl_output_hd_show := 'Y';
6819       --
6820       end if;
6821     --
6822       if nvl(g_load_type,'X') <> 'L' then
6823       --
6824         fnd_file.put_line(fnd_file.output,p_emp_name||' ( '||p_emp_num||' ) ');
6825       --
6826       else
6827       --
6828         fnd_file.put_line(fnd_file.output,p_emp_name||' ( '||p_emp_num||' ) : '||g_import_path||g_path_delimiter||p_file_name);
6829       --
6830       end if;
6831     --
6832     end if;
6833   --
6834   end if;
6835 --
6836   if g_debug then
6837     hr_utility.set_location(l_proc,1000);
6838   end if;
6839 --
6840 end main_post;
6841 --
6842 -- -------------------------------------------------------------------------
6843 -- load_post
6844 -- -------------------------------------------------------------------------
6845 function load_post(
6846   p_error_code in varchar2)
6847 return number
6848 is
6849 --
6850   l_proc varchar2(80) := c_package||'load_post';
6851 --
6852   l_suc_cnt number := 0;
6853 --
6854 begin
6855 --
6856   if g_debug then
6857     hr_utility.set_location(l_proc,0);
6858   end if;
6859 --
6860   if g_ass_yea_tbl.count > 0 then
6861   --
6862     -- might update multiple assignment rows for same file id
6863     for i in g_ass_yea_tbl.first..g_ass_yea_tbl.last loop
6864     --
6865       main_post(
6866         p_assignment_yea_info_id => g_ass_yea_tbl(i).assignment_yea_info_id,
6867         p_emp_num                => g_ass_yea_tbl(i).emp_num,
6868         p_emp_name               => g_ass_yea_tbl(i).emp_name,
6869         p_file_name              => g_ass_yea_tbl(i).file_name,
6870         p_status                 => g_ass_yea_tbl(i).status,
6871         p_error_code             => p_error_code);
6872     --
6873       if nvl(g_ass_yea_tbl(i).status,'X') = 'C' then
6874       --
6875         l_suc_cnt := l_suc_cnt + 1;
6876       --
6877       end if;
6878     --
6879     end loop;
6880   --
6881   end if;
6882 --
6883   if g_debug then
6884     hr_utility.set_location(l_proc,1000);
6885   end if;
6886 --
6887   return l_suc_cnt;
6888 --
6889 end load_post;
6890 --
6891 -- -------------------------------------------------------------------------
6892 -- upload_post
6893 -- -------------------------------------------------------------------------
6894 -- this should be called finally for increment of g_pdf_ind
6895 procedure upload_post(
6896   p_status     in varchar2,
6897   p_error_code in varchar2)
6898 is
6899 --
6900   l_proc varchar2(80) := c_package||'upload_post';
6901 --
6902 begin
6903 --
6904   if g_debug then
6905     hr_utility.set_location(l_proc,0);
6906   end if;
6907 --
6908   if g_pdf_ind is not null then
6909   --
6910     main_post(
6911       p_assignment_yea_info_id => g_pdf_tbl(g_pdf_ind).assignment_yea_info_id,
6912       p_emp_num                => g_pdf_tbl(g_pdf_ind).emp_num,
6913       p_emp_name               => g_pdf_tbl(g_pdf_ind).emp_name,
6914       p_file_name              => null,
6915       p_status                 => p_status,
6916       p_error_code             => p_error_code);
6917   --
6918     if nvl(g_ss_call,'N') <> 'Y' then
6919     --
6920       if g_pdf_ind > g_chunk * g_chunk_cnt then
6921       --
6922         commit;
6923         g_chunk_cnt := g_chunk_cnt + 1;
6924       --
6925       end if;
6926     --
6927       if g_pdf_ind = g_pdf_tbl.last then
6928       --
6929         commit;
6930       --
6931       end if;
6932     --
6933     end if;
6934   --
6935     -- when index is reached to max, value will be null
6936     g_pdf_ind := g_pdf_tbl.next(g_pdf_ind);
6937   --
6938   end if;
6939 --
6940   if g_debug then
6941     hr_utility.set_location(l_proc,1000);
6942   end if;
6943 --
6944 end upload_post;
6945 --
6946 -- -------------------------------------------------------------------------
6947 -- load_deinit
6948 -- -------------------------------------------------------------------------
6949 procedure load_deinit
6950 is
6951 --
6952   l_proc varchar2(80) := c_package||'load_deinit';
6953 --
6954 begin
6955 --
6956   if g_debug then
6957     hr_utility.set_location(l_proc,0);
6958   end if;
6959 --
6960   if nvl(g_load_type,'L') <> 'I'
6961   and nvl(g_ss_call,'N') <> 'Y' then
6962     delete_session;
6963   end if;
6964 --
6965   if g_debug then
6966     hr_utility.set_location(l_proc,1000);
6967   end if;
6968 --
6969 end load_deinit;
6970 --
6971 -- -------------------------------------------------------------------------
6972 -- map_yea_assignment
6973 -- -------------------------------------------------------------------------
6974 -- this is post process run with FNDGFU
6975 -- $FND_TOP/bin/FNDGFU <user>/<pwd>@<db> 0 Y PROGRAM_NAME=PAYKRYPIM PROGRAM_TAG=<bg id>:<target yyyy> PLS_CALLBACK=pay_kr_yea_pdf_pkg.map_yea_assignment /tmp/xx.pdf
6976 procedure map_yea_assignment(
6977   p_file_id in number default null)
6978 is
6979 --
6980   l_proc varchar2(80) := c_package||'map_yea_assignment';
6981 --
6982   l_target_soy date;
6983   l_target_eoy date;
6984 --
6985   l_valid boolean := false;
6986   l_ass_yea_info_id number;
6987   l_file_name fnd_lobs.file_name%type;
6988 --
6989   cursor csr_file
6990   is
6991   select file_id,
6992          file_name
6993   from   fnd_lobs
6994   where  file_id = p_file_id;
6995 --
6996   /* same condition with EmpSearchVO.xml */
6997   /* no need primary flag check for rehire */
6998   cursor csr_map_name(
6999     p_map_file_name in varchar2)
7000   is
7001   select pa.assignment_id,
7002          pp.last_name||pp.first_name emp_name,
7003          substrb(pp.national_identifier,1,6) res_reg_num,
7004          pp.employee_number emp_num
7005   from   per_people_f pp,
7006          per_periods_of_service ppos,
7007          per_assignments_f pa,
7008          hr_organization_information hoi,
7009          per_business_groups_perf pbg
7010   where  pbg.legislation_code = c_legislation_code
7011   and    pbg.business_group_id = nvl(g_business_group_id,pbg.business_group_id)
7012   and    hoi.organization_id = pbg.business_group_id
7013   and    hoi.org_information_context = 'KR_YEA_PDF_SETUP_BG'
7014   and    hoi.org_information1 is not null
7015   and    pa.business_group_id = hoi.organization_id
7016   and    pa.establishment_id = nvl(g_business_place_id,pa.establishment_id)
7017   and    decode(to_char(nvl(g_assignment_set_id,-1)),
7018            '-1','Y',
7019            hr_assignment_set.assignment_in_set(g_assignment_set_id,pa.assignment_id)) = 'Y'
7020   and    pa.assignment_type = 'E'
7021   and    pa.effective_start_date <= g_target_eoy
7022   and    pa.effective_end_date >= g_target_soy
7023   and    ppos.period_of_service_id = pa.period_of_service_id
7024   and    nvl(ppos.final_process_date,g_target_eoy)
7025          between g_target_soy and g_target_eoy
7026   and    pp.person_id = pa.person_id
7027   and    pp.effective_start_date <= g_target_eoy
7028   and    pp.effective_end_date >= g_target_soy
7029   /* fetch latest emp information */
7030   and    not exists(
7031     select null
7032     from   per_people_f pp2
7033     where  pp2.person_id = pa.person_id
7034     and    pp2.effective_start_date <= g_target_eoy
7035     and    pp2.effective_end_date >= g_target_soy
7036     and    pp2.effective_start_date < pp.effective_start_date)
7037   and    ((nvl(g_map_key,'FULL_NAME') = 'FULL_NAME'
7038            and p_map_file_name like pp.last_name||pp.first_name||'('||substrb(pp.national_identifier,1,6)||')%')
7039          or (g_map_key = 'EMPLOYEE_NUMBER'
7040             and substrb(p_map_file_name,1,lengthb(p_map_file_name) - lengthb(c_file_extention)) = pp.employee_number));
7041 --
7042   l_csr_file csr_file%rowtype;
7043   l_csr_map_name csr_map_name%rowtype;
7044 --
7045 begin
7046 --
7047   if g_debug then
7048     hr_utility.set_location(l_proc,0);
7049   end if;
7050 --
7051   if g_target_yyyy is null then
7052   --
7053     g_target_yyyy := to_number(to_char(sysdate,'YYYY'));
7054   --
7055   end if;
7056 --
7057   g_target_soy  := to_date(to_char(g_target_yyyy)||'/01/01','YYYY/MM/DD');
7058   g_target_eoy  := to_date(to_char(g_target_yyyy)||'/12/31','YYYY/MM/DD');
7059 --
7060   open csr_file;
7061   fetch csr_file into l_csr_file;
7062   close csr_file;
7063 --
7064   if l_csr_file.file_id is not null then
7065   --
7066     g_path_delimiter := c_path_delimiter;
7067     if instrb(l_csr_file.file_name,g_path_delimiter) = 0 then
7068     --
7069       g_path_delimiter := c_path_delimiter_win;
7070     --
7071     end if;
7072   --
7073     l_file_name := l_csr_file.file_name;
7074     if instrb(l_file_name,g_path_delimiter,'-1') > 0 then
7075       l_file_name := substrb(l_file_name,instrb(l_file_name,g_path_delimiter,'-1'));
7076     end if;
7077   --
7078     if g_debug then
7079       hr_utility.trace('file name : '||l_file_name);
7080       hr_utility.set_location(l_proc,10);
7081     end if;
7082   --
7083     /* allocate same file to both prev ass and rehired ass in same year */
7084     open csr_map_name(l_file_name);
7085     loop
7086     --
7087       fetch csr_map_name into l_csr_map_name;
7088       exit when csr_map_name%notfound;
7089     --
7090       l_ass_yea_info_id := null;
7091     --
7092       if g_debug then
7093         hr_utility.trace('emp name    : '||l_csr_map_name.emp_name);
7094         hr_utility.trace('res reg num : '||l_csr_map_name.res_reg_num);
7095         hr_utility.trace('emp num     : '||l_csr_map_name.emp_num);
7096         hr_utility.trace('ass id      : '||to_char(l_csr_map_name.assignment_id));
7097       end if;
7098     --
7099       if l_csr_map_name.assignment_id is not null then
7100       --
7101         import_kr_ass_yea(l_csr_map_name.assignment_id,g_target_yyyy,l_csr_file.file_id,null,l_ass_yea_info_id);
7102       --
7103         if g_debug then
7104           hr_utility.trace('ass yea info id : '||to_char(l_ass_yea_info_id));
7105         end if;
7106       --
7107         if l_ass_yea_info_id is not null then
7108         --
7109           hr_utility.trace('valid map : '||l_csr_file.file_name);
7110         --
7111           l_valid := true;
7112         --
7113         end if;
7114       --
7115       end if;
7116     --
7117     end loop;
7118     close csr_map_name;
7119   --
7120     if not l_valid then
7121     --
7122       if nvl(g_remove_pdf,'N') = 'Y' then
7123       --
7124         fnd_gfm.delete_lob(l_csr_file.file_id);
7125       --
7126       end if;
7127     --
7128       hr_utility.trace('invalid map : '||l_csr_file.file_name);
7129     --
7130     end if;
7131   --
7132   else
7133   --
7134     if g_debug then
7135     --
7136       hr_utility.trace('no lob : '||to_char(p_file_id));
7137     --
7138     end if;
7139   --
7140   end if;
7141 --
7142   if g_debug then
7143     hr_utility.set_location(l_proc,1000);
7144   end if;
7145 --
7146 end map_yea_assignment;
7147 --
7148 -- -------------------------------------------------------------------------
7149 -- mass_map_yea_assignment
7150 -- -------------------------------------------------------------------------
7151 -- this is for custom use
7152 procedure mass_map_yea_assignment(
7153   p_business_group_id in number,
7154   p_target_year in number,
7155   p_business_place_id in number,
7156   p_assignment_set_id in number,
7157   p_remove_pdf in varchar2,
7158   p_map_key in varchar2,
7159   p_force_import in varchar2)
7160 is
7161 --
7162   l_proc varchar2(80) := c_package||'mass_map_yea_assignment';
7163 --
7164   l_import_path varchar2(150);
7165 --
7166   l_map_cnt number := 0;
7167 --
7168   cursor csr_mass_new_file
7169   is
7170   select fl.file_id
7171   from   fnd_lobs fl
7172   where  fl.program_name = 'PAYKRYPIM'
7173   and    fl.program_tag = to_char(p_business_group_id)||':'||to_char(p_target_year)
7174   and    not exists(
7175     select null
7176     from   per_kr_assignment_yea_info pkayi
7177     where  pkayi.information_type = 'KR_YEA_ENTRY_STATUS'
7178     and    pkayi.ayi_information_category = 'KR_YEA_ENTRY_STATUS'
7179     and    pkayi.target_year = p_target_year
7180     and    pkayi.ayi_information15 = fnd_number.number_to_canonical(fl.file_id));
7181 --
7182   l_csr_mass_new_file csr_mass_new_file%rowtype;
7183 --
7184 begin
7185 --
7186   if g_debug then
7187     hr_utility.set_location(l_proc,0);
7188   end if;
7189 --
7190   import_init(
7191     p_business_group_id => p_business_group_id,
7192     p_target_year       => p_target_year,
7193     p_business_place_id => p_business_place_id,
7194     p_assignment_set_id => p_assignment_set_id,
7195     p_remove_pdf        => p_remove_pdf,
7196     p_map_key           => p_map_key,
7197     p_force_import      => p_force_import,
7198     p_import_path       => l_import_path);
7199 --
7200   if g_debug then
7201     hr_utility.set_location(l_proc,10);
7202   end if;
7203 --
7204   open csr_mass_new_file;
7205   loop
7206   --
7207     fetch csr_mass_new_file into l_csr_mass_new_file;
7208     exit when csr_mass_new_file%notfound;
7209   --
7210     if g_debug then
7211     --
7212       hr_utility.trace('new file id : '||to_char(l_csr_mass_new_file.file_id));
7213     --
7214     end if;
7215   --
7216     map_yea_assignment(
7217       l_csr_mass_new_file.file_id);
7218   --
7219     l_map_cnt := l_map_cnt + 1;
7220   --
7221   end loop;
7222   close csr_mass_new_file;
7223 --
7224   if g_debug then
7225     hr_utility.trace('map cnt : '||to_char(l_map_cnt));
7226     hr_utility.set_location(l_proc,1000);
7227   end if;
7228 --
7229 end mass_map_yea_assignment;
7230 --
7231 -- -------------------------------------------------------------------------
7232 -- delete_pdf
7233 -- -------------------------------------------------------------------------
7234 procedure delete_pdf(
7235   p_file_id in number,
7236   p_with_status in varchar2 default null)
7237 is
7238 --
7239   l_proc varchar2(80) := c_package||'delete_pdf';
7240 --
7241   cursor csr_file
7242   is
7243   select file_id,
7244          to_number(substrb(program_tag,instrb(program_tag,':',-1)+1)) target_year
7245   from   fnd_lobs
7246   where  file_id = p_file_id;
7247 --
7248   l_csr_file csr_file%rowtype;
7249 --
7250 begin
7251 --
7252   if g_debug then
7253     hr_utility.set_location(l_proc,0);
7254   end if;
7255 --
7256   open csr_file;
7257   fetch csr_file into l_csr_file;
7258   close csr_file;
7259 --
7260   if l_csr_file.file_id is not null then
7261   --
7262     fnd_gfm.delete_lob(l_csr_file.file_id);
7263   --
7264     -- leave status because status is not only about pdf
7265     update per_kr_assignment_yea_info
7266     set   ayi_information14 = decode(p_with_status,'Y',null,ayi_information14),
7267           ayi_information15 = null,
7268           ayi_information16 = decode(p_with_status,'Y',null,ayi_information16),
7269           object_version_number = object_version_number + 1
7270     where information_type = 'KR_YEA_ENTRY_STATUS'
7271     and   ayi_information_category = 'KR_YEA_ENTRY_STATUS'
7272     and   target_year = l_csr_file.target_year
7273     and   ayi_information15 = fnd_number.number_to_canonical(l_csr_file.file_id);
7274   --
7275   end if;
7276 --
7277   if g_debug then
7278     hr_utility.set_location(l_proc,1000);
7279   end if;
7280 --
7281 end delete_pdf;
7282 --
7283 -- -------------------------------------------------------------------------
7284 -- mass_delete_pdf
7285 -- -------------------------------------------------------------------------
7286 -- this is for custom use
7287 procedure mass_delete_pdf(
7288   p_business_group_id in number,
7289   p_target_year in number,
7290   p_with_status in varchar2 default null)
7291 is
7292 --
7293   l_proc varchar2(80) := c_package||'mass_delete_pdf';
7294 --
7295   -- this should include file which does not have map into per_kr_assignment_yea_info
7296   cursor csr_mass_file
7297   is
7298   select file_id
7299   from   fnd_lobs
7300   where  program_name = 'PAYKRYPIM'
7301   and    to_number(substrb(program_tag,0,instrb(program_tag,':')-1)) = p_business_group_id
7302   and    substrb(program_tag,instrb(program_tag,':',-1)+1) = to_char(p_target_year);
7303 --
7304   l_csr_mass_file csr_mass_file%rowtype;
7305 --
7306 begin
7307 --
7308   if g_debug then
7309     hr_utility.set_location(l_proc,0);
7310   end if;
7311 --
7312   open csr_mass_file;
7313   loop
7314   --
7315     fetch csr_mass_file into l_csr_mass_file;
7316     exit when csr_mass_file%notfound;
7317   --
7318     delete_pdf(l_csr_mass_file.file_id,p_with_status);
7319   --
7320   end loop;
7321   close csr_mass_file;
7322 --
7323   if g_debug then
7324     hr_utility.set_location(l_proc,1000);
7325   end if;
7326 --
7327 end mass_delete_pdf;
7328 --
7329 function submit_yea_pdf_upload (
7330         p_bus_grp_id  in  number,
7331         p_year        in  varchar2,
7332         p_bus_plc_id  in  number,
7333         p_asg_id      in  number
7334 ) return number
7335 is
7336 	 l_request_id  number ;
7337 	 p_asg_set_id  number ;
7338   l_proc varchar2(80) := c_package||'submit_yea_pdf_upload';
7339 begin
7340   if g_debug then
7341     hr_utility.set_location(l_proc,0);
7342     hr_utility.trace('p_asg_id: '||p_asg_id);
7343   end if;
7344 
7345         l_request_id := fnd_request.submit_request(
7346                 application => 'PAY',
7347                 program     => 'PAYKRYPUPSS',
7348                 description => 'KR Year End Adjustment PDF Upload SS',
7349                 argument1   => p_bus_grp_id,
7350                 argument2   => p_year,
7351                 argument3   => p_bus_plc_id,
7352                 argument4   => p_asg_id);
7353 
7354       -- Check the status
7355       if l_request_id <> 0 then
7356          commit;
7357       end if;
7358       --
7359   if g_debug then
7360     hr_utility.trace('leaving submit_yea_pdf_upload:l_request_id: '||l_request_id);
7361     hr_utility.set_location(l_proc,1000);
7362   end if;
7363  return l_request_id;
7364 end submit_yea_pdf_upload ;
7365 end pay_kr_yea_pdf_pkg;