[Home] [Help]
PACKAGE BODY: APPS.PAY_IN_TAX_DECLARATION
Source
1 PACKAGE body pay_in_tax_declaration AS
2 /* $Header: pyintaxd.pkb 120.16.12010000.4 2008/08/06 07:29:59 ubhat ship $ */
3 --
4 -- Global Variables Section
5 --
6 g_legislation_code VARCHAR2(3);
7 g_approval_info_type VARCHAR2(40);
8 g_element_value_list t_element_values_tab;
9 g_80dd_values t_entry_details_tab;
10 g_80g_values t_entry_details_tab;
11 g_insurace_values t_entry_details_tab;
12 g_80cce_values t_entry_details_tab;
13 g_list_index NUMBER;
14 g_80dd_index NUMBER;
15 g_80g_index NUMBER;
16 g_insurace_index NUMBER;
17 g_80cce_index NUMBER;
18 g_assignment_id per_all_assignments_f.assignment_id%TYPE;
19 g_index_assignment_id per_all_assignments_f.assignment_id%TYPE;
20 g_is_valid BOOLEAN;
21 g_index_values_valid BOOLEAN;
22 g_package CONSTANT VARCHAR2(100) := 'pay_in_tax_declaration.';
23 g_debug BOOLEAN;
24 --
25 -- The following type is declared to store all
26 -- the inputs values of tax elements.
27 --
28 type t_input_values_rec is record
29 (input_name pay_input_values_f.name%TYPE
30 ,input_value_id pay_input_values_f.input_value_id%TYPE
31 ,input_value pay_element_entry_values.screen_entry_value%TYPE);
32
33 type t_input_values_tab is table of t_input_values_rec
34 index by binary_integer;
35 --
36 --------------------------------------------------------------------------
37 -- --
38 -- Name : IS_LOCKING_PERIOD --
39 -- Type : PROCEDURE --
40 -- Access : Public --
41 -- Description : The procedure is responsible for returning the --
42 -- freeze period details like start date, along with --
43 -- a flag to indicate if it is the freeze period. --
44 -- --
45 -- Parameters : --
46 -- IN : p_person_id per_people_f.person_id%TYPE --
47 -- OUT : p_locked VARCHAR2 --
48 -- p_lock_start DATE --
49 -- --
50 -- Change History : --
51 --------------------------------------------------------------------------
52 -- Rev# Date Userid Description --
53 --------------------------------------------------------------------------
54 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
55 -- 1.0 25-Sep-2007 RSAHARAY Parameter p_person_id replaced with --
56 -- p_assignment_id --
57 -- 1.1 01-Oct-2007 RSAHARAY Reverted to the initial IN parameters --
58 -- Modified the CURSOR --
59 -- csr_locking_period_details --
60 --------------------------------------------------------------------------
61 PROCEDURE is_locking_period
62 (p_person_id IN per_people_f.person_id%TYPE
63 ,p_locked OUT NOCOPY VARCHAR2
64 ,p_lock_start OUT NOCOPY DATE)
65 IS
66 --
67 CURSOR csr_locking_period_details(c_person_id IN NUMBER)
68 IS
69 SELECT nvl(org.org_information1, 'N') locking_period
70 , nvl(org.org_information3, 0) window_period
71 , fnd_date.canonical_to_date(org.org_information2) locking_period_start
72 , TRUNC(SYSDATE - start_date) hire_duration
73 FROM hr_organization_information org
74 , per_people_f person
75 , per_assignments_f assign
76 , hr_soft_coding_keyflex scl
77 WHERE org.org_information_context = 'PER_IN_TAX_DECL_DETAILS'
78 AND person.person_id = c_person_id
79 AND assign.person_id = person.person_id
80 AND assign.soft_coding_keyflex_id = scl.soft_coding_keyflex_id
81 AND assign.primary_flag = 'Y'
82 AND org.organization_id = nvl(scl.segment1, person.business_group_id)
83 AND SYSDATE BETWEEN person.effective_start_date
84 AND person.effective_end_date
85 AND SYSDATE BETWEEN assign.effective_start_date
86 AND assign.effective_end_date;
87 --
88 l_proc VARCHAR2(120);
89 l_locking_period VARCHAR2(2);
90 l_window_period NUMBER;
91 l_hire_duration NUMBER;
92 l_procedure VARCHAR(100);
93 l_message VARCHAR2(250);
94 --
95 BEGIN
96 --
97 l_procedure := g_package || 'is_locking_period';
98 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
99
100 IF g_debug THEN
101 pay_in_utils.trace('**************************************************','********************');
102 pay_in_utils.trace('p_person_id',p_person_id);
103 pay_in_utils.trace('**************************************************','********************');
104 END IF;
105 p_locked := 'Y';
106 --
107
108 --
109 OPEN csr_locking_period_details(p_person_id);
110 FETCH csr_locking_period_details INTO l_locking_period
111 , l_window_period
112 , p_lock_start
113 , l_hire_duration;
114 CLOSE csr_locking_period_details;
115 --
116 pay_in_utils.set_location(g_debug, l_proc, 20);
117 --
118 -- If locking period if its a new hire falling within the window period
119 -- if so allow him access to declare his tax. For all other cases deny
120 -- access.
121 -- If declaration period allow access.
122 --
123 IF l_locking_period = 'Y' THEN
124 --
125 -- locking period logic
126 --
127 IF l_hire_duration < l_window_period THEN
128 --
129 pay_in_utils.set_location(g_debug, l_proc, 30);
130 --
131 p_locked := 'N';
132 --
133 END IF;
134 --
135 pay_in_utils.set_location(g_debug, l_proc, 40);
136 --
137 ELSE
138 --
139 -- Declaration period logic.
140 --
141 pay_in_utils.set_location(g_debug, l_proc, 50);
142 --
143 p_locked := 'N';
144 --
145 END IF;
146
147 IF g_debug THEN
148 pay_in_utils.trace('**************************************************','********************');
149 pay_in_utils.trace('p_locked ',p_locked);
150 pay_in_utils.trace('p_lock_start ',p_lock_start);
151 pay_in_utils.trace('**************************************************','********************');
152 END IF;
153
154 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
155
156 --
157 END is_locking_period;
158
159 --------------------------------------------------------------------------
160 -- --
161 -- Name : IS_APPROVED --
162 -- Type : PROCEDURE --
163 -- Access : Public --
164 -- Description : The procedure is responsible for returning the --
165 -- the flag stating if the employee tax declaration --
166 -- details have been approved or not. --
167 -- --
168 -- Parameters : --
169 -- IN : p_person_id per_people_f.person_id%TYPE --
170 -- p_effective_date DATE --
171 -- OUT : p_status VARCHAR2 --
172 -- --
173 -- Change History : --
174 --------------------------------------------------------------------------
175 -- Rev# Date Userid Description --
176 --------------------------------------------------------------------------
177 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
178 --------------------------------------------------------------------------
179 PROCEDURE is_approved
180 (p_person_id IN NUMBER
181 ,p_effective_date IN DATE default null
182 ,p_status OUT NOCOPY VARCHAR2)
183 IS
184 --
185 l_procedure VARCHAR(100);
186 l_message VARCHAR2(250);
187 l_effective_date DATE;
188 l_assignment_id per_assignments_f.assignment_id%TYPE;
189 l_extra_info_id per_assignment_extra_info.assignment_extra_info_id%TYPE;
190 --
191 BEGIN
192 --
193 l_procedure := g_package || 'is_approved';
194 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
195
196 IF g_debug THEN
197 pay_in_utils.trace('**************************************************','********************');
198 pay_in_utils.trace('p_person_id',p_person_id);
199 pay_in_utils.trace('p_effective_date',p_effective_date);
200 pay_in_utils.trace('**************************************************','********************');
201 END IF;
202 --
203 -- Get the currect effective date to be used.
204 --
205 l_effective_date:= pay_in_utils.get_effective_date(p_effective_date);
206 pay_in_utils.trace('l_effective_date ',l_effective_date);
207 pay_in_utils.set_location(g_debug,l_procedure,20);
208 --
209 -- Get the assignment Id for which to find the details.
210 --
211 l_assignment_id := pay_in_utils.get_assignment_id
212 (p_person_id
213 ,l_effective_date);
214 pay_in_utils.trace('l_assignment_id ',l_assignment_id);
215 pay_in_utils.set_location(g_debug,l_procedure,30);
216 --
217 -- Get the approval details for the above assignment ID
218 --
219 p_status := pay_in_tax_declaration.get_approval_status
220 (p_assignment_id => l_assignment_id
221 ,p_tax_year => pay_in_tax_declaration.get_tax_year(l_effective_date)
222 ,p_extra_info_id => l_extra_info_id);
223
224 IF g_debug THEN
225 pay_in_utils.trace('**************************************************','********************');
226 pay_in_utils.trace('p_status ', p_status);
227 pay_in_utils.trace('**************************************************','********************');
228 END IF;
229
230 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
231
232
233 END is_approved;
234
235 --------------------------------------------------------------------------
236 -- --
237 -- Name : GET_CITY_TYPE --
238 -- Type : FUNCTION --
239 -- Access : Public --
240 -- Description : The function is responsible for quering the city --
241 -- type of the primary address of the employee if the --
242 -- primary address is not available then return NA. --
243 -- --
244 -- Parameters : --
245 -- IN : p_person_id per_people_f.person_id%TYPE --
246 -- p_effective_date DATE --
247 -- RETURN : VARCHAR2 --
248 -- --
249 -- Change History : --
250 --------------------------------------------------------------------------
251 -- Rev# Date Userid Description --
252 --------------------------------------------------------------------------
253 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
254 --------------------------------------------------------------------------
255 FUNCTION get_city_type
256 (p_person_id IN NUMBER
257 ,p_effective_date IN DATE)
258 RETURN varchar2
259 IS
260 --
261 -- Cursor to get the city type from per_addresses
262 --
263 CURSOR csr_city_type
264 IS
265 SELECT add_information16
266 FROM per_addresses
267 WHERE person_id = p_person_id
268 AND primary_flag = 'Y'
269 AND style = 'IN'
270 AND p_effective_date BETWEEN date_from
271 AND NVL(date_to, hr_general.end_of_time);
272 --
273 l_lookup_code hr_lookups.lookup_code%TYPE;
274 l_procedure VARCHAR(100);
275 l_message VARCHAR2(250);
276
277 --
278 BEGIN
279 --
280 l_procedure := g_package || 'get_city_type';
281 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
282
283 IF g_debug THEN
284 pay_in_utils.trace('**************************************************','********************');
285 pay_in_utils.trace('p_person_id',p_person_id);
286 pay_in_utils.trace('p_effective_date',p_effective_date);
287 pay_in_utils.trace('**************************************************','********************');
288 END IF;
289 --
290 -- Comments should be of this form
291 --
292 OPEN csr_city_type;
293 FETCH csr_city_type INTO l_lookup_code;
294 --
295 IF csr_city_type%NOTFOUND THEN
296 l_lookup_code := 'NA';
297 pay_in_utils.trace('l_lookup_code ',l_lookup_code);
298 pay_in_utils.set_location(g_debug,l_procedure,20);
299 END IF;
300 --
301 CLOSE csr_city_type;
302 --
303 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
304
305 IF g_debug THEN
306 pay_in_utils.trace('**************************************************','********************');
307 pay_in_utils.trace('Decoded Lookup Code',hr_general.decode_lookup('IN_CITY_TYPE', l_lookup_code));
308 pay_in_utils.trace('**************************************************','********************');
309 END IF;
310
311
312 return hr_general.decode_lookup('IN_CITY_TYPE', l_lookup_code);
313
314
315
316 END get_city_type;
317
318 --------------------------------------------------------------------------
319 -- --
320 -- Name : GET_TAX_YEAR --
321 -- Type : FUNCTION --
322 -- Access : Public --
323 -- Description : The function is responsible returning the tax year --
324 -- created based on the effective date passed to it. --
325 -- --
326 -- Parameters : --
327 -- IN : p_effective_date DATE --
328 -- RETURN : VARCHAR2 --
329 -- --
330 -- Change History : --
331 --------------------------------------------------------------------------
332 -- Rev# Date Userid Description --
333 --------------------------------------------------------------------------
334 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
335 --------------------------------------------------------------------------
336 FUNCTION get_tax_year(p_effective_date IN DATE)
337 RETURN VARCHAR2
338 IS
339 --
340 l_procedure VARCHAR(100);
341 l_message VARCHAR2(250);
342 l_year NUMBER;
343 l_month NUMBER;
344 --
345 BEGIN
346 --
347 l_procedure := g_package || 'get_tax_year';
348 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
349
350 IF g_debug THEN
351 pay_in_utils.trace('**************************************************','********************');
352 pay_in_utils.trace('p_effective_date',p_effective_date);
353 pay_in_utils.trace('**************************************************','********************');
354 END IF;
355 --
356 -- Get the year and month for the effective date
357 --
358 l_year := to_number(to_char(p_effective_date, 'YYYY'));
359 l_month := to_number(to_char(p_effective_date, 'MM'));
360 pay_in_utils.trace('l_year ',l_year);
361 pay_in_utils.set_location(g_debug,l_procedure,20);
362 pay_in_utils.trace('l_month ',l_month);
363 pay_in_utils.set_location(g_debug,l_procedure,30);
364 --
365 -- If it is Jan, Feb or Mar it is current_year-1 and current_year.
366 --
367 IF l_month in (1, 2, 3) THEN
368 --
369 pay_in_utils.set_location(g_debug,l_procedure,40);
370 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,50);
371 RETURN (to_char(l_year-1)||'-'||to_char(l_year));
372 --
373 ELSE
374 --
375 -- Else it is current_year and current_year + 1
376 --
377 pay_in_utils.set_location(g_debug,l_procedure,60);
378 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,80);
379
380 IF g_debug THEN
381 pay_in_utils.trace('**************************************************','********************');
382 pay_in_utils.trace('Tax Year',(to_char(l_year)||'-'||to_char(l_year+1)));
383 pay_in_utils.trace('**************************************************','********************');
384 END IF;
385
386 RETURN (to_char(l_year)||'-'||to_char(l_year+1));
387 --
388 END IF;
389 --
390
391
392 END get_tax_year;
393
394 --------------------------------------------------------------------------
395 -- --
396 -- Name : GET_APPROVAL_STATUS --
397 -- Type : FUNCTION --
398 -- Access : Public --
399 -- Description : The procedure is responsible for returning the --
400 -- the flag stating if the employee tax declaration --
401 -- details have been approved or not. . --
402 -- --
403 -- Parameters : --
404 -- IN : p_assignment_id per_assignments_f.assignment_id --
405 -- p_tax_year VARCHAR2 --
406 -- p_extra_info_id assignment_extra_info_id --
407 -- RETURN : VARCHAR2 --
408 -- --
409 -- Change History : --
410 --------------------------------------------------------------------------
411 -- Rev# Date Userid Description --
412 --------------------------------------------------------------------------
413 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
414 --------------------------------------------------------------------------
415 FUNCTION get_approval_status
416 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
417 ,p_tax_year IN VARCHAR2
418 ,p_extra_info_id OUT NOCOPY per_assignment_extra_info.assignment_extra_info_id%TYPE)
419 RETURN VARCHAR2
420 IS
421 --
422 CURSOR csr_approval_details
423 IS
424 SELECT assignment_extra_info_id
425 , aei_information2 flag
426 FROM per_assignment_extra_info
427 WHERE assignment_id = p_assignment_id
428 AND information_type = g_approval_info_type
429 AND aei_information1 = p_tax_year
430 AND aei_information_category = g_approval_info_type;
431 --
432 l_found VARCHAR2(2);
433 l_procedure VARCHAR(100);
434 l_message VARCHAR2(250);
435
436 --
437 BEGIN
438 --
439 l_procedure := g_package || 'get_approval_status';
440 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
441
442 IF g_debug THEN
443 pay_in_utils.trace('**************************************************','********************');
444 pay_in_utils.trace('p_assignment_id',p_assignment_id);
445 pay_in_utils.trace('p_tax_year',p_tax_year);
446 pay_in_utils.trace('**************************************************','********************');
447 END IF;
448 --
449 OPEN csr_approval_details;
450 FETCH csr_approval_details INTO p_extra_info_id, l_found;
451 CLOSE csr_approval_details;
452 --
453 IF g_debug THEN
454 pay_in_utils.trace('**************************************************','********************');
455 pay_in_utils.trace('l_found',l_found);
456 pay_in_utils.trace('p_extra_info_id',p_extra_info_id);
457 pay_in_utils.trace('**************************************************','********************');
458 END IF;
459
460 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,20);
461
462 RETURN l_found;
463
464
465
466 --
467 END get_approval_status;
468
469 --------------------------------------------------------------------------
470 -- --
471 -- Name : GET_DONATION_TYPE --
472 -- Type : FUNCTION --
473 -- Access : Public --
474 -- Description : The function has the same code which is used to --
475 -- validate teh donation type details entered. Further --
476 -- is used to validate the same in self-service --
477 -- --
478 -- Parameters : --
479 -- IN : p_lookup_code VARCHAR2 --
480 -- RETURN : pay_user_column_instances_f.value%TYPE --
481 -- --
482 -- Change History : --
483 --------------------------------------------------------------------------
484 -- Rev# Date Userid Description --
485 --------------------------------------------------------------------------
486 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
487 --------------------------------------------------------------------------
488 FUNCTION get_donation_type(p_lookup_code IN VARCHAR2)
489 RETURN pay_user_column_instances_f.value%TYPE
490 IS
491 --
492 CURSOR csr_get_meaning
493 IS
494 SELECT cinstances.value
495 FROM pay_user_tables utab
496 , pay_user_columns ucols
497 , pay_user_rows_f urows
498 , pay_user_column_instances_f cinstances
499 WHERE utab.user_table_id = ucols.user_table_id
500 AND utab.user_table_id = urows.user_table_id
501 AND ucols.user_column_id = cinstances.user_column_id
502 AND urows.user_row_id = cinstances.user_row_id
503 AND utab.user_table_name = 'PER_IN_DONATION_DETAILS'
504 AND utab.legislation_code = 'IN'
505 AND ucols.user_column_name = 'Donation Type'
506 AND urows.row_low_range_or_name = p_lookup_code;
507 --
508 l_meaning pay_user_column_instances_f.value%TYPE;
509 l_procedure VARCHAR(100);
510 l_message VARCHAR2(250);
511
512 --
513 BEGIN
514 --
515 l_procedure := g_package || 'get_donation_type';
516 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
517
518 IF g_debug THEN
519 pay_in_utils.trace('**************************************************','********************');
520 pay_in_utils.trace('p_lookup_code',p_lookup_code);
521 pay_in_utils.trace('**************************************************','********************');
522 END IF;
523
524 OPEN csr_get_meaning;
525 FETCH csr_get_meaning INTO l_meaning;
526 CLOSE csr_get_meaning;
527
528 IF g_debug THEN
529 pay_in_utils.trace('**************************************************','********************');
530 pay_in_utils.trace('l_meaning',l_meaning);
531 pay_in_utils.trace('**************************************************','********************');
532 END IF;
533
534 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
535
536 RETURN l_meaning;
537
538
539 END get_donation_type;
540
541 --------------------------------------------------------------------------
542 -- --
543 -- Name : GET_PLANNED_VALUE --
544 -- Type : FUNCTION --
545 -- Access : Public --
546 -- Description : The function calculates the value of an element --
547 -- entries's input value on a date which is before the --
548 -- freeze date for the financial year. --
549 -- --
550 -- Parameters : --
551 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
552 -- p_actual_value VARCHAR2 --
553 -- p_ele_entry_id element_entry_id%TYPE --
554 -- p_input_value_id input_value_id%TYPE --
555 -- RETURN : VARCHAR2 --
556 -- --
557 -- Change History : --
558 --------------------------------------------------------------------------
559 -- Rev# Date Userid Description --
560 --------------------------------------------------------------------------
561 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
562 --------------------------------------------------------------------------
563 FUNCTION get_planned_value
564 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
565 ,p_actual_value IN VARCHAR2
566 ,p_ele_entry_id IN pay_element_entries_f.element_entry_id%TYPE
567 ,p_input_value_id IN pay_input_values_f.input_value_id%TYPE)
568 RETURN VARCHAR2
569 IS
570 --
571 CURSOR csr_entry_value(c_effective_date IN DATE)
572 IS
573 SELECT screen_entry_value
574 FROM pay_element_entry_values_f
575 WHERE element_entry_id = p_ele_entry_id
576 AND input_value_id = p_input_value_id
577 AND c_effective_date BETWEEN effective_start_date
578 AND effective_end_date;
579 --
580 l_procedure VARCHAR(100);
581 l_message VARCHAR2(250);
582 l_value pay_element_entry_values.screen_entry_value%TYPE;
583 l_locked VARCHAR2(2);
584 l_date_start DATE;
585 --
586 BEGIN
587
588 l_procedure := g_package || 'get_planned_value';
589 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
590
591 IF g_debug THEN
592 pay_in_utils.trace('**************************************************','********************');
593 pay_in_utils.trace('p_assignment_id',p_assignment_id);
594 pay_in_utils.trace('p_actual_value',p_actual_value);
595 pay_in_utils.trace('p_ele_entry_id',p_ele_entry_id);
596 pay_in_utils.trace('p_input_value_id',p_input_value_id);
597 pay_in_utils.trace('**************************************************','********************');
598 END IF;
599 --
600 is_locking_period
601 (p_person_id => pay_in_utils.get_person_id(p_assignment_id)
602 ,p_locked => l_locked
603 ,p_lock_start => l_date_start);
604 --
605 pay_in_utils.set_location(g_debug,l_procedure,20);
606 --
607 IF l_locked = 'N' THEN
608 --
609 pay_in_utils.set_location(g_debug,l_procedure,30);
610 l_value := p_actual_value;
611 --
612 ELSE
613 --
614 pay_in_utils.set_location(g_debug,l_procedure,40);
615 OPEN csr_entry_value(l_date_start-1);
616 FETCH csr_entry_value INTO l_value;
617 CLOSE csr_entry_value;
618
619 pay_in_utils.set_location(g_debug,l_procedure,50);
620
621 IF l_value IS NULL THEN
622 pay_in_utils.set_location(g_debug, l_procedure, 60);
623 OPEN csr_entry_value(SYSDATE);
624 FETCH csr_entry_value INTO l_value;
625 CLOSE csr_entry_value;
626 END IF;
627
628 pay_in_utils.set_location(g_debug, l_procedure, 70);
629 --
630 END IF;
631
632 IF g_debug THEN
633 pay_in_utils.trace('**************************************************','********************');
634 pay_in_utils.trace('l_value',l_value);
635 pay_in_utils.trace('**************************************************','********************');
636 END IF;
637
638 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,80);
639 --
640 RETURN l_value;
641
642
643 END get_planned_value;
644
645 --------------------------------------------------------------------------
646 -- --
647 -- Name : GET_VALUE --
648 -- Type : FUNCTION --
649 -- Access : Public --
650 -- Description : The function calculates the planned and the actual --
651 -- values of the following elements and stores then in --
652 -- the cache when the function is first called on sub- --
653 -- sequent calls it would used the cached value. --
654 -- 1. Rebates under Section 88 --
655 -- 2. Tuition Fee --
656 -- 3. Deductions under Chapter VI A and --
657 -- 4. Other Income --
658 -- --
659 -- Parameters : --
660 -- IN : p_assignment_id NUMBER --
661 -- p_element_name VARCHAR2 --
662 -- p_input_name VARCHAR2 --
663 -- p_effective_date DATE --
664 -- p_actual_value VARCHAR2 --
665 -- RETURN : VARCHAR2 --
666 -- --
667 -- Change History : --
668 --------------------------------------------------------------------------
669 -- Rev# Date Userid Description --
670 --------------------------------------------------------------------------
671 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
672 --------------------------------------------------------------------------
673 FUNCTION get_value
674 (p_assignment_id IN number
675 ,p_element_name IN varchar2
676 ,p_input_name IN varchar2
677 ,p_effective_date IN date
678 ,p_actual_value IN varchar2
679 )
680 RETURN VARCHAR2
681 IS
682 --
683 CURSOR csr_element_details(c_effective_date IN DATE)
684 IS
685 SELECT types.element_name
686 , inputs.name name
687 , value.screen_entry_value planned
688 , value.screen_entry_value actual
689 FROM per_assignments_f assgn
690 , pay_element_links_f link
691 , pay_element_types_f types
692 , pay_element_entries_f entries
693 , pay_element_entry_values_f value
694 , pay_input_values_f inputs
695 WHERE assgn.assignment_id = p_assignment_id
696 AND link.element_link_id = pay_in_utils.get_element_link_id(p_assignment_id
697 ,c_effective_date
698 ,types.element_type_id
699 )
700 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
701 AND link.business_group_id = assgn.business_group_id
702 AND link.element_type_id = types.element_type_id
703 AND types.element_name in ( 'House Rent Information'
704 , 'Rebates under Section 88'
705 , 'Tuition Fee'
706 , 'Deduction under Section 80GG'
707 , 'Deduction under Section 80D'
708 , 'Deduction under Section 80DDB'
709 , 'Deduction under Section 80GGA'
710 , 'Deduction under Section 80E'
711 , 'Deduction under Section 80U' -- Check if it is really required
712 , 'Other Income')
713 AND entries.element_type_id = types.element_type_id
714 AND entries.element_link_id = link.element_link_id
715 AND entries.assignment_id = assgn.assignment_id
716 AND entries.element_entry_id = value.element_entry_id
717 AND inputs.input_value_id = value.input_value_id
718 AND inputs.element_type_id = types.element_type_id
719 AND c_effective_date BETWEEN assgn.effective_start_date
720 AND assgn.effective_end_date
721 AND c_effective_date BETWEEN link.effective_start_date
722 AND link.effective_end_date
723 AND c_effective_date BETWEEN types.effective_start_date
724 AND types.effective_end_date
725 AND c_effective_date BETWEEN entries.effective_start_date
726 AND entries.effective_end_date
727 AND c_effective_date BETWEEN inputs.effective_start_date
728 AND inputs.effective_end_date
729 AND c_effective_date BETWEEN value.effective_start_date
730 AND value.effective_end_date
731 order by types.element_name, inputs.name;
732 --
733 l_procedure VARCHAR(100);
734 l_message VARCHAR2(250);
735 l_locked VARCHAR2(2);
736 l_date_start DATE;
737 iLoop NUMBER;
738 --
739 BEGIN
740 --
741 l_procedure := g_package || 'get_value';
742 pay_in_utils.set_location(g_debug, 'Entering: '||l_procedure, 10);
743 --
744 IF g_debug THEN
745 pay_in_utils.trace('**************************************************','********************');
746 pay_in_utils.trace('Assignment ID: ',p_assignment_id);
747 pay_in_utils.trace('Element Name: ', p_element_name);
748 pay_in_utils.trace('Input Name: ', p_input_name);
749 pay_in_utils.trace('Effective Date: ', p_effective_date);
750 pay_in_utils.trace('Actual Value? ', p_actual_value);
751 pay_in_utils.trace('**************************************************','********************');
752 END IF;
753 --
754 -- If the data in the global pl/sql table is valid
755 -- then check if the assignment id's are same for
756 -- the data in pl/sql table and the current assignment.
757 --
758 -- This is required in the case of superuser where in the
759 -- same session he might query the details for more than
760 -- one assignments.
761 --
762 IF g_is_valid THEN
763 IF g_assignment_id <> p_assignment_id THEN
764 --
765 -- If the details are invalid requery the details.
766 --
767 pay_in_utils.set_location(g_debug, l_procedure, 20);
768 g_is_valid := false;
769 --
770 END IF;
771 END IF;
772 --
773 IF g_is_valid = false THEN
774 --
775 -- Entering because of either of the following reasons:
776 -- 1) The pl/sql table doesn't have any data(first time).
777 -- 2) Data is being requeried for a different assignment.
778 --
779 pay_in_utils.set_location(g_debug, l_procedure, 30);
780 g_list_index := 0;
781 g_assignment_id := p_assignment_id;
782 --
783 FOR rec_element_details IN csr_element_details(p_effective_date) LOOP
784 --
785 IF g_debug THEN
786 hr_utility.trace(g_list_index||'...Input ->' || rec_element_Details.name ||' ['||rec_element_details.planned||']');
787 END IF;
788 g_element_value_list(g_list_index).element_name := rec_element_details.element_name;
789 g_element_value_list(g_list_index).input_name := rec_element_details.name;
790 g_element_value_list(g_list_index).planned_val := rec_element_details.planned;
791 g_element_value_list(g_list_index).actual_val := rec_element_details.actual;
792 g_list_index := g_list_index + 1;
793 --
794 END LOOP;
795 --
796 pay_in_utils.set_location(g_debug, l_procedure, 40);
797 --
798 is_locking_period
799 (p_person_id => pay_in_utils.get_person_id(p_assignment_id)
800 ,p_locked => l_locked
801 ,p_lock_start => l_date_start);
802 --
803 pay_in_utils.set_location(g_debug, l_procedure, 50);
804 --
805 IF l_locked = 'Y' THEN
806 --
807 pay_in_utils.set_location(g_debug, l_procedure, 60);
808 iLoop := 0;
809 --
810 FOR rec_element_details IN csr_element_details(l_date_start-1) LOOP
811 --
812 pay_in_utils.set_location(g_debug, l_procedure, 70);
813 --
814 IF (g_element_value_list(iLoop).element_name = rec_element_details.element_name
815 AND g_element_value_list(iLoop).input_name = rec_element_details.name) THEN
816 --
817 pay_in_utils.set_location(g_debug, l_procedure, 80);
818 g_element_value_list(iLoop).planned_val := rec_element_details.actual;
819 --
820 END IF;
821 --
822 iLoop := iLoop+1;
823 --
824 END LOOP;
825 --
826 END IF;
827 --
828 END IF;
829
830 IF g_debug THEN
831 hr_utility.trace('List Index: ' || g_list_index);
832 END IF;
833
834 IF g_list_index = 0 THEN
835 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,90);
836 pay_in_utils.trace('**************************************************','********************');
837 return null;
838 ELSE
839 FOR indx IN 0..g_list_index LOOP
840 IF (g_element_value_list(indx).element_name = p_element_name AND
841 g_element_value_list(indx).input_name = p_input_name)
842 THEN
843 IF g_debug THEN
844 hr_utility.trace('...Value[' || g_element_value_list(indx).actual_val || ']');
845 END IF;
846 IF p_actual_value = 'TRUE' THEN
847 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,100);
848 IF g_debug THEN
849 pay_in_utils.trace('**************************************************','********************');
850 pay_in_utils.trace('Actual Value ',g_element_value_list(indx).actual_val);
851 pay_in_utils.trace('**************************************************','********************');
852 END IF;
853 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,110);
854 return g_element_value_list(indx).actual_val;
855
856 ELSE
857 IF g_debug THEN
858 pay_in_utils.trace('**************************************************','********************');
859 pay_in_utils.trace('Planned Value ',g_element_value_list(indx).planned_val);
860 pay_in_utils.trace('**************************************************','********************');
861 END IF;
862 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,110);
863 return g_element_value_list(indx).planned_val;
864 END IF;
865 END IF;
866 END LOOP;
867 END IF;
868
869 pay_in_utils.trace('**************************************************','********************');
870 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,110);
871 return null;
872
873 END get_value;
874
875 --------------------------------------------------------------------------
876 -- --
877 -- Name : GET_NUMERIC_VALUE --
878 -- Type : FUNCTION --
879 -- Access : Public --
880 -- Description : The function calls get_value internally, but the --
881 -- value returned would be converted to number using --
882 -- to_number and the numeric value returned. --
883 -- --
884 -- Parameters : --
885 -- IN : p_assignment_id NUMBER --
886 -- p_element_name VARCHAR2 --
887 -- p_input_name VARCHAR2 --
888 -- p_effective_date DATE --
889 -- p_actual_value VARCHAR2 --
890 -- RETURN : NUMBER --
891 -- --
892 -- Change History : --
893 --------------------------------------------------------------------------
894 -- Rev# Date Userid Description --
895 --------------------------------------------------------------------------
896 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
897 --------------------------------------------------------------------------
898 FUNCTION get_numeric_value
899 (p_assignment_id IN number
900 ,p_element_name IN varchar2
901 ,p_input_name IN varchar2
902 ,p_effective_date IN date
903 ,p_actual_value IN varchar2
904 )
905 RETURN NUMBER
906 IS
907 l_procedure VARCHAR(100);
908 l_message VARCHAR2(250);
909
910 BEGIN
911
912 l_procedure := g_package || 'get_numeric_value';
913 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
914
915 IF g_debug THEN
916 pay_in_utils.trace('**************************************************','********************');
917 pay_in_utils.trace('Assignment ID: ',p_assignment_id);
918 pay_in_utils.trace('Element Name: ', p_element_name);
919 pay_in_utils.trace('Input Name: ', p_input_name);
920 pay_in_utils.trace('Effective Date: ', p_effective_date);
921 pay_in_utils.trace('Actual Value? ', p_actual_value);
922 pay_in_utils.trace('**************************************************','********************');
923 END IF;
924
925 IF g_debug THEN
926 pay_in_utils.trace('**************************************************','********************');
927 pay_in_utils.trace('Value: ',to_number(get_value(p_assignment_id,p_element_name,p_input_name,p_effective_date,p_actual_value)));
928 pay_in_utils.trace('**************************************************','********************');
929 END IF;
930 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,20);
931 return to_number(get_value
932 (p_assignment_id
933 ,p_element_name
934 ,p_input_name
935 ,p_effective_date
936 ,p_actual_value
937 )
938 );
939
940 END get_numeric_value;
941
942 --------------------------------------------------------------------------
943 -- --
944 -- Name : GET_LAST_UPDATED_DATE --
945 -- Type : FUNCTION --
946 -- Access : Public --
947 -- Description : The is called with one of these values and returns --
948 -- the last updated date of the associated element for --
949 -- element type in question. The valid element types --
950 -- are: --
951 -- 1. HOUSE --
952 -- 2. CHAPTER6 --
953 -- 3. SECTION88 --
954 -- 4. OTHER --
955 -- 5. ALL --
956 -- --
957 -- Parameters : --
958 -- IN : p_person_id NUMBER --
959 -- p_effective_date DATE --
960 -- p_element_type VARCHAR2 --
961 -- RETURN : NUMBER --
962 -- --
963 -- Change History : --
964 --------------------------------------------------------------------------
965 -- Rev# Date Userid Description --
966 --------------------------------------------------------------------------
967 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
968 --------------------------------------------------------------------------
969 FUNCTION get_last_updated_date
970 (p_person_id IN NUMBER
971 ,p_effective_date IN DATE
972 ,p_element_type IN VARCHAR2)
973 RETURN DATE
974 IS
975 CURSOR csr_get_date(c_element_name1 IN VARCHAR2
976 ,c_element_name2 IN VARCHAR2
977 ,c_element_name3 IN VARCHAR2
978 ,c_element_name4 IN VARCHAR2
979 ,c_element_name5 IN VARCHAR2
980 ,c_element_name6 IN VARCHAR2
981 ,c_element_name7 IN VARCHAR2
982 ,c_element_name8 IN VARCHAR2
983 ,c_element_name9 IN VARCHAR2
984 ,c_element_name10 IN VARCHAR2
985 ,c_element_name11 IN VARCHAR2
986 ,c_element_name12 IN VARCHAR2
987 ,c_element_name13 IN VARCHAR2)
988 IS
989 SELECT MAX(entries.last_update_date)
990 FROM pay_element_types_f ele
991 , pay_element_entries_f entries
992 , per_assignments_f assgn
993 WHERE ele.element_name in (c_element_name1
994 ,c_element_name2
995 ,c_element_name3
996 ,c_element_name4
997 ,c_element_name5
998 ,c_element_name6
999 ,c_element_name7
1000 ,c_element_name8
1001 ,c_element_name9
1002 ,c_element_name10
1003 ,c_element_name11
1004 ,c_element_name12
1005 ,c_element_name13)
1006 AND ele.legislation_code = 'IN'
1007 AND assgn.person_id = p_person_id
1008 AND entries.assignment_id = assgn.assignment_id
1009 AND entries.element_type_id = ele.element_type_id
1010 AND p_effective_date BETWEEN assgn.effective_start_date
1011 AND assgn.effective_end_date
1012 AND p_effective_date BETWEEN ele.effective_start_date
1013 AND ele.effective_end_date
1014 AND p_effective_date BETWEEN entries.effective_start_date
1015 AND entries.effective_end_date;
1016 --
1017 l_updated_date DATE;
1018 l_procedure VARCHAR(100);
1019 l_message VARCHAR2(250);
1020 l_element_name1 VARCHAR2(120);
1021 l_element_name2 VARCHAR2(120);
1022 l_element_name3 VARCHAR2(120);
1023 l_element_name4 VARCHAR2(120);
1024 l_element_name5 VARCHAR2(120);
1025 l_element_name6 VARCHAR2(120);
1026 l_element_name7 VARCHAR2(120);
1027 l_element_name8 VARCHAR2(120);
1028 l_element_name9 VARCHAR2(120);
1029 l_element_name10 VARCHAR2(120);
1030 l_element_name11 VARCHAR2(120);
1031 l_element_name12 VARCHAR2(120);
1032 l_element_name13 VARCHAR2(120);
1033
1034 --
1035 BEGIN
1036 --
1037 l_procedure := g_package || 'get_last_updated_date';
1038 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
1039
1040 IF g_debug THEN
1041 pay_in_utils.trace('**************************************************','********************');
1042 pay_in_utils.trace('p_person_id: ',p_person_id);
1043 pay_in_utils.trace('p_element_type: ', p_element_type);
1044 pay_in_utils.trace('Effective Date: ', p_effective_date);
1045 pay_in_utils.trace('**************************************************','********************');
1046 END IF;
1047
1048 --
1049 IF p_element_type = 'HOUSE' THEN
1050 pay_in_utils.set_location(g_debug, l_procedure, 20);
1051 l_element_name1 := 'House Rent Information';
1052 ELSIF p_element_type = 'CHAPTER6' THEN
1053 pay_in_utils.set_location(g_debug, l_procedure, 30);
1054 l_element_name1 := 'Deduction under Section 80GG';
1055 l_element_name2 := 'Deduction under Section 80DD';
1056 l_element_name3 := 'Deduction under Section 80G';
1057 l_element_name4 := 'Deduction under Section 80D';
1058 l_element_name5 := 'Deduction under Section 80DDB';
1059 l_element_name6 := 'Deduction under Section 80E';
1060 l_element_name7 := 'Deduction under Section 80GGA';
1061 l_element_name8 := 'Deduction under Section 80CCE';
1062 l_element_name9 := 'Life Insurance Premium';
1063 ELSIF p_element_type = 'SECTION88' THEN
1064 pay_in_utils.set_location(g_debug, l_procedure, 40);
1065 -- l_element_name1 := 'Rebates under Section 88';
1066 -- l_element_name2 := 'Tuition Fee';
1067 -- l_element_name3 := 'Life Insurance Premium';
1068 ELSIF p_element_type = 'OTHER' THEN
1069 pay_in_utils.set_location(g_debug, l_procedure, 50);
1070 l_element_name1 := 'Other Income';
1071 ELSIF p_element_type = 'ALL' THEN
1072 pay_in_utils.set_location(g_debug, l_procedure, 60);
1073 l_element_name1 := 'House Rent Information';
1074 l_element_name2 := 'Deduction under Section 80GG';
1075 l_element_name3 := 'Deduction under Section 80DD';
1076 l_element_name4 := 'Deduction under Section 80G';
1077 l_element_name5 := 'Rebates under Section 88';
1078 l_element_name6 := 'Tuition Fee';
1079 l_element_name7 := 'Life Insurance Premium';
1080 l_element_name8 := 'Other Income';
1081 l_element_name9 := 'Deduction under Section 80D';
1082 l_element_name10 := 'Deduction under Section 80DDB';
1083 l_element_name11 := 'Deduction under Section 80E';
1084 l_element_name12 := 'Deduction under Section 80GGA';
1085 l_element_name13 := 'Deduction under Section 80CCE';
1086 ELSE
1087 pay_in_utils.set_location(g_debug, l_procedure, 70);
1088 return null;
1089 END IF;
1090 --
1091 pay_in_utils.set_location(g_debug, l_procedure, 80);
1092 --
1093 OPEN csr_get_date(l_element_name1, l_element_name2, l_element_name3, l_element_name4,
1094 l_element_name5, l_element_name6, l_element_name7, l_element_name8,
1095 l_element_name9, l_element_name10, l_element_name11, l_element_name12, l_element_name13);
1096 FETCH csr_get_date INTO l_updated_date;
1097 CLOSE csr_get_date;
1098 --
1099 IF g_debug THEN
1100 pay_in_utils.trace('**************************************************','********************');
1101 pay_in_utils.trace('l_updated_date',l_updated_date);
1102 pay_in_utils.trace('**************************************************','********************');
1103 END IF;
1104
1105 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,90);
1106 --
1107 RETURN l_updated_date;
1108
1109
1110 END get_last_updated_date;
1111
1112
1113
1114
1115
1116
1117
1118 PROCEDURE get_element_entry_ids
1119 (p_element_type_id IN pay_element_types_f.element_type_id%TYPE
1120 ,p_effective_date IN DATE
1121 ,p_expected_entries IN NUMBER
1122 ,p_input_values OUT NOCOPY t_input_values_tab)
1123 IS
1124
1125 CURSOR csr_element_inputs
1126 (c_element_type_id IN pay_element_types_f.element_type_id%TYPE)
1127 IS
1128 SELECT inputs.name
1129 , inputs.input_value_id
1130 FROM pay_element_types_f types
1131 , pay_input_values_f inputs
1132 WHERE types.element_type_id = c_element_type_id
1133 AND inputs.element_type_id = types.element_type_id
1134 AND inputs.legislation_code = g_legislation_code
1135 AND sysdate BETWEEN types.effective_start_date
1136 AND types.effective_end_date
1137 AND sysdate BETWEEN inputs.effective_start_date
1138 AND inputs.effective_end_date
1139 ORDER BY inputs.display_sequence;
1140 --
1141 l_count NUMBER;
1142 l_procedure VARCHAR(100);
1143 l_message VARCHAR2(250);
1144 --
1145 BEGIN
1146 --
1147 l_procedure := g_package || 'get_element_entry_ids';
1148 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
1149
1150 IF g_debug THEN
1151 pay_in_utils.trace('**************************************************','********************');
1152 pay_in_utils.trace('p_expected_entries: ',p_expected_entries);
1153 pay_in_utils.trace('p_element_type_id: ', p_element_type_id);
1154 pay_in_utils.trace('Effective Date: ', p_effective_date);
1155 pay_in_utils.trace('**************************************************','********************');
1156 END IF;
1157 --
1158 -- Query the details to get all the entries for the
1159 -- element type in question and then store it in the pl/sql table.
1160 l_count := 0;
1161 FOR rec_input_values IN csr_element_inputs(p_element_type_id)
1162 LOOP
1163 --
1164 pay_in_utils.set_location(g_debug, l_procedure, 20);
1165
1166 p_input_values(l_count).input_value_id := rec_input_values.input_value_id;
1167 IF g_debug THEN
1168 pay_in_utils.trace('Input Name: '|| rec_input_values.name,p_input_values(l_count).input_value_id);
1169 END IF;
1170 l_count := l_count+1;
1171 --
1172 END LOOP;
1173 --
1174 pay_in_utils.set_location(g_debug, l_procedure, 30);
1175 --
1176 IF l_count < p_expected_entries THEN
1177 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
1178 RETURN;
1179 END IF;
1180 --
1181
1182
1183 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,50);
1184
1185 END get_element_entry_ids;
1186
1187
1188
1189
1190 PROCEDURE get_entry_details
1191 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
1192 ,p_element_name IN pay_element_types_f.element_name%TYPE
1193 ,p_effective_date IN DATE
1194 ,p_element_type_id OUT NOCOPY pay_element_types_f.element_type_id%TYPE
1195 ,p_element_link_id OUT NOCOPY pay_element_links_f.element_link_id%TYPE
1196 ,p_element_entry_id OUT NOCOPY pay_element_entries_f.element_entry_id%TYPE
1197 ,p_expected_entries IN NUMBER
1198 ,p_business_group_id OUT NOCOPY per_business_groups.business_group_id%TYPE
1199 ,p_object_version_number OUT NOCOPY pay_element_entries_f.object_version_number%TYPE
1200 ,p_input_values OUT NOCOPY t_input_values_tab
1201 )
1202 IS
1203 --
1204 CURSOR csr_element_entry
1205 (c_element_link_id IN pay_element_links_f.element_link_id%TYPE
1206 ,c_assignment_id IN per_assignments_f.assignment_id%TYPE)
1207 IS
1208 SELECT entries.element_entry_id
1209 , links.element_type_id
1210 , links.business_group_id
1211 , entries.object_version_number
1212 FROM pay_element_entries_f entries
1213 , pay_element_links_f links
1214 WHERE entries.element_link_id = links.element_link_id
1215 AND entries.assignment_id = c_assignment_id
1216 AND links.element_link_id = c_element_link_id
1217 AND links.element_type_id = entries.element_type_id
1218 AND p_effective_date BETWEEN entries.effective_start_date
1219 AND entries.effective_end_date
1220 AND p_effective_date BETWEEN links.effective_start_date
1221 AND links.effective_end_date;
1222 --
1223 CURSOR csr_element_details
1224 (c_element_link_id IN pay_element_links_f.element_link_id%TYPE)
1225 IS
1226 SELECT links.element_type_id
1227 , links.business_group_id
1228 FROM pay_element_links_f links
1229 WHERE links.element_link_id = c_element_link_id
1230 AND p_effective_date BETWEEN links.effective_start_date
1231 AND links.effective_end_date;
1232 --
1233 l_procedure VARCHAR(100);
1234 l_message VARCHAR2(250);
1235 l_status VARCHAR2(30);
1236
1237 --
1238 BEGIN
1239 --
1240 l_procedure := g_package || 'get_entry_details';
1241 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
1242
1243 IF g_debug THEN
1244 pay_in_utils.trace('**************************************************','********************');
1245 pay_in_utils.trace('p_assignment_id: ',p_assignment_id);
1246 pay_in_utils.trace('p_element_name: ', p_element_name);
1247 pay_in_utils.trace('Effective Date: ', p_effective_date);
1248 pay_in_utils.trace('p_expected_entries: ', p_expected_entries);
1249 pay_in_utils.trace('**************************************************','********************');
1250 END IF;
1251 --
1252 -- Query the link details for the assignment
1253 -- If link doesn't exists then error out.
1254 l_status := pay_in_utils.chk_element_link
1255 (p_element_name => p_element_name
1256 ,p_assignment_id => p_assignment_id
1257 ,p_effective_date => p_effective_date
1258 ,p_element_link_id => p_element_link_id);
1259 --
1260 pay_in_utils.set_location(g_debug,l_procedure,20);
1261 --
1262 IF l_status <> 'SUCCESS' THEN
1263 --
1264 hr_utility.set_message(800, 'PER_IN_MISSING_LINK');
1265 hr_utility.set_message_token('ELEMENT_NAME',p_element_name);
1266 hr_utility.raise_error;
1267 --
1268 END IF;
1269 --
1270 pay_in_utils.set_location(g_debug,l_procedure,30);
1271 --
1272 -- Query the details of the element required to update/create
1273 -- the element entries.
1274 OPEN csr_element_entry(p_element_link_id, p_assignment_id);
1275 FETCH csr_element_entry INTO p_element_entry_id
1276 , p_element_type_id
1277 , p_business_group_id
1278 , p_object_version_number;
1279 --
1280 IF csr_element_entry%NOTFOUND THEN
1281 --
1282 pay_in_utils.set_location(g_debug, 'Alternate logic: ' || l_procedure, 40);
1283 OPEN csr_element_details(p_element_link_id);
1284 FETCH csr_element_details INTO p_element_type_id, p_business_group_id;
1285 CLOSE csr_element_details;
1286 --
1287 END IF;
1288 --
1289 CLOSE csr_element_entry;
1290 --
1291 pay_in_utils.set_location(g_debug,l_procedure,40);
1292 --
1293 IF g_debug THEN
1294 pay_in_utils.trace('**************************************************','********************');
1295 pay_in_utils.trace('Element Link ID: ', p_element_link_id);
1296 pay_in_utils.trace('Element Type ID: ', p_element_type_id);
1297 pay_in_utils.trace('Element Entry ID: ', p_element_entry_id);
1298 pay_in_utils.trace('Business Group : ', p_business_group_id);
1299 pay_in_utils.trace('p_object_version_number : ', p_object_version_number);
1300 pay_in_utils.trace('**************************************************','********************');
1301 --
1302 END IF;
1303 --
1304 pay_in_utils.set_location(g_debug,l_procedure,50);
1305 --
1306 -- Fetch all the input IDs into the pl/sql table
1307 -- These IDs would be used by the calling function.
1308 get_element_entry_ids(p_element_type_id
1309 ,p_effective_date
1310 ,p_expected_entries
1311 ,p_input_values);
1312 --
1313 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,60);
1314
1315 END get_entry_details;
1316
1317
1318
1319
1320 FUNCTION get_update_mode
1321 (p_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE
1322 ,p_effective_date IN DATE)
1323 RETURN VARCHAR2
1324 IS
1325 --
1326 l_procedure VARCHAR(100);
1327 l_message VARCHAR2(250);
1328 l_correction BOOLEAN;
1329 l_update BOOLEAN;
1330 l_update_override BOOLEAN;
1331 l_update_change_insert BOOLEAN;
1332 l_update_mode VARCHAR2(30);
1333 --
1334 BEGIN
1335 --
1336 l_procedure := g_package || 'get_update_mode';
1337 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
1338
1339 IF g_debug THEN
1340 pay_in_utils.trace('**************************************************','********************');
1341 pay_in_utils.trace('p_element_entry_id: ',p_element_entry_id);
1342 pay_in_utils.trace('Effective Date: ', p_effective_date);
1343 pay_in_utils.trace('**************************************************','********************');
1344 END IF;
1345 --
1346 -- Use the dt_api to get the valid values for the update mode
1347 dt_api.find_dt_upd_modes
1348 (p_effective_date => p_effective_date
1349 ,p_base_table_name => 'pay_element_entries_f'
1350 ,p_base_key_column => 'element_entry_id'
1351 ,p_base_key_value => p_element_entry_id
1352 ,p_correction => l_correction
1353 ,p_update => l_update
1354 ,p_update_override => l_update_override
1355 ,p_update_change_insert=> l_update_change_insert);
1356 --
1357 pay_in_utils.set_location(g_debug, l_procedure, 20);
1358 --
1359 -- Check which flag has been set by DT_API.Find_DT_Upd_Modes
1360 -- Correction is always set to true hence check it's value at last
1361 -- as default. If effective start date is not same as effective date, then
1362 -- If any future row exists for element, then Update is false and Update
1363 -- override and Update Change Insert is set to true.
1364 -- If there are no future row exists then Update mode is used.
1365 --
1366 -- No need to use update_change_insert mode as both update_override
1367 -- and update_change_insert are always set to true or false.
1368 IF l_update THEN
1369 l_update_mode := hr_api.g_update;
1370 ELSIF l_update_override THEN
1371 l_update_mode := hr_api.g_update_override;
1372 ELSIF l_correction THEN
1373 l_update_mode := hr_api.g_correction;
1374 ELSE
1375 l_update_mode := hr_api.g_correction;
1376 END IF;
1377 --
1378
1379 IF g_debug THEN
1380 pay_in_utils.trace('**************************************************','********************');
1381 pay_in_utils.trace('l_update_mode : ',l_update_mode);
1382 pay_in_utils.trace('**************************************************','********************');
1383 END IF;
1384
1385 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,30);
1386
1387 RETURN l_update_mode;
1388
1389
1390 END get_update_mode;
1391
1392 --------------------------------------------------------------------------
1393 -- --
1394 -- Name : DECLARE_HOUSE_RENT --
1395 -- Type : PROCEDURE --
1396 -- Access : Public --
1397 -- Description : The procedure is responsible for storing the detials--
1398 -- in 'House Rent Information' element. --
1399 -- --
1400 -- Parameters : --
1401 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
1402 -- p_apr NUMBER --
1403 -- p_may NUMBER --
1404 -- p_jun NUMBER --
1405 -- p_jul NUMBER --
1406 -- p_aug NUMBER --
1407 -- p_sep NUMBER --
1408 -- p_oct NUMBER --
1409 -- p_nov NUMBER --
1410 -- p_dec NUMBER --
1411 -- p_jan NUMBER --
1412 -- p_feb NUMBER --
1413 -- p_mar NUMBER --
1414 -- p_effective_date DATE --
1415 -- OUT : p_warnings BOOLEAN --
1416 -- --
1417 -- Change History : --
1418 --------------------------------------------------------------------------
1419 -- Rev# Date Userid Description --
1420 --------------------------------------------------------------------------
1421 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
1422 --------------------------------------------------------------------------
1423 PROCEDURE declare_house_rent
1424 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
1425 ,p_apr IN NUMBER
1426 ,p_may IN NUMBER
1427 ,p_jun IN NUMBER
1428 ,p_jul IN NUMBER
1429 ,p_aug IN NUMBER
1430 ,p_sep IN NUMBER
1431 ,p_oct IN NUMBER
1432 ,p_nov IN NUMBER
1433 ,p_dec IN NUMBER
1434 ,p_jan IN NUMBER
1435 ,p_feb IN NUMBER
1436 ,p_mar IN NUMBER
1437 ,p_effective_date IN DATE DEFAULT NULL
1438 ,p_warnings OUT NOCOPY BOOLEAN)
1439 IS
1440 --
1441 l_procedure VARCHAR(100);
1442 l_message VARCHAR2(250);
1443 l_input_values t_input_values_tab;
1444 l_element_type_id pay_element_types_f.element_type_id%TYPE;
1445 l_element_link_id pay_element_links_f.element_link_id%TYPE;
1446 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
1447 l_business_group_id per_business_groups.business_group_id%TYPE;
1448 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
1449 l_effective_start_date DATE;
1450 l_effective_end_date DATE;
1451 l_effective_date DATE;
1452 l_warnings VARCHAR2(6);
1453 --
1454 BEGIN
1455 --
1456 l_procedure := g_package || 'declare_house_rent';
1457 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
1458
1459 IF g_debug THEN
1460 pay_in_utils.trace('**************************************************','********************');
1461 pay_in_utils.trace('p_assignment_id ',p_assignment_id);
1462 pay_in_utils.trace('p_apr ',p_apr);
1463 pay_in_utils.trace('p_may ',p_may);
1464 pay_in_utils.trace('p_jun ',p_jun);
1465 pay_in_utils.trace('p_jul ',p_jul);
1466 pay_in_utils.trace('p_aug ',p_aug);
1467 pay_in_utils.trace('p_sep ',p_sep);
1468 pay_in_utils.trace('p_oct ',p_oct);
1469 pay_in_utils.trace('p_nov ',p_nov);
1470 pay_in_utils.trace('p_dec ',p_dec);
1471 pay_in_utils.trace('p_jan ',p_jan);
1472 pay_in_utils.trace('p_feb ',p_feb);
1473 pay_in_utils.trace('p_mar ',p_mar);
1474 pay_in_utils.trace('p_effective_date ',p_effective_date);
1475 pay_in_utils.trace('**************************************************','********************');
1476 END IF;
1477 --
1478 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
1479 --
1480 get_entry_details(p_assignment_id => p_assignment_id
1481 ,p_element_name => 'House Rent Information'
1482 ,p_effective_date => l_effective_date
1483 ,p_element_type_id => l_element_type_id
1484 ,p_element_link_id => l_element_link_id
1485 ,p_element_entry_id => l_element_entry_id
1486 ,p_expected_entries => 12
1487 ,p_business_group_id => l_business_group_id
1488 ,p_object_version_number=> l_object_version_number
1489 ,p_input_values => l_input_values
1490 );
1491 --
1492 IF g_debug THEN
1493 pay_in_utils.trace('**************************************************','********************');
1494 pay_in_utils.trace('Element Type ID: ',l_element_type_id);
1495 pay_in_utils.trace('Element Entry ID: ', l_element_entry_id);
1496 pay_in_utils.trace('Business Group ID: ', l_business_group_id);
1497 pay_in_utils.trace('Object Version Number: ', l_object_version_number);
1498 pay_in_utils.trace('**************************************************','********************');
1499 END IF;
1500 --
1501 pay_in_utils.set_location(g_debug, l_procedure, 20);
1502 --
1503 IF l_element_entry_id is null THEN
1504 --
1505 pay_in_utils.set_location(g_debug, l_procedure, 30);
1506 --
1507 -- In this case, we would have to create an element entry to the
1508 -- assignment and return the entry id, the rest would be handled
1509 -- by the update command in the calling procedure.
1510 --
1511 pay_element_entry_api.create_element_entry
1512 (p_effective_date => l_effective_date
1513 ,p_business_group_id => l_business_group_id
1514 ,p_assignment_id => p_assignment_id
1515 ,p_element_link_id => l_element_link_id
1516 ,p_entry_type => 'E'
1517 -- April
1518 ,p_input_value_id1 => l_input_values(0).input_value_id
1519 -- May
1520 ,p_input_value_id2 => l_input_values(1).input_value_id
1521 -- June
1522 ,p_input_value_id3 => l_input_values(2).input_value_id
1523 -- July
1524 ,p_input_value_id4 => l_input_values(3).input_value_id
1525 -- August
1526 ,p_input_value_id5 => l_input_values(4).input_value_id
1527 -- September
1528 ,p_input_value_id6 => l_input_values(5).input_value_id
1529 -- October
1530 ,p_input_value_id7 => l_input_values(6).input_value_id
1531 -- November
1532 ,p_input_value_id8 => l_input_values(7).input_value_id
1533 -- December
1534 ,p_input_value_id9 => l_input_values(8).input_value_id
1535 -- January
1536 ,p_input_value_id10 => l_input_values(9).input_value_id
1537 -- February
1538 ,p_input_value_id11 => l_input_values(10).input_value_id
1539 -- March
1540 ,p_input_value_id12 => l_input_values(11).input_value_id
1541 ,p_entry_value1 => p_apr
1542 ,p_entry_value2 => p_may
1543 ,p_entry_value3 => p_jun
1544 ,p_entry_value4 => p_jul
1545 ,p_entry_value5 => p_aug
1546 ,p_entry_value6 => p_sep
1547 ,p_entry_value7 => p_oct
1548 ,p_entry_value8 => p_nov
1549 ,p_entry_value9 => p_dec
1550 ,p_entry_value10 => p_jan
1551 ,p_entry_value11 => p_feb
1552 ,p_entry_value12 => p_mar
1553 ,p_effective_start_date => l_effective_start_date
1554 ,p_effective_end_date => l_effective_end_date
1555 ,p_element_entry_id => l_element_entry_id
1556 ,p_object_version_number => l_object_version_number
1557 ,p_create_warning => p_warnings
1558 );
1559 --
1560 pay_in_utils.set_location(g_debug, l_procedure, 40);
1561 --
1562 -- End date the entry as of the financial year end date
1563 --
1564 delete_declaration
1565 (p_element_entry_id => l_element_entry_id
1566 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
1567 ,p_warnings => l_warnings);
1568 --
1569 ELSE
1570 --
1571 pay_in_utils.set_location(g_debug, l_procedure, 50);
1572 --
1573 -- An element entry for this element already exists we have to
1574 -- update the element entry with the newly submitted date.
1575 --
1576 pay_element_entry_api.update_element_entry
1577 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
1578 ,l_effective_date)
1579 ,p_effective_date => l_effective_date
1580 ,p_business_group_id => l_business_group_id
1581 ,p_element_entry_id => l_element_entry_id
1582 ,p_object_version_number => l_object_version_number
1583 -- April
1584 ,p_input_value_id1 => l_input_values(0).input_value_id
1585 -- May
1586 ,p_input_value_id2 => l_input_values(1).input_value_id
1587 -- June
1588 ,p_input_value_id3 => l_input_values(2).input_value_id
1589 -- July
1590 ,p_input_value_id4 => l_input_values(3).input_value_id
1591 -- August
1592 ,p_input_value_id5 => l_input_values(4).input_value_id
1593 -- September
1594 ,p_input_value_id6 => l_input_values(5).input_value_id
1595 -- October
1596 ,p_input_value_id7 => l_input_values(6).input_value_id
1597 -- November
1598 ,p_input_value_id8 => l_input_values(7).input_value_id
1599 -- December
1600 ,p_input_value_id9 => l_input_values(8).input_value_id
1601 -- January
1602 ,p_input_value_id10 => l_input_values(9).input_value_id
1603 -- February
1604 ,p_input_value_id11 => l_input_values(10).input_value_id
1605 -- March
1606 ,p_input_value_id12 => l_input_values(11).input_value_id
1607 ,p_entry_value1 => p_apr
1608 ,p_entry_value2 => p_may
1609 ,p_entry_value3 => p_jun
1610 ,p_entry_value4 => p_jul
1611 ,p_entry_value5 => p_aug
1612 ,p_entry_value6 => p_sep
1613 ,p_entry_value7 => p_oct
1614 ,p_entry_value8 => p_nov
1615 ,p_entry_value9 => p_dec
1616 ,p_entry_value10 => p_jan
1617 ,p_entry_value11 => p_feb
1618 ,p_entry_value12 => p_mar
1619 ,p_effective_start_date => l_effective_start_date
1620 ,p_effective_end_date => l_effective_end_date
1621 ,p_update_warning => p_warnings
1622 );
1623 --
1624 pay_in_utils.set_location(g_debug, l_procedure, 60);
1625 --
1626 IF l_effective_end_date <> (pay_in_utils.next_tax_year(l_effective_date)-1)
1627 THEN
1628 --
1629 -- End date the entry as of the financial year end date
1630 --
1631 delete_declaration
1632 (p_element_entry_id =>l_element_entry_id
1633 ,p_effective_date =>pay_in_utils.next_tax_year(l_effective_date)-1
1634 ,p_warnings =>l_warnings);
1635 --
1636 END IF;
1637 --
1638 END IF;
1639 --
1640 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
1641 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
1642 pay_in_utils.set_location(g_debug,l_procedure,70);
1643
1644 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,80);
1645 --
1646 EXCEPTION
1647 WHEN OTHERS THEN
1648 fnd_msg_pub.add_exc_msg
1649 (p_pkg_name => g_package
1650 ,p_procedure_name => 'declare_house_rent'
1651 ,p_error_text => substr(sqlerrm, 1, 240)
1652 );
1653 --
1654 END declare_house_rent;
1655
1656 --------------------------------------------------------------------------
1657 -- --
1658 -- Name : DECLARE_CHAPTER6A --
1659 -- Type : PROCEDURE --
1660 -- Access : Public --
1661 -- Description : The procedure calculates the value of permanent --
1662 -- disability 80u and then stores the detials in the --
1663 -- 'Deductions under Chapter VI A' element. --
1664 -- --
1665 -- Parameters : --
1666 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
1667 -- p_pension_fund_80ccc NUMBER --
1668 -- p_medical_insurance_prem_80d NUMBER --
1669 -- p_sec_80ddb_senior_citizen VARCHAR2 --
1670 -- p_disease_treatment_80ddb NUMBER --
1671 -- p_sec_80d_senior_citizen VARCHAR2 --
1672 -- p_higher_education_loan_80e NUMBER --
1673 -- p_claim_exemp_under_sec_80gg VARCHAR2 --
1674 -- p_donation_for_research_80gga NUMBER --
1675 -- p_int_on_gen_investment_80L NUMBER --
1676 -- p_int_on_securities_80L NUMBER --
1677 -- p_effective_date DATE --
1678 -- OUT : p_warnings BOOLEAN --
1679 -- --
1680 -- Change History : --
1681 --------------------------------------------------------------------------
1682 -- Rev# Date Userid Description --
1683 --------------------------------------------------------------------------
1684 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
1685 --------------------------------------------------------------------------
1686 PROCEDURE declare_chapter6a
1687 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
1688 ,p_pension_fund_80ccc IN NUMBER
1689 ,p_medical_insurance_prem_80d IN NUMBER
1690 ,p_sec_80ddb_senior_citizen IN VARCHAR2
1691 ,p_disease_treatment_80ddb IN NUMBER
1692 ,p_sec_80d_senior_citizen IN VARCHAR2
1693 ,p_higher_education_loan_80e IN NUMBER
1694 ,p_claim_exemp_under_sec_80gg IN VARCHAR2
1695 ,p_donation_for_research_80gga IN NUMBER
1696 ,p_int_on_gen_investment_80L IN NUMBER
1697 ,p_int_on_securities_80L IN NUMBER
1698 ,p_effective_date IN DATE DEFAULT NULL
1699 ,p_warnings OUT NOCOPY BOOLEAN)
1700 IS
1701 --
1702 l_procedure VARCHAR(100);
1703 l_message VARCHAR2(250);
1704 l_disability_proof VARCHAR2(2);
1705 l_permanent_disability_80u NUMBER;
1706 l_input_values t_input_values_tab;
1707 l_element_type_id pay_element_types_f.element_type_id%TYPE;
1708 l_element_link_id pay_element_links_f.element_link_id%TYPE;
1709 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
1710 l_business_group_id per_business_groups.business_group_id%TYPE;
1711 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
1712 l_effective_start_date DATE;
1713 l_effective_end_date DATE;
1714 l_effective_date DATE;
1715 l_endation_date DATE;
1716 l_category VARCHAR2(10);
1717 l_degree NUMBER;
1718 l_warnings VARCHAR2(6);
1719 --
1720 CURSOR get_permanent_disability_80u
1721 IS
1722 SELECT global_value
1723 FROM ff_globals_f
1724 WHERE global_name = 'IN_PERMANENT_PHYSICAL_DISABILITY_80U'
1725 AND legislation_code = g_legislation_code;
1726 BEGIN
1727 --
1728 l_procedure := g_package || 'declare_chapter6a';
1729 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
1730
1731 IF g_debug THEN
1732 pay_in_utils.trace('**************************************************','********************');
1733 pay_in_utils.trace('p_assignment_id',p_assignment_id);
1734 pay_in_utils.trace('p_pension_fund_80ccc',p_pension_fund_80ccc);
1735 pay_in_utils.trace('p_medical_insurance_prem_80d',p_medical_insurance_prem_80d);
1736 pay_in_utils.trace('p_sec_80ddb_senior_citizen',p_sec_80ddb_senior_citizen);
1737 pay_in_utils.trace('p_disease_treatment_80ddb',p_disease_treatment_80ddb);
1738 pay_in_utils.trace('p_sec_80d_senior_citizen',p_sec_80d_senior_citizen);
1739 pay_in_utils.trace('p_higher_education_loan_80e',p_higher_education_loan_80e);
1740 pay_in_utils.trace('p_claim_exemp_under_sec_80gg',p_claim_exemp_under_sec_80gg);
1741 pay_in_utils.trace('p_donation_for_research_80gga',p_donation_for_research_80gga);
1742 pay_in_utils.trace('p_int_on_gen_investment_80L',p_int_on_gen_investment_80L);
1743 pay_in_utils.trace('p_int_on_securities_80L',p_int_on_securities_80L);
1744 pay_in_utils.trace('p_effective_date',p_effective_date);
1745 pay_in_utils.trace('**************************************************','********************');
1746 END IF;
1747 --
1748 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
1749 --
1750 -- Permanent Disability 80u Calculation
1751 -- Permanent disability is calculated based on the details
1752 -- entered in per_disabilities_f by the user. If the
1753 -- disability proof is submitted then only the exemption
1754 -- amount is entered i.e., when l_disability_proof = 'Y'.
1755 l_permanent_disability_80u :=
1756 pay_in_tax_utils.get_disability_details
1757 (p_assignment_id => p_assignment_id
1758 ,p_date_earned => l_effective_date
1759 ,p_disable_catg => l_category
1760 ,p_disable_degree=> l_degree
1761 ,p_disable_proof => l_disability_proof
1762 );
1763 --
1764 l_permanent_disability_80u := 0;
1765 --
1766 IF (l_disability_proof = 'Y' AND l_degree >= 40 AND l_category IN ('BLIND','SA_VIS_IMP','LC','SA_HEA_IMP','LD','07','MI','AU','CP','MD'))
1767 THEN
1768 --
1769 OPEN get_permanent_disability_80u;
1770 FETCH get_permanent_disability_80u INTO l_permanent_disability_80u;
1771 CLOSE get_permanent_disability_80u;
1772 --
1773 END IF;
1774 --
1775
1776 get_entry_details(p_assignment_id => p_assignment_id
1777 ,p_element_name => 'Deductions under Chapter VI A'
1778 ,p_effective_date => l_effective_date
1779 ,p_element_type_id => l_element_type_id
1780 ,p_element_link_id => l_element_link_id
1781 ,p_element_entry_id => l_element_entry_id
1782 ,p_expected_entries => 11
1783 ,p_business_group_id => l_business_group_id
1784 ,p_object_version_number=> l_object_version_number
1785 ,p_input_values => l_input_values
1786 );
1787 --
1788 IF g_debug THEN
1789 pay_in_utils.trace('**************************************************','********************');
1790 pay_in_utils.trace('Element Type ID: ',l_element_type_id);
1791 pay_in_utils.trace('Element Entry ID: ',l_element_entry_id);
1792 pay_in_utils.trace('Business Group ID: ',l_business_group_id);
1793 pay_in_utils.trace('Object Version Number: ',l_object_version_number);
1794 pay_in_utils.trace('**************************************************','********************');
1795 END IF;
1796 --
1797 pay_in_utils.set_location(g_debug, l_procedure, 20);
1798 --
1799 IF l_element_entry_id is null THEN
1800 --
1801 pay_in_utils.set_location(g_debug, l_procedure, 30);
1802 --
1803 --
1804 -- In this case, we would have to create an element entry to the
1805 -- assignment and return the entry id, the rest would be handled
1806 -- by the update command in the calling procedure.
1807 --
1808 pay_element_entry_api.create_element_entry
1809 (p_effective_date => l_effective_date
1810 ,p_business_group_id => l_business_group_id
1811 ,p_assignment_id => p_assignment_id
1812 ,p_element_link_id => l_element_link_id
1813 ,p_entry_type => 'E'
1814 --Pension Fund 80CCC
1815 ,p_input_value_id1 => l_input_values(0).input_value_id
1816 --Medical Insurance Premium 80D
1817 ,p_input_value_id2 => l_input_values(1).input_value_id
1818 --Sec 80DDB Cover Senior Citizen
1819 ,p_input_value_id3 => l_input_values(2).input_value_id
1820 --Disease Treatment 80DDB
1821 ,p_input_value_id4 => l_input_values(3).input_value_id
1822 --Sec 80D Cover Senior Citizen
1823 ,p_input_value_id5 => l_input_values(4).input_value_id
1824 --Higher Education Loan 80E
1825 ,p_input_value_id6 => l_input_values(5).input_value_id
1826 --Claim Exemption under Sec 80GG
1827 ,p_input_value_id7 => l_input_values(6).input_value_id
1828 --Donation for Research 80GGA
1829 ,p_input_value_id8 => l_input_values(7).input_value_id
1830 --Int on Gen Investment 80L
1831 ,p_input_value_id9 => l_input_values(8).input_value_id
1832 --Int on Securities 80L
1833 ,p_input_value_id10 => l_input_values(9).input_value_id
1834 --Permanent Disability 80U
1835 ,p_input_value_id11 => l_input_values(10).input_value_id
1836 ,p_entry_value1 => p_pension_fund_80ccc
1837 ,p_entry_value2 => p_medical_insurance_prem_80d
1838 ,p_entry_value3 => p_sec_80ddb_senior_citizen
1839 ,p_entry_value4 => p_disease_treatment_80ddb
1840 ,p_entry_value5 => p_sec_80d_senior_citizen
1841 ,p_entry_value6 => p_higher_education_loan_80e
1842 ,p_entry_value7 => p_claim_exemp_under_sec_80gg
1843 ,p_entry_value8 => p_donation_for_research_80gga
1844 ,p_entry_value9 => p_int_on_gen_investment_80L
1845 ,p_entry_value10 => p_int_on_securities_80L
1846 ,p_entry_value11 => l_permanent_disability_80u
1847 ,p_effective_start_date => l_effective_start_date
1848 ,p_effective_end_date => l_effective_end_date
1849 ,p_element_entry_id => l_element_entry_id
1850 ,p_object_version_number => l_object_version_number
1851 ,p_create_warning => p_warnings
1852 );
1853 --
1854 pay_in_utils.set_location(g_debug, l_procedure, 40);
1855 --
1856 -- End date the entry as of the financial year end date
1857 --
1858 IF l_disability_proof = 'N' THEN
1859 --
1860 --
1861 pay_in_utils.set_location(g_debug, l_procedure, 45);
1862 --
1863 delete_declaration
1864 (p_element_entry_id => l_element_entry_id
1865 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
1866 ,p_warnings => l_warnings);
1867 --
1868 END IF;
1869 --
1870 ELSE
1871 --
1872 pay_in_utils.set_location(g_debug, l_procedure, 50);
1873 --
1874 --
1875 -- An element entry for this element already exists we have to
1876 -- update the element entry with the newly submitted date.
1877 --
1878 pay_element_entry_api.update_element_entry
1879 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
1880 ,l_effective_date)
1881 ,p_effective_date => l_effective_date
1882 ,p_business_group_id => l_business_group_id
1883 ,p_element_entry_id => l_element_entry_id
1884 ,p_object_version_number => l_object_version_number
1885 --Pension Fund 80CCC
1886 ,p_input_value_id1 => l_input_values(0).input_value_id
1887 --Medical Insurance Premium 80D
1888 ,p_input_value_id2 => l_input_values(1).input_value_id
1889 --Sec 80DDB Cover Senior Citizen
1890 ,p_input_value_id3 => l_input_values(2).input_value_id
1891 --Disease Treatment 80DDB
1892 ,p_input_value_id4 => l_input_values(3).input_value_id
1893 --Sec 80D Cover Senior Citizen
1894 ,p_input_value_id5 => l_input_values(4).input_value_id
1895 --Higher Education Loan 80E
1896 ,p_input_value_id6 => l_input_values(5).input_value_id
1897 --Claim Exemption under Sec 80GG
1898 ,p_input_value_id7 => l_input_values(6).input_value_id
1899 --Donation for Research 80GGA
1900 ,p_input_value_id8 => l_input_values(7).input_value_id
1901 --Int on Gen Investment 80L
1902 ,p_input_value_id9 => l_input_values(8).input_value_id
1903 --Int on Securities 80L
1904 ,p_input_value_id10 => l_input_values(9).input_value_id
1905 ,p_entry_value1 => p_pension_fund_80ccc
1906 ,p_entry_value2 => p_medical_insurance_prem_80d
1907 ,p_entry_value3 => p_sec_80ddb_senior_citizen
1908 ,p_entry_value4 => p_disease_treatment_80ddb
1909 ,p_entry_value5 => p_sec_80d_senior_citizen
1910 ,p_entry_value6 => p_higher_education_loan_80e
1911 ,p_entry_value7 => p_claim_exemp_under_sec_80gg
1912 ,p_entry_value8 => p_donation_for_research_80gga
1913 ,p_entry_value9 => p_int_on_gen_investment_80L
1914 ,p_entry_value10 => p_int_on_securities_80L
1915 ,p_effective_start_date => l_effective_start_date
1916 ,p_effective_end_date => l_effective_end_date
1917 ,p_update_warning => p_warnings
1918 );
1919 --
1920 --
1921 pay_in_utils.set_location(g_debug, l_procedure, 60);
1922 --
1923 l_endation_date := pay_in_utils.next_tax_year(l_effective_date);
1924 --
1925 IF l_effective_end_date <> (l_endation_date-1)
1926 THEN
1927 --
1928 -- End date the entry as of the financial year end date
1929 --
1930 pay_in_utils.set_location(g_debug, l_procedure, 70);
1931 --
1932 IF l_disability_proof = 'Y' THEN
1933 --
1934 --
1935 pay_in_utils.set_location(g_debug, l_procedure, 80);
1936 --
1937 pay_element_entry_api.update_element_entry
1938 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
1939 ,l_endation_date)
1940 ,p_effective_date => l_endation_date
1941 ,p_business_group_id => l_business_group_id
1942 ,p_element_entry_id => l_element_entry_id
1943 ,p_object_version_number => l_object_version_number
1944 --Pension Fund 80CCC
1945 ,p_input_value_id1 => l_input_values(0).input_value_id
1946 --Medical Insurance Premium 80D
1947 ,p_input_value_id2 => l_input_values(1).input_value_id
1948 --Sec 80DDB Cover Senior Citizen
1949 ,p_input_value_id3 => l_input_values(2).input_value_id
1950 --Disease Treatment 80DDB
1951 ,p_input_value_id4 => l_input_values(3).input_value_id
1952 --Sec 80D Cover Senior Citizen
1953 ,p_input_value_id5 => l_input_values(4).input_value_id
1954 --Higher Education Loan 80E
1955 ,p_input_value_id6 => l_input_values(5).input_value_id
1956 --Claim Exemption under Sec 80GG
1957 ,p_input_value_id7 => l_input_values(6).input_value_id
1958 --Donation for Research 80GGA
1959 ,p_input_value_id8 => l_input_values(7).input_value_id
1960 --Int on Gen Investment 80L
1961 ,p_input_value_id9 => l_input_values(8).input_value_id
1962 --Int on Securities 80L
1963 ,p_input_value_id10 => l_input_values(9).input_value_id
1964 ,p_entry_value1 => 0
1965 ,p_entry_value2 => 0
1966 ,p_entry_value3 => 'N'
1967 ,p_entry_value4 => 0
1968 ,p_entry_value5 => 'N'
1969 ,p_entry_value6 => 0
1970 ,p_entry_value7 => 'N'
1971 ,p_entry_value8 => 0
1972 ,p_entry_value9 => 0
1973 ,p_entry_value10 => 0
1974 ,p_effective_start_date => l_effective_start_date
1975 ,p_effective_end_date => l_effective_end_date
1976 ,p_update_warning => p_warnings
1977 );
1978 --
1979 ELSE
1980 --
1981 pay_in_utils.set_location(g_debug, l_procedure, 90);
1982 --
1983 delete_declaration
1984 (p_element_entry_id => l_element_entry_id
1985 ,p_effective_date => l_endation_date-1
1986 ,p_warnings => l_warnings);
1987 --
1988 END IF;
1989 --
1990 END IF;
1991 --
1992 END IF;
1993 --
1994 IF g_debug THEN
1995 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
1996 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
1997 END IF;
1998
1999 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
2000 --
2001 EXCEPTION
2002 WHEN OTHERS THEN
2003 fnd_msg_pub.add_exc_msg
2004 (p_pkg_name => g_package
2005 ,p_procedure_name => 'declare_chapter6a'
2006 ,p_error_text => substr(sqlerrm, 1, 240)
2007 );
2008 --
2009 END declare_chapter6a;
2010
2011 --------------------------------------------------------------------------
2012 -- --
2013 -- Name : DECLARE_SECTION88 --
2014 -- Type : PROCEDURE --
2015 -- Access : Public --
2016 -- Description : The procedure is responsible for storing the detials--
2017 -- in 'Rebates under Section 88' element. --
2018 -- --
2019 -- Parameters : --
2020 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
2021 -- p_public_provident_fund NUMBER --
2022 -- p_post_office_savings_scheme NUMBER --
2023 -- p_deposit_in_nsc_vi_issue NUMBER --
2024 -- p_deposit_in_nsc_viii_issue NUMBER --
2025 -- p_interest_on_nsc_reinvested NUMBER --
2026 -- p_house_loan_repayment NUMBER --
2027 -- p_notified_mutual_fund_or_uti NUMBER --
2028 -- p_national_housing_bank_scheme NUMBER --
2029 -- p_unit_linked_insurance_plan NUMBER --
2030 -- p_notified_annuity_plan NUMBER --
2031 -- p_notified_pension_fund NUMBER --
2032 -- p_public_sector_company_scheme NUMBER --
2033 -- p_approved_superannuation_fund NUMBER --
2034 -- p_infrastructure_bond NUMBER --
2035 -- p_effective_date DATE --
2036 -- OUT : p_warnings BOOLEAN --
2037 -- --
2038 -- Change History : --
2039 --------------------------------------------------------------------------
2040 -- Rev# Date Userid Description --
2041 --------------------------------------------------------------------------
2042 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
2043 -- 1.1 25-Apr-2005 VGSRINIV Nulled out for stat update(Bug 4251141)--
2044 --------------------------------------------------------------------------
2045 PROCEDURE declare_section88
2046 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
2047 ,p_deferred_annuity IN NUMBER
2048 ,p_senior_citizen_sav_scheme IN NUMBER
2049 ,p_public_provident_fund IN NUMBER
2050 ,p_post_office_savings_scheme IN NUMBER
2051 ,p_deposit_in_nsc_vi_issue IN NUMBER
2052 ,p_deposit_in_nsc_viii_issue IN NUMBER
2053 ,p_interest_on_nsc_reinvested IN NUMBER
2054 ,p_house_loan_repayment IN NUMBER
2055 ,p_notified_mutual_fund_or_uti IN NUMBER
2056 ,p_national_housing_bank_scheme IN NUMBER
2057 ,p_unit_linked_insurance_plan IN NUMBER
2058 ,p_notified_annuity_plan IN NUMBER
2059 ,p_notified_pension_fund IN NUMBER
2060 ,p_public_sector_company_scheme IN NUMBER
2061 ,p_approved_superannuation_fund IN NUMBER
2062 ,p_infrastructure_bond IN NUMBER
2063 ,p_effective_date IN DATE DEFAULT NULL
2064 ,p_warnings OUT NOCOPY BOOLEAN)
2065 IS
2066 --
2067 l_procedure VARCHAR(100);
2068 l_message VARCHAR2(250);
2069 l_input_values t_input_values_tab;
2070 l_element_type_id pay_element_types_f.element_type_id%TYPE;
2071 l_element_link_id pay_element_links_f.element_link_id%TYPE;
2072 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
2073 l_business_group_id per_business_groups.business_group_id%TYPE;
2074 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
2075 l_effective_start_date DATE;
2076 l_effective_end_date DATE;
2077 l_effective_date DATE;
2078 l_warnings VARCHAR2(6);
2079 --
2080 BEGIN
2081 --
2082 l_procedure := g_package || 'declare_section88';
2083 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
2084
2085 IF g_debug THEN
2086 pay_in_utils.trace('**************************************************','********************');
2087 pay_in_utils.trace('p_assignment_id',p_assignment_id);
2088 pay_in_utils.trace('p_deferred_annuity',p_deferred_annuity);
2089 pay_in_utils.trace('p_senior_citizen_sav_scheme',p_senior_citizen_sav_scheme);
2090 pay_in_utils.trace('p_public_provident_fund',p_public_provident_fund);
2091 pay_in_utils.trace('p_post_office_savings_scheme',p_post_office_savings_scheme);
2092 pay_in_utils.trace('p_deposit_in_nsc_vi_issue',p_deposit_in_nsc_vi_issue);
2093 pay_in_utils.trace('p_deposit_in_nsc_viii_issue',p_deposit_in_nsc_viii_issue);
2094 pay_in_utils.trace('p_interest_on_nsc_reinvested',p_interest_on_nsc_reinvested);
2095 pay_in_utils.trace('p_house_loan_repayment',p_house_loan_repayment);
2096 pay_in_utils.trace('p_notified_mutual_fund_or_uti',p_notified_mutual_fund_or_uti);
2097 pay_in_utils.trace('p_national_housing_bank_scheme',p_national_housing_bank_scheme);
2098 pay_in_utils.trace('p_unit_linked_insurance_plan',p_unit_linked_insurance_plan);
2099 pay_in_utils.trace('p_notified_annuity_plan',p_notified_annuity_plan);
2100 pay_in_utils.trace('p_notified_pension_fund',p_notified_pension_fund);
2101 pay_in_utils.trace('p_public_sector_company_scheme',p_public_sector_company_scheme);
2102 pay_in_utils.trace('p_approved_superannuation_fund',p_approved_superannuation_fund);
2103 pay_in_utils.trace('p_infrastructure_bond',p_infrastructure_bond);
2104 pay_in_utils.trace('p_effective_date',p_effective_date);
2105 pay_in_utils.trace('**************************************************','********************');
2106 END IF;
2107
2108
2109 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,20);
2110 --
2111 EXCEPTION
2112 WHEN OTHERS THEN
2113 fnd_msg_pub.add_exc_msg
2114 (p_pkg_name => g_package
2115 ,p_procedure_name => 'declare_section88'
2116 ,p_error_text => substr(sqlerrm, 1, 240)
2117 );
2118 --
2119 END declare_section88;
2120
2121 --------------------------------------------------------------------------
2122 -- --
2123 -- Name : DECLARE_OTHER_INCOME --
2124 -- Type : PROCEDURE --
2125 -- Access : Public --
2126 -- Description : The procedure is responsible for storing the --
2127 -- detials in 'Other Income' element. --
2128 -- --
2129 -- Parameters : --
2130 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
2131 -- p_income_from_house_property NUMBER --
2132 -- p_profit_and_gain_from_busines NUMBER --
2133 -- p_long_term_capital_gain NUMBER --
2134 -- p_short_term_capital_gain NUMBER --
2135 -- p_income_from_any_other_source NUMBER --
2136 -- p_tds_paid_on_other_income NUMBER --
2137 -- p_effective_date DATE --
2138 -- OUT : p_warnings BOOLEAN --
2139 -- --
2140 -- Change History : --
2141 --------------------------------------------------------------------------
2142 -- Rev# Date Userid Description --
2143 --------------------------------------------------------------------------
2144 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
2145 --------------------------------------------------------------------------
2146 PROCEDURE declare_other_income
2147 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
2148 ,p_income_from_house_property IN NUMBER
2149 ,p_profit_and_gain_from_busines IN NUMBER
2150 ,p_long_term_capital_gain IN NUMBER
2151 ,p_short_term_capital_gain IN NUMBER
2152 ,p_income_from_any_other_source IN NUMBER
2153 ,p_tds_paid_on_other_income IN NUMBER
2154 ,p_effective_date IN DATE DEFAULT NULL
2155 ,p_warnings OUT NOCOPY BOOLEAN)
2156 IS
2157 --
2158 l_procedure VARCHAR(100);
2159 l_message VARCHAR2(250);
2160 l_input_values t_input_values_tab;
2161 l_element_type_id pay_element_types_f.element_type_id%TYPE;
2162 l_element_link_id pay_element_links_f.element_link_id%TYPE;
2163 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
2164 l_business_group_id per_business_groups.business_group_id%TYPE;
2165 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
2166 l_effective_start_date DATE;
2167 l_effective_end_date DATE;
2168 l_effective_date DATE;
2169 l_warnings VARCHAR2(6);
2170 --
2171 BEGIN
2172 --
2173 l_procedure := g_package || 'declare_other_income';
2174 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
2175
2176 IF g_debug THEN
2177 pay_in_utils.trace('**************************************************','********************');
2178 pay_in_utils.trace('p_assignment_id',p_assignment_id);
2179 pay_in_utils.trace('p_income_from_house_property ',p_income_from_house_property );
2180 pay_in_utils.trace('p_profit_and_gain_from_busines',p_profit_and_gain_from_busines);
2181 pay_in_utils.trace('p_long_term_capital_gain ',p_long_term_capital_gain );
2182 pay_in_utils.trace('p_short_term_capital_gain ',p_short_term_capital_gain);
2183 pay_in_utils.trace('p_income_from_any_other_source',p_income_from_any_other_source);
2184 pay_in_utils.trace('p_tds_paid_on_other_income ',p_tds_paid_on_other_income);
2185 pay_in_utils.trace('**************************************************','********************');
2186 END IF;
2187 --
2188 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
2189 --
2190 get_entry_details(p_assignment_id => p_assignment_id
2191 ,p_element_name => 'Other Income'
2192 ,p_effective_date => l_effective_date
2193 ,p_element_type_id => l_element_type_id
2194 ,p_element_link_id => l_element_link_id
2195 ,p_element_entry_id => l_element_entry_id
2196 ,p_expected_entries => 6
2197 ,p_business_group_id => l_business_group_id
2198 ,p_object_version_number=> l_object_version_number
2199 ,p_input_values => l_input_values
2200 );
2201 --
2202 IF g_debug THEN
2203 pay_in_utils.trace('Element Type ID: ', l_element_type_id);
2204 pay_in_utils.trace('Element Entry ID: ', l_element_entry_id);
2205 pay_in_utils.trace('Business Group ID: ', l_business_group_id);
2206 pay_in_utils.trace('Object Version Number: ', l_object_version_number);
2207 pay_in_utils.set_location(g_debug,l_procedure,20);
2208 END IF;
2209 --
2210 pay_in_utils.set_location(g_debug, l_procedure, 20);
2211 --
2212 IF l_element_entry_id is null THEN
2213 --
2214 pay_in_utils.set_location(g_debug, l_procedure, 30);
2215 --
2216 --
2217 -- In this case, we would have to create an element entry to the
2218 -- assignment and return the entry id, the rest would be handled
2219 -- by the update command in the calling procedure.
2220 --
2221 pay_element_entry_api.create_element_entry
2222 (p_effective_date => l_effective_date
2223 ,p_business_group_id => l_business_group_id
2224 ,p_assignment_id => p_assignment_id
2225 ,p_element_link_id => l_element_link_id
2226 ,p_entry_type => 'E'
2227 -- Income from House Property
2228 ,p_input_value_id1 => l_input_values(0).input_value_id
2229 -- Profit and Gain from Business
2230 ,p_input_value_id2 => l_input_values(1).input_value_id
2231 -- Long Term Capital Gain
2232 ,p_input_value_id3 => l_input_values(2).input_value_id
2233 -- Short Term Capital Gain
2234 ,p_input_value_id4 => l_input_values(3).input_value_id
2235 -- Income from any other sources
2236 ,p_input_value_id5 => l_input_values(4).input_value_id
2237 -- TDS Paid on Other Income
2238 ,p_input_value_id6 => l_input_values(5).input_value_id
2239 ,p_entry_value1 => p_income_from_house_property
2240 ,p_entry_value2 => p_profit_and_gain_from_busines
2241 ,p_entry_value3 => p_long_term_capital_gain
2242 ,p_entry_value4 => p_short_term_capital_gain
2243 ,p_entry_value5 => p_income_from_any_other_source
2244 ,p_entry_value6 => p_tds_paid_on_other_income
2245 ,p_effective_start_date => l_effective_start_date
2246 ,p_effective_end_date => l_effective_end_date
2247 ,p_element_entry_id => l_element_entry_id
2248 ,p_object_version_number => l_object_version_number
2249 ,p_create_warning => p_warnings
2250 );
2251 --
2252 pay_in_utils.set_location(g_debug, l_procedure, 40);
2253 --
2254 -- End date the entry as of the financial year end date
2255 --
2256 delete_declaration
2257 (p_element_entry_id => l_element_entry_id
2258 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
2259 ,p_warnings => l_warnings);
2260 --
2261 ELSE
2262 --
2263 pay_in_utils.set_location(g_debug, l_procedure, 50);
2264 --
2265 --
2266 -- An element entry for this element already exists we have to
2267 -- update the element entry with the newly submitted date.
2268 --
2269 pay_element_entry_api.update_element_entry
2270 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
2271 ,l_effective_date)
2272 ,p_effective_date => l_effective_date
2273 ,p_business_group_id => l_business_group_id
2274 ,p_element_entry_id => l_element_entry_id
2275 ,p_object_version_number => l_object_version_number
2276 -- Income from House Property
2277 ,p_input_value_id1 => l_input_values(0).input_value_id
2278 -- Profit and Gain from Business
2279 ,p_input_value_id2 => l_input_values(1).input_value_id
2280 -- Long Term Capital Gain
2281 ,p_input_value_id3 => l_input_values(2).input_value_id
2282 -- Short Term Capital Gain
2283 ,p_input_value_id4 => l_input_values(3).input_value_id
2284 -- Income from any other sources
2285 ,p_input_value_id5 => l_input_values(4).input_value_id
2286 -- TDS Paid on Other Income
2287 ,p_input_value_id6 => l_input_values(5).input_value_id
2288 ,p_entry_value1 => p_income_from_house_property
2289 ,p_entry_value2 => p_profit_and_gain_from_busines
2290 ,p_entry_value3 => p_long_term_capital_gain
2291 ,p_entry_value4 => p_short_term_capital_gain
2292 ,p_entry_value5 => p_income_from_any_other_source
2293 ,p_entry_value6 => p_tds_paid_on_other_income
2294 ,p_effective_start_date => l_effective_start_date
2295 ,p_effective_end_date => l_effective_end_date
2296 ,p_update_warning => p_warnings
2297 );
2298 --
2299 pay_in_utils.set_location(g_debug, l_procedure, 60);
2300 --
2301 IF l_effective_end_date <> (pay_in_utils.next_tax_year(l_effective_date)-1)
2302 THEN
2303 --
2304 -- End date the entry as of the financial year end date
2305 --
2306 delete_declaration
2307 (p_element_entry_id =>l_element_entry_id
2308 ,p_effective_date =>pay_in_utils.next_tax_year(l_effective_date)-1
2309 ,p_warnings =>l_warnings);
2310 --
2311 END IF;
2312 --
2313 END IF;
2314 --
2315 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
2316 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
2317 pay_in_utils.set_location(g_debug,l_procedure,70);
2318 --
2319
2320
2321 pay_in_utils.set_location(g_debug, 'Leaving: ' || l_procedure, 80);
2322 --
2323 EXCEPTION
2324 WHEN OTHERS THEN
2325 fnd_msg_pub.add_exc_msg
2326 (p_pkg_name => g_package
2327 ,p_procedure_name => 'declare_other_income'
2328 ,p_error_text => substr(sqlerrm, 1, 240)
2329 );
2330 --
2331 END declare_other_income;
2332
2333 --------------------------------------------------------------------------
2334 -- --
2335 -- Name : DECLARE_SECTION80DD --
2336 -- Type : PROCEDURE --
2337 -- Access : Public --
2338 -- Description : The procedure is responsible for storing the --
2339 -- detials in 'Deduction under Section 80DD' element. --
2340 -- --
2341 -- Parameters : --
2342 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
2343 -- p_disability_type VARCHAR2 --
2344 -- p_disability_percentage VARCHAR2 --
2345 -- p_treatment_amount NUMBER --
2346 -- p_effective_date DATE --
2347 -- p_element_entry_id element_entry_id%TYPE --
2348 -- OUT : p_warnings BOOLEAN --
2349 -- --
2350 -- Change History : --
2351 --------------------------------------------------------------------------
2352 -- Rev# Date Userid Description --
2353 --------------------------------------------------------------------------
2354 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
2355 --------------------------------------------------------------------------
2356 PROCEDURE declare_section80dd
2357 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
2358 ,p_disability_type IN VARCHAR2
2359 ,p_disability_percentage IN VARCHAR2
2360 ,p_treatment_amount IN NUMBER
2361 ,p_effective_date IN DATE default null
2362 ,p_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE default null
2363 ,p_warnings OUT NOCOPY VARCHAR2)
2364 IS
2365 --
2366 l_procedure VARCHAR(100);
2367 l_message VARCHAR2(250);
2368 l_warnings BOOLEAN;
2369 l_input_values t_input_values_tab;
2370 l_element_type_id pay_element_types_f.element_type_id%TYPE;
2371 l_element_link_id pay_element_links_f.element_link_id%TYPE;
2372 l_element_entry_id pay_element_entries.element_entry_id%TYPE;
2373 l_business_group_id per_business_groups.business_group_id%TYPE;
2374 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
2375 l_effective_date DATE;
2376 l_effective_start_date DATE;
2377 l_effective_end_date DATE;
2378 --
2379 -- Added as a part of bug fix 4774108
2380 CURSOR csr_element_type_id(p_element_name VARCHAR2
2381 ,p_effective_date DATE)-- Added as a part of bug 4938573
2382 IS
2383 SELECT element_type_id
2384 FROM pay_element_types_f
2385 WHERE (legislation_code = 'IN' OR business_group_id = FND_PROFILE.VALUE('PER_BUSINESS_GROUP_ID'))
2386 AND element_name = p_element_name
2387 AND p_effective_date BETWEEN effective_start_date AND effective_end_date;
2388
2389 CURSOR csr_element_link_details
2390 (c_assignment_id IN per_assignments_f.assignment_id%TYPE
2391 ,c_effective_date IN DATE
2392 ,c_element_link_id IN NUMBER)
2393 IS
2394 SELECT types.element_type_id
2395 , links.element_link_id
2396 , assgn.business_group_id
2397 FROM per_assignments_f assgn
2398 , pay_element_links_f links
2399 , pay_element_types_f types
2400 WHERE assgn.assignment_id = c_assignment_id
2401 AND links.element_link_id = c_element_link_id
2402 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
2403 AND links.business_group_id = assgn.business_group_id
2404 AND links.element_type_id = types.element_type_id
2405 AND types.element_name = 'Deduction under Section 80DD'
2406 AND c_effective_date BETWEEN assgn.effective_start_date
2407 AND assgn.effective_end_date
2408 AND c_effective_date BETWEEN links.effective_start_date
2409 AND links.effective_end_date
2410 AND c_effective_date BETWEEN types.effective_start_date
2411 AND types.effective_end_date;
2412 --
2413 CURSOR csr_element_entry_details
2414 (c_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE
2415 ,c_effective_date IN DATE)
2416 IS
2417 SELECT entries.element_type_id
2418 , entries.object_version_number
2419 , assgn.business_group_id
2420 FROM pay_element_entries_f entries
2421 , per_assignments_f assgn
2422 WHERE entries.element_entry_id = c_element_entry_id
2423 AND entries.assignment_id = assgn.assignment_id
2424 AND c_effective_date BETWEEN entries.effective_start_date
2425 AND entries.effective_end_date
2426 AND c_effective_date BETWEEN assgn.effective_start_date
2427 AND assgn.effective_end_date;
2428 BEGIN
2429 --
2430
2431
2432 l_procedure := g_package || 'declare_section80dd';
2433 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
2434
2435 IF g_debug THEN
2436 pay_in_utils.trace('**************************************************','********************');
2437 pay_in_utils.trace('p_assignment_id',p_assignment_id);
2438 pay_in_utils.trace('p_disability_type ',p_disability_type );
2439 pay_in_utils.trace('p_disability_percentage',p_disability_percentage);
2440 pay_in_utils.trace('p_treatment_amount ',p_treatment_amount );
2441 pay_in_utils.trace('p_effective_date ',p_effective_date );
2442 pay_in_utils.trace('p_element_entry_id',p_element_entry_id);
2443 pay_in_utils.trace('**************************************************','********************');
2444 END IF;
2445
2446 p_warnings := 'FALSE';
2447
2448 --
2449 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
2450 -- Added for bug 3990922
2451 hr_session_utilities.insert_session_row(l_effective_date);
2452 --
2453 IF (NVL(p_element_entry_id, 0) = 0) THEN
2454 --
2455 pay_in_utils.set_location(g_debug, l_procedure, 20);
2456 --
2457 -- Added as a part of bug fix 4774108
2458 OPEN csr_element_type_id('Deduction under Section 80DD',l_effective_date);-- Added as a part of bug 4938573
2459 FETCH csr_element_type_id INTO l_element_type_id;
2460 CLOSE csr_element_type_id;
2461
2462 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
2463 ,l_effective_date-- Modified as a part of bug 4938573
2464 ,l_element_type_id
2465 );
2466
2467 OPEN csr_element_link_details(p_assignment_id
2468 ,l_effective_date
2469 ,l_element_link_id
2470 );
2471 FETCH csr_element_link_details INTO l_element_type_id
2472 , l_element_link_id
2473 , l_business_group_id;
2474 CLOSE csr_element_link_details;
2475 --
2476 IF l_element_link_id IS NULL THEN
2477 --
2478 hr_utility.set_message(800, 'PER_IN_MISSING_LINK');
2479 hr_utility.set_message_token('ELEMENT_NAME', 'Deduction under Section 80DD');
2480 hr_utility.raise_error;
2481 --
2482 END IF;
2483 --
2484 pay_in_utils.set_location(g_debug, l_procedure, 30);
2485 --
2486 IF g_debug THEN
2487 pay_in_utils.trace('Element Type ID: ', l_element_type_id);
2488 pay_in_utils.trace('Element Link ID: ', l_element_link_id);
2489 pay_in_utils.trace('Business Group ID: ', l_business_group_id);
2490 END IF;
2491 --
2492 -- Query the entry IDs required for creation of the element.
2493 get_element_entry_ids(l_element_type_id
2494 ,l_effective_date
2495 ,6
2496 ,l_input_values);
2497 --
2498 pay_in_utils.set_location(g_debug, l_procedure, 40);
2499 --
2500 -- In this case, we would have to create an element entry to the
2501 -- assignment and return the entry id, the rest would be handled
2502 -- by the update command in the calling procedure.
2503 hr_utility.trace('Disability Type= '||p_disability_type);
2504 pay_element_entry_api.create_element_entry
2505 (p_effective_date => l_effective_date
2506 ,p_business_group_id => l_business_group_id
2507 ,p_assignment_id => p_assignment_id
2508 ,p_element_link_id => l_element_link_id
2509 ,p_entry_type => 'E'
2510 -- Disability Type
2511 ,p_input_value_id1 => l_input_values(0).input_value_id
2512 -- Disability Percentage
2513 ,p_input_value_id2 => l_input_values(1).input_value_id
2514 -- Treatment Amount
2515 ,p_input_value_id3 => l_input_values(2).input_value_id
2516 ,p_entry_value1 => p_disability_type
2517 ,p_entry_value2 => p_disability_percentage
2518 ,p_entry_value3 => p_treatment_amount
2519 ,p_effective_start_date => l_effective_start_date
2520 ,p_effective_end_date => l_effective_end_date
2521 ,p_element_entry_id => l_element_entry_id
2522 ,p_object_version_number => l_object_version_number
2523 ,p_create_warning => l_warnings
2524 );
2525 --
2526 pay_in_utils.set_location(g_debug, l_procedure, 50);
2527 --
2528 -- End date the entry as of the financial year end date
2529 --
2530 delete_declaration
2531 (p_element_entry_id => l_element_entry_id
2532 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
2533 ,p_warnings => p_warnings);
2534 --
2535 ELSE
2536 --
2537 pay_in_utils.set_location(g_debug, l_procedure, 60);
2538 --
2539 OPEN csr_element_entry_details(p_element_entry_id
2540 ,l_effective_date);
2541 FETCH csr_element_entry_details INTO l_element_type_id
2542 , l_object_version_number
2543 , l_business_group_id;
2544 CLOSE csr_element_entry_details;
2545 --
2546 --
2547 -- Query the entry IDs required for creation of the element.
2548 get_element_entry_ids(l_element_type_id
2549 ,l_effective_date
2550 ,6
2551 ,l_input_values);
2552 --
2553 pay_in_utils.set_location(g_debug, l_procedure, 70);
2554 --
2555 -- An element entry for this element already exists we have to
2556 -- update the element entry with the newly submitted date.
2557 --
2558 pay_element_entry_api.update_element_entry
2559 (p_datetrack_update_mode => get_update_mode(p_element_entry_id
2560 ,l_effective_date)
2561 ,p_effective_date => l_effective_date
2562 ,p_business_group_id => l_business_group_id
2563 ,p_element_entry_id => p_element_entry_id
2564 ,p_object_version_number => l_object_version_number
2565 -- Disability Type
2566 ,p_input_value_id1 => l_input_values(0).input_value_id
2567 -- Disability Percentage
2568 ,p_input_value_id2 => l_input_values(1).input_value_id
2569 -- Treatment Amount
2570 ,p_input_value_id3 => l_input_values(2).input_value_id
2571 ,p_entry_value1 => p_disability_type
2572 ,p_entry_value2 => p_disability_percentage
2573 ,p_entry_value3 => p_treatment_amount
2574 ,p_effective_start_date => l_effective_start_date
2575 ,p_effective_end_date => l_effective_end_date
2576 ,p_update_warning => l_warnings
2577 );
2578 --
2579 IF g_debug THEN
2580 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
2581 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
2582 END IF;
2583 --
2584 pay_in_utils.set_location(g_debug, l_procedure, 80);
2585 --
2586 IF l_effective_end_date <> (pay_in_utils.next_tax_year(l_effective_date)-1)
2587 THEN
2588 --
2589 -- End date the entry as of the financial year end date
2590 --
2591 delete_declaration
2592 (p_element_entry_id =>l_element_entry_id
2593 ,p_effective_date =>pay_in_utils.next_tax_year(l_effective_date)-1
2594 ,p_warnings =>p_warnings);
2595 --
2596 END IF;
2597 --
2598 END IF;
2599 --
2600 IF l_warnings = TRUE THEN
2601 --
2602 p_warnings := 'TRUE';
2603 --
2604 END IF;
2605
2606
2607 pay_in_utils.set_location(g_debug, 'Leaving: ' || l_procedure, 90);
2608 --
2609 EXCEPTION
2610 WHEN OTHERS THEN
2611 fnd_msg_pub.add_exc_msg
2612 (p_pkg_name => g_package
2613 ,p_procedure_name => 'declare_section80dd'
2614 ,p_error_text => substr(sqlerrm, 1, 240)
2615 );
2616 --
2617 END declare_section80dd;
2618
2619 --------------------------------------------------------------------------
2620 -- --
2621 -- Name : DECLARE_SECTION80G --
2622 -- Type : PROCEDURE --
2623 -- Access : Public --
2624 -- Description : The procedure is responsible for storing the --
2625 -- detials in 'Deduction under Section 80G' element. --
2626 -- --
2627 -- Parameters : --
2628 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
2629 -- p_donation_type VARCHAR2 --
2630 -- p_donation_amount NUMBER --
2631 -- p_effective_date DATE --
2632 -- p_element_entry_id element_entry_id%TYPE --
2633 -- OUT : p_warnings BOOLEAN --
2634 -- --
2635 -- Change History : --
2636 --------------------------------------------------------------------------
2637 -- Rev# Date Userid Description --
2638 --------------------------------------------------------------------------
2639 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
2640 --------------------------------------------------------------------------
2641 PROCEDURE declare_section80g
2642 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
2643 ,p_donation_type IN VARCHAR2
2644 ,p_donation_amount IN NUMBER
2645 ,p_effective_date IN DATE default null
2646 ,p_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE default null
2647 ,p_warnings OUT NOCOPY VARCHAR2)
2648 IS
2649 --
2650 l_procedure VARCHAR(100);
2651 l_message VARCHAR2(250);
2652 l_warnings BOOLEAN;
2653 l_input_values t_input_values_tab;
2654 l_element_type_id pay_element_types_f.element_type_id%TYPE;
2655 l_element_link_id pay_element_links_f.element_link_id%TYPE;
2656 l_element_entry_id pay_element_entries.element_entry_id%TYPE;
2657 l_business_group_id per_business_groups.business_group_id%TYPE;
2658 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
2659 l_effective_date DATE;
2660 l_effective_start_date DATE;
2661 l_effective_end_date DATE;
2662 --
2663 -- Added as a part of bug fix 4774108
2664 CURSOR csr_element_type_id(p_element_name VARCHAR2
2665 ,p_effective_date DATE -- Added as a part of bug 4938573
2666 )
2667 IS
2668 SELECT element_type_id
2669 FROM pay_element_types_f
2670 WHERE legislation_code = 'IN'
2671 AND element_name = p_element_name
2672 AND p_effective_date BETWEEN effective_start_date AND effective_end_date;
2673
2674 CURSOR csr_element_link_details
2675 (c_assignment_id IN per_assignments_f.assignment_id%TYPE
2676 ,c_effective_date IN DATE
2677 ,c_element_link_id IN NUMBER)
2678 IS
2679 SELECT types.element_type_id
2680 , link.element_link_id
2681 , assgn.business_group_id
2682 FROM per_assignments_f assgn
2683 , pay_element_links_f link
2684 , pay_element_types_f types
2685 WHERE assgn.assignment_id = c_assignment_id
2686 AND link.element_link_id = c_element_link_id
2687 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
2688 AND link.business_group_id = assgn.business_group_id
2689 AND link.element_type_id = types.element_type_id
2690 AND types.element_name = 'Deduction under Section 80G'
2691 AND c_effective_date BETWEEN assgn.effective_start_date
2692 AND assgn.effective_end_date
2693 AND c_effective_date BETWEEN link.effective_start_date
2694 AND link.effective_end_date
2695 AND c_effective_date BETWEEN types.effective_start_date
2696 AND types.effective_end_date;
2697 --
2698 CURSOR csr_element_entry_details
2699 (c_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE
2700 ,c_effective_date IN DATE)
2701 IS
2702 SELECT entries.element_type_id
2703 , entries.object_version_number
2704 , assgn.business_group_id
2705 FROM pay_element_entries_f entries
2706 , per_assignments_f assgn
2707 WHERE entries.element_entry_id = c_element_entry_id
2708 AND entries.assignment_id = assgn.assignment_id
2709 AND c_effective_date BETWEEN entries.effective_start_date
2710 AND entries.effective_end_date
2711 AND c_effective_date BETWEEN assgn.effective_start_date
2712 AND assgn.effective_end_date;
2713 BEGIN
2714 --
2715 l_procedure := g_package || 'declare_section80g';
2716 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
2717
2718 IF g_debug THEN
2719 pay_in_utils.trace('**************************************************','********************');
2720 pay_in_utils.trace('p_assignment_id',p_assignment_id);
2721 pay_in_utils.trace('p_donation_type ',p_donation_type );
2722 pay_in_utils.trace('p_donation_amount',p_donation_amount);
2723 pay_in_utils.trace('p_effective_date ',p_effective_date );
2724 pay_in_utils.trace('p_element_entry_id',p_element_entry_id);
2725 pay_in_utils.trace('**************************************************','********************');
2726 END IF;
2727
2728 p_warnings := 'FALSE';
2729
2730 --
2731 IF g_debug THEN
2732 --
2733 pay_in_utils.trace('Donation Type: ', p_donation_type);
2734 pay_in_utils.trace('Donation Amount: ', p_donation_amount);
2735 --
2736 END IF;
2737 --
2738 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
2739 -- Added for bug 3990922
2740 hr_session_utilities.insert_session_row(l_effective_date);
2741 --
2742 IF (NVL(p_element_entry_id, 0) = 0) THEN
2743 --
2744 pay_in_utils.set_location(g_debug, l_procedure, 20);
2745 --
2746 -- Added as a part of bug fix 4774108
2747 OPEN csr_element_type_id('Deduction under Section 80G',l_effective_date); -- Added as a part of bug 4938573
2748 FETCH csr_element_type_id INTO l_element_type_id;
2749 CLOSE csr_element_type_id;
2750
2751 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
2752 ,l_effective_date -- Modified as a part of bug 4938573
2753 ,l_element_type_id
2754 );
2755 OPEN csr_element_link_details(p_assignment_id
2756 ,l_effective_date
2757 ,l_element_link_id
2758 );
2759 FETCH csr_element_link_details INTO l_element_type_id
2760 , l_element_link_id
2761 , l_business_group_id;
2762 CLOSE csr_element_link_details;
2763 --
2764 pay_in_utils.set_location(g_debug, l_procedure, 30);
2765 --
2766 IF l_element_link_id IS NULL THEN
2767 --
2768 hr_utility.set_message(800, 'PER_IN_MISSING_LINK');
2769 hr_utility.set_message_token('ELEMENT_NAME', 'Deduction under Section 80G');
2770 hr_utility.raise_error;
2771 --
2772 END IF;
2773 --
2774 IF g_debug THEN
2775 pay_in_utils.trace('Element Type ID: ', l_element_type_id);
2776 pay_in_utils.trace('Element Link ID: ', l_element_link_id);
2777 pay_in_utils.trace('Business Group ID: ', l_business_group_id);
2778 END IF;
2779 --
2780 -- Query the entry IDs required for creation of the element.
2781 get_element_entry_ids(l_element_type_id
2782 ,l_effective_date
2783 ,5
2784 ,l_input_values);
2785 --
2786 pay_in_utils.set_location(g_debug, l_procedure, 40);
2787 --
2788 -- In this case, we would have to create an element entry to the
2789 -- assignment and return the entry id, the rest would be handled
2790 -- by the update command in the calling procedure.
2791 pay_element_entry_api.create_element_entry
2792 (p_effective_date => l_effective_date
2793 ,p_business_group_id => l_business_group_id
2794 ,p_assignment_id => p_assignment_id
2795 ,p_element_link_id => l_element_link_id
2796 ,p_entry_type => 'E'
2797 -- Donation Type
2798 ,p_input_value_id1 => l_input_values(0).input_value_id
2799 -- Donation Amount
2800 ,p_input_value_id2 => l_input_values(1).input_value_id
2801 ,p_entry_value1 => p_donation_type
2802 ,p_entry_value2 => p_donation_amount
2803 ,p_effective_start_date => l_effective_start_date
2804 ,p_effective_end_date => l_effective_end_date
2805 ,p_element_entry_id => l_element_entry_id
2806 ,p_object_version_number => l_object_version_number
2807 ,p_create_warning => l_warnings
2808 );
2809 --
2810 pay_in_utils.set_location(g_debug, l_procedure, 50);
2811 --
2812 -- End date the entry as of the financial year end date
2813 --
2814 delete_declaration
2815 (p_element_entry_id => l_element_entry_id
2816 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
2817 ,p_warnings => p_warnings);
2818 --
2819 ELSE
2820 --
2821 pay_in_utils.set_location(g_debug, l_procedure, 60);
2822 --
2823 OPEN csr_element_entry_details(p_element_entry_id
2824 ,l_effective_date);
2825 FETCH csr_element_entry_details INTO l_element_type_id
2826 , l_object_version_number
2827 , l_business_group_id;
2828 CLOSE csr_element_entry_details;
2829 --
2830 --
2831 -- Query the entry IDs required for creation of the element.
2832 get_element_entry_ids(l_element_type_id
2833 ,l_effective_date
2834 ,5
2835 ,l_input_values);
2836 --
2837 pay_in_utils.set_location(g_debug, l_procedure, 70);
2838 --
2839 -- An element entry for this element already exists we have to
2840 -- update the element entry with the newly submitted date.
2841 --
2842 pay_element_entry_api.update_element_entry
2843 (p_datetrack_update_mode => get_update_mode(p_element_entry_id
2844 ,l_effective_date)
2845 ,p_effective_date => l_effective_date
2846 ,p_business_group_id => l_business_group_id
2847 ,p_element_entry_id => p_element_entry_id
2848 ,p_object_version_number => l_object_version_number
2849 -- Donation Type
2850 ,p_input_value_id1 => l_input_values(0).input_value_id
2851 -- Donation Amount
2852 ,p_input_value_id2 => l_input_values(1).input_value_id
2853 ,p_entry_value1 => p_donation_type
2854 ,p_entry_value2 => p_donation_amount
2855 ,p_effective_start_date => l_effective_start_date
2856 ,p_effective_end_date => l_effective_end_date
2857 ,p_update_warning => l_warnings
2858 );
2859 --
2860 IF g_debug THEN
2861 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
2862 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
2863 END IF;
2864 --
2865 pay_in_utils.set_location(g_debug, l_procedure, 80);
2866 --
2867 IF l_effective_end_date <> (pay_in_utils.next_tax_year(l_effective_date)-1)
2868 THEN
2869 --
2870 -- End date the entry as of the financial year end date
2871 --
2872 delete_declaration
2873 (p_element_entry_id =>l_element_entry_id
2874 ,p_effective_date =>pay_in_utils.next_tax_year(l_effective_date)-1
2875 ,p_warnings =>p_warnings);
2876 --
2877 END IF;
2878 --
2879 END IF;
2880 --
2881 IF l_warnings = TRUE THEN
2882 --
2883 p_warnings := 'TRUE';
2884 --
2885 END IF;
2886
2887 pay_in_utils.set_location(g_debug, 'Leaving: ' || l_procedure, 90);
2888 --
2889 EXCEPTION
2890 WHEN OTHERS THEN
2891 fnd_msg_pub.add_exc_msg
2892 (p_pkg_name => g_package
2893 ,p_procedure_name => 'declare_section80g'
2894 ,p_error_text => substr(sqlerrm, 1, 240)
2895 );
2896 --
2897 END declare_section80g;
2898
2899 --------------------------------------------------------------------------
2900 -- --
2901 -- Name : DECLARE_LIFE_INSURANCE_PREMIUM --
2902 -- Type : PROCEDURE --
2903 -- Access : Public --
2904 -- Description : The procedure is responsible for storing the --
2905 -- detials in 'Life Insurance Premium' element. --
2906 -- --
2907 -- Parameters : --
2908 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
2909 -- p_premium_paid VARCHAR2 --
2910 -- p_sum_assured NUMBER --
2911 -- p_effective_date DATE --
2912 -- p_element_entry_id element_entry_id%TYPE --
2913 -- OUT : p_warnings BOOLEAN --
2914 -- --
2915 -- Change History : --
2916 --------------------------------------------------------------------------
2917 -- Rev# Date Userid Description --
2918 --------------------------------------------------------------------------
2919 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
2920 --------------------------------------------------------------------------
2921 PROCEDURE declare_life_insurance_premium
2922 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
2923 ,p_premium_paid IN VARCHAR2
2924 ,p_sum_assured IN NUMBER
2925 ,p_effective_date IN DATE default null
2926 ,p_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE default null
2927 ,p_warnings OUT NOCOPY VARCHAR2)
2928 IS
2929 --
2930 l_procedure VARCHAR(100);
2931 l_message VARCHAR2(250);
2932 l_warnings BOOLEAN;
2933 l_input_values t_input_values_tab;
2934 l_element_type_id pay_element_types_f.element_type_id%TYPE;
2935 l_element_link_id pay_element_links_f.element_link_id%TYPE;
2936 l_element_entry_id pay_element_entries.element_entry_id%TYPE;
2937 l_business_group_id per_business_groups.business_group_id%TYPE;
2938 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
2939 l_effective_date DATE;
2940 l_effective_start_date DATE;
2941 l_effective_end_date DATE;
2942 --
2943 CURSOR csr_element_link_details
2944 (c_assignment_id IN per_assignments_f.assignment_id%TYPE
2945 ,c_effective_date IN DATE
2946 ,c_element_link_id IN NUMBER)
2947 IS
2948 SELECT types.element_type_id
2949 , link.element_link_id
2950 , assgn.business_group_id
2951 FROM per_assignments_f assgn
2952 , pay_element_links_f link
2953 , pay_element_types_f types
2954 WHERE assgn.assignment_id = c_assignment_id
2955 AND link.element_link_id = c_element_link_id
2956 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
2957 AND link.business_group_id = assgn.business_group_id
2958 AND link.element_type_id = types.element_type_id
2959 AND types.element_name = 'Life Insurance Premium'
2960 AND c_effective_date BETWEEN assgn.effective_start_date
2961 AND assgn.effective_end_date
2962 AND c_effective_date BETWEEN link.effective_start_date
2963 AND link.effective_end_date
2964 AND c_effective_date BETWEEN types.effective_start_date
2965 AND types.effective_end_date;
2966 --
2967 CURSOR csr_element_entry_details
2968 (c_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE
2969 ,c_effective_date IN DATE)
2970 IS
2971 SELECT entries.element_type_id
2972 , entries.object_version_number
2973 , assgn.business_group_id
2974 FROM pay_element_entries_f entries
2975 , per_assignments_f assgn
2976 WHERE entries.element_entry_id = c_element_entry_id
2977 AND entries.assignment_id = assgn.assignment_id
2978 AND c_effective_date BETWEEN entries.effective_start_date
2979 AND entries.effective_end_date
2980 AND c_effective_date BETWEEN assgn.effective_start_date
2981 AND assgn.effective_end_date;
2982 -- Added as a part of bug fix 4774108
2983 CURSOR csr_element_type_id(p_element_name VARCHAR2
2984 ,p_effective_date DATE
2985 )
2986 IS
2987 SELECT element_type_id
2988 FROM pay_element_types_f
2989 WHERE legislation_code = 'IN'
2990 AND element_name = p_element_name
2991 AND p_effective_date BETWEEN effective_start_date AND effective_end_date;
2992 BEGIN
2993 --
2994 l_procedure := g_package || 'declare_life_insurance_premium';
2995 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
2996
2997 IF g_debug THEN
2998 pay_in_utils.trace('**************************************************','********************');
2999 pay_in_utils.trace('p_assignment_id',p_assignment_id);
3000 pay_in_utils.trace('p_premium_paid ',p_premium_paid );
3001 pay_in_utils.trace('p_sum_assured',p_sum_assured);
3002 pay_in_utils.trace('p_effective_date ',p_effective_date );
3003 pay_in_utils.trace('p_element_entry_id',p_element_entry_id);
3004 pay_in_utils.trace('**************************************************','********************');
3005 END IF;
3006
3007 p_warnings := 'FALSE';
3008
3009 --
3010 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
3011 --
3012 IF (NVL(p_element_entry_id, 0) = 0) THEN
3013 --
3014 pay_in_utils.set_location(g_debug, l_procedure, 20);
3015 --
3016 -- Added as a part of bug fix 4774108
3017 OPEN csr_element_type_id('Life Insurance Premium',l_effective_date);
3018 FETCH csr_element_type_id INTO l_element_type_id;
3019 CLOSE csr_element_type_id;
3020
3021 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
3022 ,l_effective_date
3023 ,l_element_type_id
3024 );
3025 OPEN csr_element_link_details(p_assignment_id
3026 ,l_effective_date
3027 ,l_element_link_id);
3028 FETCH csr_element_link_details INTO l_element_type_id
3029 , l_element_link_id
3030 , l_business_group_id;
3031 CLOSE csr_element_link_details;
3032 --
3033 IF l_element_link_id IS NULL THEN
3034 --
3035 hr_utility.set_message(800, 'PER_IN_MISSING_LINK');
3036 hr_utility.set_message_token('ELEMENT_NAME', 'Life Insurance Premium');
3037 hr_utility.raise_error;
3038 --
3039 END IF;
3040 --
3041 pay_in_utils.set_location(g_debug, l_procedure, 30);
3042 --
3043 IF g_debug THEN
3044 pay_in_utils.trace('Element Type ID: ' , l_element_type_id);
3045 pay_in_utils.trace('Element Link ID: ' , l_element_link_id);
3046 pay_in_utils.trace('Business Group ID: ' , l_business_group_id);
3047 END IF;
3048 --
3049 -- Query the entry IDs required for creation of the element.
3050 get_element_entry_ids(l_element_type_id
3051 ,l_effective_date
3052 ,2
3053 ,l_input_values);
3054 --
3055 pay_in_utils.set_location(g_debug, l_procedure, 40);
3056 --
3057 -- In this case, we would have to create an element entry to the
3058 -- assignment and return the entry id, the rest would be handled
3059 -- by the update command in the calling procedure.
3060 pay_element_entry_api.create_element_entry
3061 (p_effective_date => l_effective_date
3062 ,p_business_group_id => l_business_group_id
3063 ,p_assignment_id => p_assignment_id
3064 ,p_element_link_id => l_element_link_id
3065 ,p_entry_type => 'E'
3066 -- Premium Paid
3067 ,p_input_value_id1 => l_input_values(0).input_value_id
3068 -- Sum Assured
3069 ,p_input_value_id2 => l_input_values(1).input_value_id
3070 ,p_entry_value1 => p_premium_paid
3071 ,p_entry_value2 => p_sum_assured
3072 ,p_effective_start_date => l_effective_start_date
3073 ,p_effective_end_date => l_effective_end_date
3074 ,p_element_entry_id => l_element_entry_id
3075 ,p_object_version_number => l_object_version_number
3076 ,p_create_warning => l_warnings
3077 );
3078 --
3079 pay_in_utils.set_location(g_debug, l_procedure, 50);
3080 --
3081 -- End date the entry as of the financial year end date
3082 --
3083 delete_declaration
3084 (p_element_entry_id => l_element_entry_id
3085 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
3086 ,p_warnings => p_warnings);
3087 --
3088 ELSE
3089 --
3090 pay_in_utils.set_location(g_debug, l_procedure, 60);
3091 --
3092 OPEN csr_element_entry_details(p_element_entry_id
3093 ,l_effective_date);
3094 FETCH csr_element_entry_details INTO l_element_type_id
3095 , l_object_version_number
3096 , l_business_group_id;
3097
3098 CLOSE csr_element_entry_details;
3099 --
3100 --
3101 -- Query the entry IDs required for creation of the element.
3102 get_element_entry_ids(l_element_type_id
3103 ,l_effective_date
3104 ,2
3105 ,l_input_values);
3106 --
3107 pay_in_utils.set_location(g_debug, l_procedure, 70);
3108 --
3109 -- An element entry for this element already exists we have to
3110 -- update the element entry with the newly submitted date.
3111 --
3112 pay_element_entry_api.update_element_entry
3113 (p_datetrack_update_mode => get_update_mode(p_element_entry_id
3114 ,l_effective_date)
3115 ,p_effective_date => l_effective_date
3116 ,p_business_group_id => l_business_group_id
3117 ,p_element_entry_id => p_element_entry_id
3118 ,p_object_version_number => l_object_version_number
3119 -- Premium Paid
3120 ,p_input_value_id1 => l_input_values(0).input_value_id
3121 -- Sum Assured
3122 ,p_input_value_id2 => l_input_values(1).input_value_id
3123 ,p_entry_value1 => p_premium_paid
3124 ,p_entry_value2 => p_sum_assured
3125 ,p_effective_start_date => l_effective_start_date
3126 ,p_effective_end_date => l_effective_end_date
3127 ,p_update_warning => l_warnings
3128 );
3129 --
3130 IF g_debug THEN
3131 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
3132 pay_in_utils.trace('Effective End Date: ' , l_effective_end_date);
3133 END IF;
3134 --
3135 pay_in_utils.set_location(g_debug, l_procedure, 80);
3136 --
3137 IF l_effective_end_date <> (pay_in_utils.next_tax_year(l_effective_date)-1)
3138 THEN
3139 --
3140 -- End date the entry as of the financial year end date
3141 --
3142 delete_declaration
3143 (p_element_entry_id =>l_element_entry_id
3144 ,p_effective_date =>pay_in_utils.next_tax_year(l_effective_date)-1
3145 ,p_warnings =>p_warnings);
3146 --
3147 END IF;
3148 --
3149 END IF;
3150 --
3151
3152 --
3153 IF l_warnings = TRUE THEN
3154 --
3155 p_warnings := 'TRUE';
3156 --
3157 END IF;
3158
3159
3160
3161 pay_in_utils.set_location(g_debug, 'Leaving: ' || l_procedure, 90);
3162
3163 EXCEPTION
3164 WHEN OTHERS THEN
3165 fnd_msg_pub.add_exc_msg
3166 (p_pkg_name => g_package
3167 ,p_procedure_name => 'declare_life_insurance_premium'
3168 ,p_error_text => substr(sqlerrm, 1, 240)
3169 );
3170 --
3171 END declare_life_insurance_premium;
3172
3173 --------------------------------------------------------------------------
3174 -- --
3175 -- Name : DECLARE_TUITION_FEE --
3176 -- Type : PROCEDURE --
3177 -- Access : Public --
3178 -- Description : The procedure is responsible for storing the --
3179 -- detials in 'Tuition Fee' element. --
3180 -- --
3181 -- Parameters : --
3182 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
3183 -- p_tuition_fee_for_child_1 NUMBER --
3184 -- p_tuition_fee_for_child_2 NUMBER --
3185 -- p_effective_date DATE --
3186 -- p_element_entry_id element_entry_id%TYPE --
3187 -- OUT : p_warnings BOOLEAN --
3188 -- --
3189 -- Change History : --
3190 --------------------------------------------------------------------------
3191 -- Rev# Date Userid Description --
3192 --------------------------------------------------------------------------
3193 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
3194 -- 1.1 25-Apr-2005 VGSRINIV Nulled out for Stat Update(Bug 4251141)--
3195 --------------------------------------------------------------------------
3196 PROCEDURE declare_tuition_fee
3197 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
3198 ,p_tuition_fee_for_child_1 IN NUMBER
3199 ,p_tuition_fee_for_child_2 IN NUMBER
3200 ,p_effective_date IN DATE DEFAULT NULL
3201 ,p_warnings OUT NOCOPY BOOLEAN)
3202 IS
3203 --
3204 l_procedure VARCHAR(100);
3205 l_message VARCHAR2(250);
3206 l_input_values t_input_values_tab;
3207 l_element_type_id pay_element_types_f.element_type_id%TYPE;
3208 l_element_link_id pay_element_links_f.element_link_id%TYPE;
3209 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
3210 l_business_group_id per_business_groups.business_group_id%TYPE;
3211 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
3212 l_effective_start_date DATE;
3213 l_effective_end_date DATE;
3214 l_effective_date DATE;
3215 l_warnings VARCHAR2(6);
3216 --
3217 BEGIN
3218 --
3219 l_procedure := g_package || 'declare_tuition_fee';
3220 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
3221
3222 IF g_debug THEN
3223 pay_in_utils.trace('**************************************************','********************');
3224 pay_in_utils.trace('p_assignment_id',p_assignment_id);
3225 pay_in_utils.trace('p_tuition_fee_for_child_1 ',p_tuition_fee_for_child_1 );
3226 pay_in_utils.trace('p_tuition_fee_for_child_2 ',p_tuition_fee_for_child_2 );
3227 pay_in_utils.trace('p_effective_date ',p_effective_date );
3228 pay_in_utils.trace('**************************************************','********************');
3229 END IF;
3230
3231 --
3232 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,20);
3233 --
3234 EXCEPTION
3235 WHEN OTHERS THEN
3236 fnd_msg_pub.add_exc_msg
3237 (p_pkg_name => g_package
3238 ,p_procedure_name => 'declare_tuition_fee'
3239 ,p_error_text => substr(sqlerrm, 1, 240)
3240 );
3241 --
3242 END declare_tuition_fee;
3243
3244 /* BUG 4251141: STAT UPDATE 2005 CHANGES START HERE */
3245
3246 --------------------------------------------------------------------------
3247 -- --
3248 -- Name : DECLARE_SECTION80CCE --
3249 -- Type : PROCEDURE --
3250 -- Access : Public --
3251 -- Description : The procedure is responsible for storing the --
3252 -- detials in 'Deduction under Section 80CCE' element. --
3253 -- --
3254 -- Parameters : --
3255 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
3256 -- p_investment_type VARCHAR2 --
3257 -- p_investment_amount NUMBER --
3258 -- p_effective_date DATE --
3259 -- p_element_entry_id element_entry_id%TYPE --
3260 -- OUT : p_warnings BOOLEAN --
3261 -- --
3262 -- Change History : --
3263 --------------------------------------------------------------------------
3264 -- Rev# Date Userid Description --
3265 --------------------------------------------------------------------------
3266 -- 1.0 14-Apr-2005 VGSRINIV Initial Version --
3267 --------------------------------------------------------------------------
3268
3269 PROCEDURE declare_section80cce
3270 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
3271 ,p_investment_type IN VARCHAR2
3272 ,p_investment_amount IN NUMBER
3273 ,p_effective_date IN DATE default null
3274 ,p_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE DEFAULT NULL
3275 ,p_warnings OUT NOCOPY VARCHAR2)
3276 IS
3277 --
3278 l_procedure VARCHAR(100);
3279 l_message VARCHAR2(250);
3280 l_warnings BOOLEAN;
3281 l_input_values t_input_values_tab;
3282 l_element_type_id pay_element_types_f.element_type_id%TYPE;
3283 l_element_link_id pay_element_links_f.element_link_id%TYPE;
3284 l_element_entry_id pay_element_entries.element_entry_id%TYPE;
3285 l_business_group_id per_business_groups.business_group_id%TYPE;
3286 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
3287 l_effective_date DATE;
3288 l_effective_start_date DATE;
3289 l_effective_end_date DATE;
3290 l_ele_entry_id pay_element_entries.element_entry_id%TYPE;
3291 l_ovn pay_element_entries_f.object_version_number%TYPE;
3292 l_entry_value pay_element_entry_values_f.screen_entry_value%TYPE;
3293 l_element_name pay_element_types_f.element_name%TYPE;
3294 l_token1 VARCHAR2(240);
3295 --
3296 CURSOR csr_element_link_details
3297 (c_assignment_id IN per_assignments_f.assignment_id%TYPE
3298 ,c_effective_date IN DATE
3299 ,c_element_name IN pay_element_types_f.element_name%TYPE)
3300 IS
3301 SELECT types.element_type_id
3302 , link.element_link_id
3303 , assgn.business_group_id
3304 FROM per_assignments_f assgn
3305 , pay_element_links_f link
3306 , pay_element_types_f types
3307 WHERE assgn.assignment_id = c_assignment_id
3308 AND link.element_link_id = pay_in_utils.get_element_link_id(c_assignment_id
3309 ,c_effective_date
3310 ,types.element_type_id
3311 )
3312 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
3313 AND link.business_group_id = assgn.business_group_id
3314 AND link.element_type_id = types.element_type_id
3315 AND types.element_name = c_element_name--'Deduction under Section 80CCE'
3316 AND c_effective_date BETWEEN assgn.effective_start_date
3317 AND assgn.effective_end_date
3318 AND c_effective_date BETWEEN link.effective_start_date
3319 AND link.effective_end_date
3320 AND c_effective_date BETWEEN types.effective_start_date
3321 AND types.effective_end_date;
3322 --
3323 CURSOR csr_element_entry_details
3324 (c_element_entry_id IN pay_element_entries_f.element_entry_id%TYPE
3325 ,c_effective_date IN DATE)
3326 IS
3327 SELECT entries.element_type_id
3328 , entries.object_version_number
3329 , assgn.business_group_id
3330 FROM pay_element_entries_f entries
3331 , per_assignments_f assgn
3332 WHERE entries.element_entry_id = c_element_entry_id
3333 AND entries.assignment_id = assgn.assignment_id
3334 AND c_effective_date BETWEEN entries.effective_start_date
3335 AND entries.effective_end_date
3336 AND c_effective_date BETWEEN assgn.effective_start_date
3337 AND assgn.effective_end_date;
3338
3339 CURSOR c_check_entry(c_element_name IN pay_element_types_f.element_name%TYPE
3340 ,c_effective_date IN DATE)
3341 IS
3342 SELECT entries.element_entry_id entry_id
3343 ,entries.object_version_number
3344 ,value2.screen_entry_value
3345 FROM per_assignments_f assgn
3346 , pay_element_links_f link
3347 , pay_element_types_f types
3348 , pay_element_entries_f entries
3349 , pay_element_entry_values_f value1
3350 , pay_input_values_f inputs1
3351 , pay_element_entry_values_f value2
3352 , pay_input_values_f inputs2
3353 WHERE assgn.assignment_id = p_assignment_id
3354 AND link.element_link_id = pay_in_utils.get_element_link_id(p_assignment_id
3355 ,c_effective_date
3356 ,types.element_type_id
3357 )
3358 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
3359 AND link.business_group_id = assgn.business_group_id
3360 AND link.element_type_id = types.element_type_id
3361 AND types.element_name = c_element_name--'Deduction under Section 80CCE'
3362 AND entries.element_type_id = types.element_type_id
3363 AND entries.element_link_id = link.element_link_id
3364 AND entries.assignment_id = assgn.assignment_id
3365 AND value1.element_entry_id = entries.element_entry_id
3366 AND inputs1.input_value_id = value1.input_value_id
3367 AND inputs1.element_type_id = types.element_type_id
3368 AND inputs1.name = 'Component Name'
3369 AND value2.element_entry_id = entries.element_entry_id
3370 AND inputs2.input_value_id = value2.input_value_id
3371 AND inputs2.element_type_id = types.element_type_id
3372 AND inputs2.name = 'Investment Amount'
3373 AND c_effective_date BETWEEN assgn.effective_start_date AND assgn.effective_end_date
3374 AND c_effective_date BETWEEN link.effective_start_date AND link.effective_end_date
3375 AND c_effective_date BETWEEN types.effective_start_date AND types.effective_end_date
3376 AND c_effective_date BETWEEN entries.effective_start_date AND entries.effective_end_date
3377 AND c_effective_date BETWEEN inputs1.effective_start_date AND inputs1.effective_end_date
3378 AND c_effective_date BETWEEN value1.effective_start_date AND value1.effective_end_date
3379 AND c_effective_date BETWEEN inputs2.effective_start_date AND inputs2.effective_end_date
3380 AND c_effective_date BETWEEN value2.effective_start_date AND value2.effective_end_date
3381 AND value1.screen_entry_value = p_investment_type;
3382
3383 CURSOR c_screen_entry_value(p_effective_date DATE)
3384 IS
3385 SELECT peev.screen_entry_value
3386 FROM pay_element_entries_f peef,
3387 pay_input_values_f piv,
3388 pay_element_entry_values_f peev
3389 WHERE peef.element_entry_id = p_element_entry_id
3390 AND piv.element_type_id = peef.element_type_id
3391 AND piv.name = 'Component Name'
3392 AND peev.input_value_id = piv.input_value_id
3393 AND peev.element_entry_id = peef.element_entry_id
3394 AND piv.legislation_code = 'IN'
3395 AND p_effective_date BETWEEN peev.effective_start_date AND peev.effective_end_date
3396 AND p_effective_date BETWEEN piv.effective_start_date AND piv.effective_end_date
3397 AND p_effective_date BETWEEN peef.effective_start_date AND peef.effective_end_date;
3398
3399 BEGIN
3400 --
3401 l_procedure := g_package || 'declare_section80cce';
3402 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
3403
3404 IF g_debug THEN
3405 pay_in_utils.trace('**************************************************','********************');
3406 pay_in_utils.trace('p_assignment_id',p_assignment_id);
3407 pay_in_utils.trace('p_investment_type ',p_investment_type );
3408 pay_in_utils.trace('p_investment_amount',p_investment_amount);
3409 pay_in_utils.trace('p_effective_date ',p_effective_date );
3410 pay_in_utils.trace('p_element_entry_id',p_element_entry_id);
3411 pay_in_utils.trace('**************************************************','********************');
3412 END IF;
3413
3414 p_warnings := 'FALSE';
3415
3416
3417 --
3418 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
3419
3420 hr_session_utilities.insert_session_row(l_effective_date);
3421 --
3422 SELECT DECODE(p_investment_type
3423 ,'Pension Fund 80CCC','Pension Fund 80CCC'
3424 ,'Deferred Annuity','Deferred Annuity'
3425 ,'Senior Citizens Savings Scheme','Senior Citizens Savings Scheme'
3426 ,'Deduction under Section 80CCE'
3427 )
3428 INTO l_element_name
3429 FROM dual;
3430
3431 IF (p_element_entry_id IS NOT NULL)
3432 THEN
3433 OPEN c_screen_entry_value(l_effective_date);
3434 FETCH c_screen_entry_value INTO l_token1;
3435 CLOSE c_screen_entry_value;
3436
3437 IF (l_token1 <> p_investment_type)
3438 THEN
3439 --
3440 p_warnings := 'PER_IN_INVESTMENT_80CCE'||l_token1;
3441 RETURN;
3442 --
3443 END IF;
3444 END IF;
3445
3446 IF (NVL(p_element_entry_id, 0) = 0) THEN
3447 --
3448 pay_in_utils.set_location(g_debug, l_procedure, 20);
3449 --
3450 OPEN csr_element_link_details(p_assignment_id
3451 ,l_effective_date
3452 ,l_element_name);
3453 FETCH csr_element_link_details INTO l_element_type_id
3454 , l_element_link_id
3455 , l_business_group_id;
3456 CLOSE csr_element_link_details;
3457 --
3458 pay_in_utils.set_location(g_debug, l_procedure, 30);
3459 --
3460 IF l_element_link_id IS NULL THEN
3461 --
3462 hr_utility.set_message(800, 'PER_IN_MISSING_LINK');
3463 hr_utility.set_message_token('ELEMENT_NAME', l_element_name);--'Deduction under Section 80CCE');
3464 hr_utility.raise_error;
3465 --
3466 END IF;
3467 --
3468 IF g_debug THEN
3469 pay_in_utils.trace('Element Type ID: ', l_element_type_id);
3470 pay_in_utils.trace('Element Link ID: ', l_element_link_id);
3471 pay_in_utils.trace('Business Group ID: ', l_business_group_id);
3472 END IF;
3473 --
3474 -- Query the entry IDs required for creation of the element.
3475 get_element_entry_ids(l_element_type_id
3476 ,l_effective_date
3477 ,2
3478 ,l_input_values);
3479 --
3480 pay_in_utils.set_location(g_debug, l_procedure, 40);
3481
3482 -- Check if the element entry with same component is already present.
3483 -- If so then Update the same element by adding the investment amount
3484 -- to the existing one
3485 OPEN c_check_entry(l_element_name,l_effective_date);
3486 FETCH c_check_entry INTO l_ele_entry_id,l_ovn,l_entry_value;
3487 IF c_check_entry%FOUND THEN
3488
3489 pay_element_entry_api.update_element_entry
3490 (p_datetrack_update_mode => get_update_mode(l_ele_entry_id
3491 ,l_effective_date)
3492 ,p_effective_date => l_effective_date
3493 ,p_business_group_id => l_business_group_id
3494 ,p_element_entry_id => l_ele_entry_id
3495 ,p_object_version_number => l_ovn
3496 -- Investment Amount
3497 ,p_input_value_id1 => l_input_values(0).input_value_id
3498 -- Investment Type
3499 ,p_input_value_id2 => l_input_values(1).input_value_id
3500 ,p_entry_value1 => p_investment_amount+l_entry_value
3501 ,p_entry_value2 => p_investment_type
3502 ,p_effective_start_date => l_effective_start_date
3503 ,p_effective_end_date => l_effective_end_date
3504 ,p_update_warning => l_warnings
3505 );
3506
3507 IF l_effective_end_date <> (pay_in_utils.next_tax_year(l_effective_date)-1)
3508 THEN
3509 --
3510 -- End date the entry as of the financial year end date
3511 --
3512 delete_declaration
3513 (p_element_entry_id =>l_element_entry_id
3514 ,p_effective_date =>pay_in_utils.next_tax_year(l_effective_date)-1
3515 ,p_warnings =>p_warnings);
3516 --
3517 END IF;
3518
3519 ELSE /* If Element Entry does not exist */
3520 --
3521 -- In this case, we would have to create an element entry to the
3522 -- assignment and return the entry id, the rest would be handled
3523 -- by the update command in the calling procedure.
3524 pay_element_entry_api.create_element_entry
3525 (p_effective_date => l_effective_date
3526 ,p_business_group_id => l_business_group_id
3527 ,p_assignment_id => p_assignment_id
3528 ,p_element_link_id => l_element_link_id
3529 ,p_entry_type => 'E'
3530 -- Investment Amount
3531 ,p_input_value_id1 => l_input_values(0).input_value_id
3532 -- Investment Type
3533 ,p_input_value_id2 => l_input_values(1).input_value_id
3534 ,p_entry_value1 => p_investment_amount
3535 ,p_entry_value2 => p_investment_type
3536 ,p_effective_start_date => l_effective_start_date
3537 ,p_effective_end_date => l_effective_end_date
3538 ,p_element_entry_id => l_element_entry_id
3539 ,p_object_version_number => l_object_version_number
3540 ,p_create_warning => l_warnings
3541 );
3542 --
3543 pay_in_utils.set_location(g_debug, l_procedure, 50);
3544 --
3545 -- End date the entry as of the financial year end date
3546 --
3547 delete_declaration
3548 (p_element_entry_id => l_element_entry_id
3549 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
3550 ,p_warnings => p_warnings);
3551
3552 END IF;
3553 CLOSE c_check_entry;
3554 --
3555 ELSE
3556 --
3557 pay_in_utils.set_location(g_debug, l_procedure, 60);
3558 --
3559 OPEN csr_element_entry_details(p_element_entry_id
3560 ,l_effective_date);
3561 FETCH csr_element_entry_details INTO l_element_type_id
3562 , l_object_version_number
3563 , l_business_group_id;
3564 CLOSE csr_element_entry_details;
3565 --
3566 --
3567 -- Query the entry IDs required for creation of the element.
3568 get_element_entry_ids(l_element_type_id
3569 ,l_effective_date
3570 ,2
3571 ,l_input_values);
3572 --
3573 pay_in_utils.set_location(g_debug, l_procedure, 70);
3574 --
3575 -- An element entry for this element already exists we have to
3576 -- update the element entry with the newly submitted date.
3577 --
3578 pay_element_entry_api.update_element_entry
3579 (p_datetrack_update_mode => get_update_mode(p_element_entry_id
3580 ,l_effective_date)
3581 ,p_effective_date => l_effective_date
3582 ,p_business_group_id => l_business_group_id
3583 ,p_element_entry_id => p_element_entry_id
3584 ,p_object_version_number => l_object_version_number
3585 -- Investment Amount
3586 ,p_input_value_id1 => l_input_values(0).input_value_id
3587 -- Investment Type
3588 ,p_input_value_id2 => l_input_values(1).input_value_id
3589 ,p_entry_value1 => p_investment_amount
3590 ,p_entry_value2 => p_investment_type
3591 ,p_effective_start_date => l_effective_start_date
3592 ,p_effective_end_date => l_effective_end_date
3593 ,p_update_warning => l_warnings
3594 );
3595 --
3596 IF g_debug THEN
3597 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
3598 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
3599 END IF;
3600 --
3601 pay_in_utils.set_location(g_debug, l_procedure, 80);
3602 --
3603 IF l_effective_end_date <> (pay_in_utils.next_tax_year(l_effective_date)-1)
3604 THEN
3605 --
3606 -- End date the entry as of the financial year end date
3607 --
3608 delete_declaration
3609 (p_element_entry_id =>l_element_entry_id
3610 ,p_effective_date =>pay_in_utils.next_tax_year(l_effective_date)-1
3611 ,p_warnings =>p_warnings);
3612 --
3613 END IF;
3614 --
3615 END IF;
3616 --
3617 IF l_warnings = TRUE THEN
3618 --
3619 p_warnings := 'TRUE';
3620 --
3621 END IF;
3622 --
3623
3624 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,90);
3625 --
3626 EXCEPTION
3627 WHEN OTHERS THEN
3628 fnd_msg_pub.add_exc_msg
3629 (p_pkg_name => g_package
3630 ,p_procedure_name => 'declare_section80cce'
3631 ,p_error_text => substr(sqlerrm, 1, 240)
3632 );
3633 --
3634 END declare_section80cce;
3635
3636 --------------------------------------------------------------------------
3637 -- --
3638 -- Name : DECLARE_SECTION80GG --
3639 -- Type : PROCEDURE --
3640 -- Access : Public --
3641 -- Description : The procedure is responsible for storing the --
3642 -- detials in 'Deduction under Section 80GG' element. --
3643 -- --
3644 -- Parameters : --
3645 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
3646 -- p_effective_date DATE --
3647 -- p_claim_exemp_under_sec_80gg VARCHAR2 --
3648 -- OUT : p_warnings BOOLEAN --
3649 -- --
3650 -- Change History : --
3651 --------------------------------------------------------------------------
3652 -- Rev# Date Userid Description --
3653 --------------------------------------------------------------------------
3654 -- 1.0 14-Apr-2005 VGSRINIV Initial Version --
3655 --------------------------------------------------------------------------
3656
3657 PROCEDURE declare_section80gg
3658 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
3659 ,p_effective_date IN DATE DEFAULT NULL
3660 ,p_claim_exemp_under_sec_80gg IN VARCHAR2
3661 ,p_warnings OUT NOCOPY BOOLEAN)
3662 IS
3663
3664 l_procedure VARCHAR(100);
3665 l_message VARCHAR2(250);
3666 l_input_values t_input_values_tab;
3667 l_element_type_id pay_element_types_f.element_type_id%TYPE;
3668 l_element_link_id pay_element_links_f.element_link_id%TYPE;
3669 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
3670 l_business_group_id per_business_groups.business_group_id%TYPE;
3671 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
3672 l_effective_start_date DATE;
3673 l_effective_end_date DATE;
3674 l_effective_date DATE;
3675 l_endation_date DATE;
3676 l_warnings VARCHAR2(6);
3677 --
3678 BEGIN
3679 --
3680 l_procedure := g_package || 'declare_section80gg';
3681 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
3682
3683 IF g_debug THEN
3684 pay_in_utils.trace('**************************************************','********************');
3685 pay_in_utils.trace('p_assignment_id',p_assignment_id);
3686 pay_in_utils.trace('p_effective_date ',p_effective_date );
3687 pay_in_utils.trace('p_claim_exemp_under_sec_80gg',p_claim_exemp_under_sec_80gg);
3688 pay_in_utils.trace('**************************************************','********************');
3689 END IF;
3690 --
3691 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
3692
3693
3694 get_entry_details(p_assignment_id => p_assignment_id
3695 ,p_element_name => 'Deduction under Section 80GG'
3696 ,p_effective_date => l_effective_date
3697 ,p_element_type_id => l_element_type_id
3698 ,p_element_link_id => l_element_link_id
3699 ,p_element_entry_id => l_element_entry_id
3700 ,p_expected_entries => 1
3701 ,p_business_group_id => l_business_group_id
3702 ,p_object_version_number=> l_object_version_number
3703 ,p_input_values => l_input_values
3704 );
3705 --
3706 IF g_debug THEN
3707 pay_in_utils.trace('Element Type ID: ' , l_element_type_id);
3708 pay_in_utils.trace('Element Entry ID: ' , l_element_entry_id);
3709 pay_in_utils.trace('Business Group ID: ' , l_business_group_id);
3710 pay_in_utils.trace('Object Version Number: ' , l_object_version_number);
3711 END IF;
3712
3713 --
3714 pay_in_utils.set_location(g_debug, l_procedure, 20);
3715 --
3716 IF l_element_entry_id is null THEN
3717 --
3718 pay_in_utils.set_location(g_debug, l_procedure, 30);
3719 --
3720 --
3721 -- In this case, we would have to create an element entry to the
3722 -- assignment and return the entry id, the rest would be handled
3723 -- by the update command in the calling procedure.
3724 --
3725 pay_element_entry_api.create_element_entry
3726 (p_effective_date => l_effective_date
3727 ,p_business_group_id => l_business_group_id
3728 ,p_assignment_id => p_assignment_id
3729 ,p_element_link_id => l_element_link_id
3730 ,p_entry_type => 'E'
3731 --Claim Exemption under Sec 80GG
3732 ,p_input_value_id1 => l_input_values(0).input_value_id
3733 ,p_entry_value1 => p_claim_exemp_under_sec_80gg
3734 ,p_effective_start_date => l_effective_start_date
3735 ,p_effective_end_date => l_effective_end_date
3736 ,p_element_entry_id => l_element_entry_id
3737 ,p_object_version_number => l_object_version_number
3738 ,p_create_warning => p_warnings
3739 );
3740 --
3741 pay_in_utils.set_location(g_debug, l_procedure, 40);
3742 --
3743 -- End date the entry as of the financial year end date
3744 --
3745 --
3746 pay_in_utils.set_location(g_debug, l_procedure, 45);
3747 --
3748 delete_declaration
3749 (p_element_entry_id => l_element_entry_id
3750 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
3751 ,p_warnings => l_warnings);
3752 --
3753 --
3754 ELSE
3755 --
3756 pay_in_utils.set_location(g_debug, l_procedure, 50);
3757 --
3758 --
3759 -- An element entry for this element already exists we have to
3760 -- update the element entry with the newly submitted date.
3761 --
3762 pay_element_entry_api.update_element_entry
3763 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
3764 ,l_effective_date)
3765 ,p_effective_date => l_effective_date
3766 ,p_business_group_id => l_business_group_id
3767 ,p_element_entry_id => l_element_entry_id
3768 ,p_object_version_number => l_object_version_number
3769 --Claim Exemption under Sec 80GG
3770 ,p_input_value_id1 => l_input_values(0).input_value_id
3771 ,p_entry_value1 => p_claim_exemp_under_sec_80gg
3772 ,p_effective_start_date => l_effective_start_date
3773 ,p_effective_end_date => l_effective_end_date
3774 ,p_update_warning => p_warnings
3775 );
3776 --
3777 --
3778 pay_in_utils.set_location(g_debug, l_procedure, 60);
3779 --
3780 l_endation_date := pay_in_utils.next_tax_year(l_effective_date);
3781 --
3782 IF l_effective_end_date <> (l_endation_date - 1) THEN
3783 --
3784 -- End date the entry as of the financial year end date
3785 --
3786 delete_declaration
3787 (p_element_entry_id =>l_element_entry_id
3788 ,p_effective_date =>l_endation_date-1
3789 ,p_warnings =>l_warnings);
3790 --
3791 END IF;
3792 --
3793
3794 --
3795 END IF;
3796 --
3797 IF g_debug THEN
3798 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
3799 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
3800 END IF;
3801
3802 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
3803 --
3804 EXCEPTION
3805 WHEN OTHERS THEN
3806 fnd_msg_pub.add_exc_msg
3807 (p_pkg_name => g_package
3808 ,p_procedure_name => 'declare_section80gg'
3809 ,p_error_text => substr(sqlerrm, 1, 240)
3810 );
3811
3812 END;
3813
3814 --------------------------------------------------------------------------
3815 -- --
3816 -- Name : DECLARE_SECTION80E --
3817 -- Type : PROCEDURE --
3818 -- Access : Public --
3819 -- Description : The procedure is responsible for storing the --
3820 -- detials in 'Deduction under Section 80E' element. --
3821 -- --
3822 -- Parameters : --
3823 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
3824 -- p_effective_date DATE --
3825 -- p_higher_education_loan_80e NUMBER --
3826 -- OUT : p_warnings BOOLEAN --
3827 -- --
3828 -- Change History : --
3829 --------------------------------------------------------------------------
3830 -- Rev# Date Userid Description --
3831 --------------------------------------------------------------------------
3832 -- 1.0 14-Apr-2005 VGSRINIV Initial Version --
3833 --------------------------------------------------------------------------
3834
3835 PROCEDURE declare_section80e
3836 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
3837 ,p_effective_date IN DATE DEFAULT NULL
3838 ,p_higher_education_loan_80e IN NUMBER DEFAULT NULL
3839 ,p_warnings OUT NOCOPY BOOLEAN)
3840 IS
3841
3842 l_procedure VARCHAR(100);
3843 l_message VARCHAR2(250);
3844 l_input_values t_input_values_tab;
3845 l_element_type_id pay_element_types_f.element_type_id%TYPE;
3846 l_element_link_id pay_element_links_f.element_link_id%TYPE;
3847 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
3848 l_business_group_id per_business_groups.business_group_id%TYPE;
3849 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
3850 l_effective_start_date DATE;
3851 l_effective_end_date DATE;
3852 l_effective_date DATE;
3853 l_endation_date DATE;
3854 l_warnings VARCHAR2(6);
3855 --
3856 BEGIN
3857 --
3858 l_procedure := g_package || 'declare_section80e';
3859 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
3860
3861 IF g_debug THEN
3862 pay_in_utils.trace('**************************************************','********************');
3863 pay_in_utils.trace('p_assignment_id',p_assignment_id);
3864 pay_in_utils.trace('p_effective_date ',p_effective_date );
3865 pay_in_utils.trace('p_higher_education_loan_80e ',p_higher_education_loan_80e);
3866 pay_in_utils.trace('**************************************************','********************');
3867 END IF;
3868 --
3869 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
3870 --
3871
3872
3873 get_entry_details(p_assignment_id => p_assignment_id
3874 ,p_element_name => 'Deduction under Section 80E'
3875 ,p_effective_date => l_effective_date
3876 ,p_element_type_id => l_element_type_id
3877 ,p_element_link_id => l_element_link_id
3878 ,p_element_entry_id => l_element_entry_id
3879 ,p_expected_entries => 2
3880 ,p_business_group_id => l_business_group_id
3881 ,p_object_version_number=> l_object_version_number
3882 ,p_input_values => l_input_values
3883 );
3884 --
3885 IF g_debug THEN
3886 hr_utility.trace('Element Type ID: ' || l_element_type_id);
3887 hr_utility.trace('Element Entry ID: ' || l_element_entry_id);
3888 hr_utility.trace('Business Group ID: ' || l_business_group_id);
3889 hr_utility.trace('Object Version Number: ' || l_object_version_number);
3890 END IF;
3891 --
3892 pay_in_utils.set_location(g_debug, l_procedure, 20);
3893 --
3894 IF l_element_entry_id is null THEN
3895 --
3896 pay_in_utils.set_location(g_debug, l_procedure, 30);
3897 --
3898 --
3899 -- In this case, we would have to create an element entry to the
3900 -- assignment and return the entry id, the rest would be handled
3901 -- by the update command in the calling procedure.
3902 --
3903 pay_element_entry_api.create_element_entry
3904 (p_effective_date => l_effective_date
3905 ,p_business_group_id => l_business_group_id
3906 ,p_assignment_id => p_assignment_id
3907 ,p_element_link_id => l_element_link_id
3908 ,p_entry_type => 'E'
3909 --Claim Exemption under Sec 80E
3910 ,p_input_value_id1 => l_input_values(0).input_value_id
3911 ,p_entry_value1 => p_higher_education_loan_80e
3912 ,p_effective_start_date => l_effective_start_date
3913 ,p_effective_end_date => l_effective_end_date
3914 ,p_element_entry_id => l_element_entry_id
3915 ,p_object_version_number => l_object_version_number
3916 ,p_create_warning => p_warnings
3917 );
3918 --
3919 pay_in_utils.set_location(g_debug, l_procedure, 40);
3920 --
3921 -- End date the entry as of the financial year end date
3922 --
3923 --
3924 pay_in_utils.set_location(g_debug, l_procedure, 45);
3925 --
3926 delete_declaration
3927 (p_element_entry_id => l_element_entry_id
3928 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
3929 ,p_warnings => l_warnings);
3930 --
3931 --
3932 ELSE
3933 --
3934 pay_in_utils.set_location(g_debug, l_procedure, 50);
3935 --
3936 --
3937 -- An element entry for this element already exists we have to
3938 -- update the element entry with the newly submitted date.
3939 --
3940 IF p_higher_education_loan_80e > 0 THEN
3941
3942 pay_element_entry_api.update_element_entry
3943 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
3944 ,l_effective_date)
3945 ,p_effective_date => l_effective_date
3946 ,p_business_group_id => l_business_group_id
3947 ,p_element_entry_id => l_element_entry_id
3948 ,p_object_version_number => l_object_version_number
3949 --Claim Exemption under Sec 80E
3950 ,p_input_value_id1 => l_input_values(0).input_value_id
3951 ,p_entry_value1 => p_higher_education_loan_80e
3952 ,p_effective_start_date => l_effective_start_date
3953 ,p_effective_end_date => l_effective_end_date
3954 ,p_update_warning => p_warnings
3955 );
3956 --
3957 --
3958 pay_in_utils.set_location(g_debug, l_procedure, 60);
3959 --
3960 l_endation_date := pay_in_utils.next_tax_year(l_effective_date);
3961
3962 IF l_effective_end_date <> (l_endation_date - 1) THEN
3963 --
3964 -- End date the entry as of the financial year end date
3965 --
3966 delete_declaration
3967 (p_element_entry_id =>l_element_entry_id
3968 ,p_effective_date =>l_endation_date-1
3969 ,p_warnings =>l_warnings);
3970 --
3971 END IF;
3972
3973 ELSE
3974
3975 delete_declaration
3976 (p_element_entry_id =>l_element_entry_id
3977 ,p_effective_date =>l_effective_date
3978 ,p_warnings =>l_warnings);
3979
3980 END IF;
3981 --
3982
3983 --
3984 END IF;
3985 --
3986 IF g_debug THEN
3987 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
3988 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
3989 END IF;
3990
3991 --
3992 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,80);
3993 --
3994 EXCEPTION
3995 WHEN OTHERS THEN
3996 fnd_msg_pub.add_exc_msg
3997 (p_pkg_name => g_package
3998 ,p_procedure_name => 'declare_section80e'
3999 ,p_error_text => substr(sqlerrm, 1, 240)
4000 );
4001
4002 END;
4003
4004 --------------------------------------------------------------------------
4005 -- --
4006 -- Name : DECLARE_SECTION80GGA --
4007 -- Type : PROCEDURE --
4008 -- Access : Public --
4009 -- Description : The procedure is responsible for storing the --
4010 -- detials in 'Deduction under Section 80GGA' element. --
4011 -- --
4012 -- Parameters : --
4013 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
4014 -- p_effective_date DATE --
4015 -- p_donation_for_research_80gga NUMBER --
4016 -- OUT : p_warnings BOOLEAN --
4017 -- --
4018 -- Change History : --
4019 --------------------------------------------------------------------------
4020 -- Rev# Date Userid Description --
4021 --------------------------------------------------------------------------
4022 -- 1.0 14-Apr-2005 VGSRINIV Initial Version --
4023 --------------------------------------------------------------------------
4024
4025 PROCEDURE declare_section80gga
4026 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
4027 ,p_effective_date IN DATE DEFAULT NULL
4028 ,p_donation_for_research_80gga IN NUMBER DEFAULT NULL
4029 ,p_warnings OUT NOCOPY BOOLEAN)
4030 IS
4031
4032 l_procedure VARCHAR(100);
4033 l_message VARCHAR2(250);
4034 l_input_values t_input_values_tab;
4035 l_element_type_id pay_element_types_f.element_type_id%TYPE;
4036 l_element_link_id pay_element_links_f.element_link_id%TYPE;
4037 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
4038 l_business_group_id per_business_groups.business_group_id%TYPE;
4039 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
4040 l_effective_start_date DATE;
4041 l_effective_end_date DATE;
4042 l_effective_date DATE;
4043 l_endation_date DATE;
4044 l_warnings VARCHAR2(6);
4045 --
4046 BEGIN
4047 --
4048 l_procedure := g_package || 'declare_section80gga';
4049 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
4050
4051 IF g_debug THEN
4052 pay_in_utils.trace('**************************************************','********************');
4053 pay_in_utils.trace('p_assignment_id',p_assignment_id);
4054 pay_in_utils.trace('p_effective_date ',p_effective_date );
4055 pay_in_utils.trace('p_donation_for_research_80gga ',p_donation_for_research_80gga);
4056 pay_in_utils.trace('**************************************************','********************');
4057 END IF;
4058 --
4059 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
4060 --
4061 --
4062
4063 get_entry_details(p_assignment_id => p_assignment_id
4064 ,p_element_name => 'Deduction under Section 80GGA'
4065 ,p_effective_date => l_effective_date
4066 ,p_element_type_id => l_element_type_id
4067 ,p_element_link_id => l_element_link_id
4068 ,p_element_entry_id => l_element_entry_id
4069 ,p_expected_entries => 3
4070 ,p_business_group_id => l_business_group_id
4071 ,p_object_version_number=> l_object_version_number
4072 ,p_input_values => l_input_values
4073 );
4074 --
4075 IF g_debug THEN
4076 pay_in_utils.trace('Element Type ID: ' , l_element_type_id);
4077 pay_in_utils.trace('Element Entry ID: ' , l_element_entry_id);
4078 pay_in_utils.trace('Business Group ID: ' , l_business_group_id);
4079 pay_in_utils.trace('Object Version Number: ' , l_object_version_number);
4080 END IF;
4081
4082 --
4083 pay_in_utils.set_location(g_debug, l_procedure, 20);
4084 --
4085 IF l_element_entry_id is null THEN
4086 --
4087 pay_in_utils.set_location(g_debug, l_procedure, 30);
4088 --
4089 --
4090 -- In this case, we would have to create an element entry to the
4091 -- assignment and return the entry id, the rest would be handled
4092 -- by the update command in the calling procedure.
4093 --
4094 pay_element_entry_api.create_element_entry
4095 (p_effective_date => l_effective_date
4096 ,p_business_group_id => l_business_group_id
4097 ,p_assignment_id => p_assignment_id
4098 ,p_element_link_id => l_element_link_id
4099 ,p_entry_type => 'E'
4100 --Deduction under Sec 80GGA
4101 ,p_input_value_id1 => l_input_values(0).input_value_id
4102 ,p_entry_value1 => p_donation_for_research_80gga
4103 ,p_effective_start_date => l_effective_start_date
4104 ,p_effective_end_date => l_effective_end_date
4105 ,p_element_entry_id => l_element_entry_id
4106 ,p_object_version_number => l_object_version_number
4107 ,p_create_warning => p_warnings
4108 );
4109 --
4110 pay_in_utils.set_location(g_debug, l_procedure, 40);
4111 --
4112 -- End date the entry as of the financial year end date
4113 --
4114 --
4115 pay_in_utils.set_location(g_debug, l_procedure, 45);
4116 --
4117 delete_declaration
4118 (p_element_entry_id => l_element_entry_id
4119 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
4120 ,p_warnings => l_warnings);
4121 --
4122 --
4123 ELSE
4124 --
4125 pay_in_utils.set_location(g_debug, l_procedure, 50);
4126 --
4127 --
4128 -- An element entry for this element already exists we have to
4129 -- update the element entry with the newly submitted date.
4130 --
4131 IF p_donation_for_research_80gga > 0 THEN
4132
4133 pay_element_entry_api.update_element_entry
4134 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
4135 ,l_effective_date)
4136 ,p_effective_date => l_effective_date
4137 ,p_business_group_id => l_business_group_id
4138 ,p_element_entry_id => l_element_entry_id
4139 ,p_object_version_number => l_object_version_number
4140 --Deduction under Sec 80GGA
4141 ,p_input_value_id1 => l_input_values(0).input_value_id
4142 ,p_entry_value1 => p_donation_for_research_80gga
4143 ,p_effective_start_date => l_effective_start_date
4144 ,p_effective_end_date => l_effective_end_date
4145 ,p_update_warning => p_warnings
4146 );
4147 --
4148 --
4149 pay_in_utils.set_location(g_debug, l_procedure, 60);
4150 --
4151 l_endation_date := pay_in_utils.next_tax_year(l_effective_date);
4152 --
4153 IF l_effective_end_date <> (l_endation_date - 1) THEN
4154 --
4155 -- End date the entry as of the financial year end date
4156 --
4157 delete_declaration
4158 (p_element_entry_id =>l_element_entry_id
4159 ,p_effective_date =>l_endation_date-1
4160 ,p_warnings =>l_warnings);
4161 --
4162 END IF;
4163
4164 ELSE
4165
4166 delete_declaration
4167 (p_element_entry_id =>l_element_entry_id
4168 ,p_effective_date =>l_effective_date
4169 ,p_warnings =>l_warnings);
4170
4171 END IF;
4172
4173 --
4174 END IF;
4175 --
4176 IF g_debug THEN
4177 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
4178 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
4179 END IF;
4180 --
4181 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
4182 --
4183 EXCEPTION
4184 WHEN OTHERS THEN
4185 fnd_msg_pub.add_exc_msg
4186 (p_pkg_name => g_package
4187 ,p_procedure_name => 'declare_section80gga'
4188 ,p_error_text => substr(sqlerrm, 1, 240)
4189 );
4190
4191 END;
4192
4193 --------------------------------------------------------------------------
4194 -- --
4195 -- Name : DECLARE_SECTION80D --
4196 -- Type : PROCEDURE --
4197 -- Access : Public --
4198 -- Description : The procedure is responsible for storing the --
4199 -- detials in 'Deduction under Section 80D' element. --
4200 -- --
4201 -- Parameters : --
4202 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
4203 -- p_effective_date DATE --
4204 -- p_medical_insurance_prem_80d NUMBER --
4205 -- p_sec_80d_senior_citizen VARCHAR2 --
4206 -- OUT : p_warnings BOOLEAN --
4207 -- --
4208 -- Change History : --
4209 --------------------------------------------------------------------------
4210 -- Rev# Date Userid Description --
4211 --------------------------------------------------------------------------
4212 -- 1.0 14-Apr-2005 VGSRINIV Initial Version --
4213 --------------------------------------------------------------------------
4214
4215 PROCEDURE declare_section80d
4216 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
4217 ,p_effective_date IN DATE DEFAULT NULL
4218 ,p_medical_insurance_prem_80d IN NUMBER DEFAULT NULL
4219 ,p_sec_80d_senior_citizen IN VARCHAR2 DEFAULT NULL
4220 ,p_med_par_insurance_prem_80d IN NUMBER DEFAULT NULL
4221 ,p_sec_80d_par_senior_citizen IN VARCHAR2 DEFAULT NULL
4222 ,p_warnings OUT NOCOPY BOOLEAN)
4223 IS
4224
4225 l_procedure VARCHAR(100);
4226 l_message VARCHAR2(250);
4227 l_input_values t_input_values_tab;
4228 l_element_type_id pay_element_types_f.element_type_id%TYPE;
4229 l_element_link_id pay_element_links_f.element_link_id%TYPE;
4230 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
4231 l_business_group_id per_business_groups.business_group_id%TYPE;
4232 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
4233 l_effective_start_date DATE;
4234 l_effective_end_date DATE;
4235 l_effective_date DATE;
4236 l_endation_date DATE;
4237 l_warnings VARCHAR2(6);
4238 --
4239 BEGIN
4240 --
4241 l_procedure := g_package || 'declare_section80d';
4242 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
4243
4244 IF g_debug THEN
4245 pay_in_utils.trace('**************************************************','********************');
4246 pay_in_utils.trace('p_assignment_id',p_assignment_id);
4247 pay_in_utils.trace('p_effective_date ',p_effective_date );
4248 pay_in_utils.trace('p_medical_insurance_prem_80d ',p_medical_insurance_prem_80d);
4249 pay_in_utils.trace('p_sec_80d_senior_citizen ',p_sec_80d_senior_citizen);
4250 pay_in_utils.trace('p_med_par_insurance_prem_80d ',p_med_par_insurance_prem_80d);
4251 pay_in_utils.trace('p_sec_80d_par_senior_citizen ',p_sec_80d_par_senior_citizen);
4252 pay_in_utils.trace('**************************************************','********************');
4253 END IF;
4254 --
4255 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
4256 --
4257 --
4258
4259 get_entry_details(p_assignment_id => p_assignment_id
4260 ,p_element_name => 'Deduction under Section 80D'
4261 ,p_effective_date => l_effective_date
4262 ,p_element_type_id => l_element_type_id
4263 ,p_element_link_id => l_element_link_id
4264 ,p_element_entry_id => l_element_entry_id
4265 ,p_expected_entries => 6
4266 ,p_business_group_id => l_business_group_id
4267 ,p_object_version_number=> l_object_version_number
4268 ,p_input_values => l_input_values
4269 );
4270 --
4271 IF g_debug THEN
4272 pay_in_utils.trace('Element Type ID: ' , l_element_type_id);
4273 pay_in_utils.trace('Element Entry ID: ' , l_element_entry_id);
4274 pay_in_utils.trace('Business Group ID: ' , l_business_group_id);
4275 pay_in_utils.trace('Object Version Number: ' , l_object_version_number);
4276 END IF;
4277 --
4278 pay_in_utils.set_location(g_debug, l_procedure, 20);
4279 --
4280 IF l_element_entry_id is null THEN
4281 --
4282 pay_in_utils.set_location(g_debug, l_procedure, 30);
4283 --
4284 --
4285 -- In this case, we would have to create an element entry to the
4286 -- assignment and return the entry id, the rest would be handled
4287 -- by the update command in the calling procedure.
4288 --
4289 pay_element_entry_api.create_element_entry
4290 (p_effective_date => l_effective_date
4291 ,p_business_group_id => l_business_group_id
4292 ,p_assignment_id => p_assignment_id
4293 ,p_element_link_id => l_element_link_id
4294 ,p_entry_type => 'E'
4295 --Deduction under Sec 80D
4296 ,p_input_value_id1 => l_input_values(0).input_value_id
4297 ,p_entry_value1 => p_medical_insurance_prem_80d
4298 ,p_input_value_id2 => l_input_values(2).input_value_id
4299 ,p_entry_value2 => p_sec_80d_senior_citizen
4300 ,p_input_value_id3 => l_input_values(4).input_value_id
4301 ,p_entry_value3 => p_med_par_insurance_prem_80d
4302 ,p_input_value_id4 => l_input_values(5).input_value_id
4303 ,p_entry_value4 => p_sec_80d_par_senior_citizen
4304 ,p_effective_start_date => l_effective_start_date
4305 ,p_effective_end_date => l_effective_end_date
4306 ,p_element_entry_id => l_element_entry_id
4307 ,p_object_version_number => l_object_version_number
4308 ,p_create_warning => p_warnings
4309 );
4310 --
4311 pay_in_utils.set_location(g_debug, l_procedure, 40);
4312 --
4313 -- End date the entry as of the financial year end date
4314 --
4315 --
4316 pay_in_utils.set_location(g_debug, l_procedure, 45);
4317 --
4318 delete_declaration
4319 (p_element_entry_id => l_element_entry_id
4320 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
4321 ,p_warnings => l_warnings);
4322 --
4323 --
4324 ELSE
4325 --
4326 pay_in_utils.set_location(g_debug, l_procedure, 50);
4327 --
4328 --
4329 -- An element entry for this element already exists we have to
4330 -- update the element entry with the newly submitted date.
4331 --
4332
4333
4334 pay_element_entry_api.update_element_entry
4335 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
4336 ,l_effective_date)
4337 ,p_effective_date => l_effective_date
4338 ,p_business_group_id => l_business_group_id
4339 ,p_element_entry_id => l_element_entry_id
4340 ,p_object_version_number => l_object_version_number
4341 --Deduction under Sec 80D
4342 ,p_input_value_id1 => l_input_values(0).input_value_id
4343 ,p_entry_value1 => p_medical_insurance_prem_80d
4344 ,p_input_value_id2 => l_input_values(2).input_value_id
4345 ,p_entry_value2 => p_sec_80d_senior_citizen
4346 ,p_input_value_id3 => l_input_values(4).input_value_id
4347 ,p_entry_value3 => p_med_par_insurance_prem_80d
4348 ,p_input_value_id4 => l_input_values(5).input_value_id
4349 ,p_entry_value4 => p_sec_80d_par_senior_citizen
4350 ,p_effective_start_date => l_effective_start_date
4351 ,p_effective_end_date => l_effective_end_date
4352 ,p_update_warning => p_warnings
4353 );
4354 --
4355 --
4356 pay_in_utils.set_location(g_debug, l_procedure, 60);
4357 --
4358 l_endation_date := pay_in_utils.next_tax_year(l_effective_date);
4359 --
4360 IF l_effective_end_date <> (l_endation_date - 1) THEN
4361 --
4362 -- End date the entry as of the financial year end date
4363 --
4364 delete_declaration
4365 (p_element_entry_id =>l_element_entry_id
4366 ,p_effective_date =>l_endation_date-1
4367 ,p_warnings =>l_warnings);
4368 --
4369 END IF;
4370
4371 --
4372
4373 --
4374 END IF;
4375 --
4376 IF g_debug THEN
4377 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
4378 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
4379 END IF;
4380 pay_in_utils.set_location(g_debug, l_procedure, 70);
4381 --
4382 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
4383 --
4384 EXCEPTION
4385 WHEN OTHERS THEN
4386 fnd_msg_pub.add_exc_msg
4387 (p_pkg_name => g_package
4388 ,p_procedure_name => 'declare_section80d'
4389 ,p_error_text => substr(sqlerrm, 1, 240)
4390 );
4391
4392 END;
4393
4394 --------------------------------------------------------------------------
4395 -- --
4396 -- Name : DECLARE_SECTION80DDB --
4397 -- Type : PROCEDURE --
4398 -- Access : Public --
4399 -- Description : The procedure is responsible for storing the --
4400 -- detials in 'Deduction under Section 80DDB' element. --
4401 -- --
4402 -- Parameters : --
4403 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
4404 -- p_effective_date DATE --
4405 -- p_disease_treatment_80ddb NUMBER --
4406 -- p_sec_80ddb_senior_citizen VARCHAR2 --
4407 -- OUT : p_warnings BOOLEAN --
4408 -- --
4409 -- Change History : --
4410 --------------------------------------------------------------------------
4411 -- Rev# Date Userid Description --
4412 --------------------------------------------------------------------------
4413 -- 1.0 14-Apr-2005 VGSRINIV Initial Version --
4414 --------------------------------------------------------------------------
4415 PROCEDURE declare_section80ddb
4416 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
4417 ,p_effective_date IN DATE DEFAULT NULL
4418 ,p_disease_treatment_80ddb IN NUMBER DEFAULT NULL
4419 ,p_sec_80ddb_senior_citizen IN VARCHAR2 DEFAULT NULL
4420 ,p_warnings OUT NOCOPY BOOLEAN)
4421 IS
4422
4423 l_procedure VARCHAR(100);
4424 l_message VARCHAR2(250);
4425 l_input_values t_input_values_tab;
4426 l_element_type_id pay_element_types_f.element_type_id%TYPE;
4427 l_element_link_id pay_element_links_f.element_link_id%TYPE;
4428 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
4429 l_business_group_id per_business_groups.business_group_id%TYPE;
4430 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
4431 l_effective_start_date DATE;
4432 l_effective_end_date DATE;
4433 l_effective_date DATE;
4434 l_endation_date DATE;
4435 l_warnings VARCHAR2(6);
4436 --
4437 BEGIN
4438 --
4439 l_procedure := g_package || 'declare_section80ddb';
4440 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
4441
4442 IF g_debug THEN
4443 pay_in_utils.trace('**************************************************','********************');
4444 pay_in_utils.trace('p_assignment_id',p_assignment_id);
4445 pay_in_utils.trace('p_effective_date ',p_effective_date );
4446 pay_in_utils.trace('p_disease_treatment_80ddb ',p_disease_treatment_80ddb);
4447 pay_in_utils.trace('p_sec_80ddb_senior_citizen ',p_sec_80ddb_senior_citizen);
4448 pay_in_utils.trace('**************************************************','********************');
4449 END IF;
4450 --
4451 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
4452 --
4453
4454 get_entry_details(p_assignment_id => p_assignment_id
4455 ,p_element_name => 'Deduction under Section 80DDB'
4456 ,p_effective_date => l_effective_date
4457 ,p_element_type_id => l_element_type_id
4458 ,p_element_link_id => l_element_link_id
4459 ,p_element_entry_id => l_element_entry_id
4460 ,p_expected_entries => 4
4461 ,p_business_group_id => l_business_group_id
4462 ,p_object_version_number=> l_object_version_number
4463 ,p_input_values => l_input_values
4464 );
4465 --
4466 IF g_debug THEN
4467 pay_in_utils.trace('Element Type ID: ' , l_element_type_id);
4468 pay_in_utils.trace('Element Entry ID: ' , l_element_entry_id);
4469 pay_in_utils.trace('Business Group ID: ' , l_business_group_id);
4470 pay_in_utils.trace('Object Version Number: ' , l_object_version_number);
4471 END IF;
4472 --
4473 pay_in_utils.set_location(g_debug, l_procedure, 20);
4474 --
4475 IF l_element_entry_id is null THEN
4476 --
4477 pay_in_utils.set_location(g_debug, l_procedure, 30);
4478 --
4479 --
4480 -- In this case, we would have to create an element entry to the
4481 -- assignment and return the entry id, the rest would be handled
4482 -- by the update command in the calling procedure.
4483 --
4484 pay_element_entry_api.create_element_entry
4485 (p_effective_date => l_effective_date
4486 ,p_business_group_id => l_business_group_id
4487 ,p_assignment_id => p_assignment_id
4488 ,p_element_link_id => l_element_link_id
4489 ,p_entry_type => 'E'
4490 --Deduction under Sec 80DDB
4491 ,p_input_value_id1 => l_input_values(0).input_value_id
4492 ,p_entry_value1 => p_disease_treatment_80ddb
4493 ,p_input_value_id2 => l_input_values(2).input_value_id
4494 ,p_entry_value2 => p_sec_80ddb_senior_citizen
4495 ,p_effective_start_date => l_effective_start_date
4496 ,p_effective_end_date => l_effective_end_date
4497 ,p_element_entry_id => l_element_entry_id
4498 ,p_object_version_number => l_object_version_number
4499 ,p_create_warning => p_warnings
4500 );
4501 --
4502 pay_in_utils.set_location(g_debug, l_procedure, 40);
4503 --
4504 -- End date the entry as of the financial year end date
4505 --
4506 --
4507 pay_in_utils.set_location(g_debug, l_procedure, 45);
4508 --
4509 delete_declaration
4510 (p_element_entry_id => l_element_entry_id
4511 ,p_effective_date => pay_in_utils.next_tax_year(l_effective_date)-1
4512 ,p_warnings => l_warnings);
4513 --
4514 --
4515 ELSE
4516 --
4517 pay_in_utils.set_location(g_debug, l_procedure, 50);
4518 --
4519 --
4520 -- An element entry for this element already exists we have to
4521 -- update the element entry with the newly submitted date.
4522 --
4523
4524 IF p_disease_treatment_80ddb > 0 THEN
4525
4526 pay_element_entry_api.update_element_entry
4527 (p_datetrack_update_mode => get_update_mode(l_element_entry_id
4528 ,l_effective_date)
4529 ,p_effective_date => l_effective_date
4530 ,p_business_group_id => l_business_group_id
4531 ,p_element_entry_id => l_element_entry_id
4532 ,p_object_version_number => l_object_version_number
4533 --Deduction under Sec 80DDB
4534 ,p_input_value_id1 => l_input_values(0).input_value_id
4535 ,p_entry_value1 => p_disease_treatment_80ddb
4536 ,p_input_value_id2 => l_input_values(2).input_value_id
4537 ,p_entry_value2 => p_sec_80ddb_senior_citizen
4538 ,p_effective_start_date => l_effective_start_date
4539 ,p_effective_end_date => l_effective_end_date
4540 ,p_update_warning => p_warnings
4541 );
4542 --
4543 --
4544 pay_in_utils.set_location(g_debug, l_procedure, 60);
4545 --
4546 l_endation_date := pay_in_utils.next_tax_year(l_effective_date);
4547 --
4548 IF l_effective_end_date <> (l_endation_date - 1) THEN
4549 --
4550 -- End date the entry as of the financial year end date
4551 --
4552 delete_declaration
4553 (p_element_entry_id =>l_element_entry_id
4554 ,p_effective_date =>l_endation_date-1
4555 ,p_warnings =>l_warnings);
4556 --
4557 END IF;
4558
4559 ELSE
4560
4561 delete_declaration
4562 (p_element_entry_id =>l_element_entry_id
4563 ,p_effective_date =>l_effective_date
4564 ,p_warnings =>l_warnings);
4565
4566 END IF;
4567
4568
4569 --
4570
4571 --
4572 END IF;
4573 --
4574 IF g_debug THEN
4575 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
4576 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
4577 END IF;
4578 pay_in_utils.set_location(g_debug, l_procedure, 70);
4579 --
4580 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,80);
4581 --
4582 EXCEPTION
4583 WHEN OTHERS THEN
4584 fnd_msg_pub.add_exc_msg
4585 (p_pkg_name => g_package
4586 ,p_procedure_name => 'declare_section80ddb'
4587 ,p_error_text => substr(sqlerrm, 1, 240)
4588 );
4589
4590 END;
4591
4592 --------------------------------------------------------------------------
4593 -- --
4594 -- Name : DECLARE_SECTION80U --
4595 -- Type : PROCEDURE --
4596 -- Access : Public --
4597 -- Description : The procedure is responsible for storing the --
4598 -- detials in 'Deduction under Section 80U' element. --
4599 -- --
4600 -- Parameters : --
4601 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
4602 -- p_effective_date DATE --
4603 -- OUT : p_warnings BOOLEAN --
4604 -- --
4605 -- Change History : --
4606 --------------------------------------------------------------------------
4607 -- Rev# Date Userid Description --
4608 --------------------------------------------------------------------------
4609 -- 1.0 14-Apr-2005 VGSRINIV Initial Version --
4610 --------------------------------------------------------------------------
4611
4612 PROCEDURE declare_section80U
4613 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
4614 ,p_effective_date IN DATE DEFAULT NULL
4615 ,p_warnings OUT NOCOPY BOOLEAN)
4616 IS
4617
4618 l_procedure VARCHAR(100);
4619 l_message VARCHAR2(250);
4620 l_input_values t_input_values_tab;
4621 l_element_type_id pay_element_types_f.element_type_id%TYPE;
4622 l_element_link_id pay_element_links_f.element_link_id%TYPE;
4623 l_element_entry_id pay_element_entries_f.element_entry_id%TYPE;
4624 l_business_group_id per_business_groups.business_group_id%TYPE;
4625 l_object_version_number pay_element_entries_f.object_version_number%TYPE;
4626 l_effective_start_date DATE;
4627 l_effective_end_date DATE;
4628 l_effective_date DATE;
4629 l_endation_date DATE;
4630 l_warnings VARCHAR2(6);
4631 --
4632 BEGIN
4633 --
4634 l_procedure := g_package || 'declare_section80U';
4635 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
4636
4637 IF g_debug THEN
4638 pay_in_utils.trace('**************************************************','********************');
4639 pay_in_utils.trace('p_assignment_id',p_assignment_id);
4640 pay_in_utils.trace('p_effective_date ',p_effective_date );
4641 pay_in_utils.trace('**************************************************','********************');
4642 END IF;
4643
4644 --
4645 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
4646 --
4647 --
4648
4649 get_entry_details(p_assignment_id => p_assignment_id
4650 ,p_element_name => 'Deduction under Section 80U'
4651 ,p_effective_date => l_effective_date
4652 ,p_element_type_id => l_element_type_id
4653 ,p_element_link_id => l_element_link_id
4654 ,p_element_entry_id => l_element_entry_id
4655 ,p_expected_entries => 1
4656 ,p_business_group_id => l_business_group_id
4657 ,p_object_version_number=> l_object_version_number
4658 ,p_input_values => l_input_values
4659 );
4660 --
4661 IF g_debug THEN
4662 pay_in_utils.trace('Element Type ID: ' , l_element_type_id);
4663 pay_in_utils.trace('Element Entry ID: ' , l_element_entry_id);
4664 pay_in_utils.trace('Business Group ID: ' , l_business_group_id);
4665 pay_in_utils.trace('Object Version Number: ' , l_object_version_number);
4666 END IF;
4667 --
4668 pay_in_utils.set_location(g_debug, l_procedure, 20);
4669 --
4670 IF l_element_entry_id is null THEN
4671 --
4672 pay_in_utils.set_location(g_debug, l_procedure, 30);
4673 --
4674 --
4675 -- In this case, we would have to create an element entry to the
4676 -- assignment and return the entry id, the rest would be handled
4677 -- by the update command in the calling procedure.
4678 --
4679 pay_element_entry_api.create_element_entry
4680 (p_effective_date => l_effective_date
4681 ,p_business_group_id => l_business_group_id
4682 ,p_assignment_id => p_assignment_id
4683 ,p_element_link_id => l_element_link_id
4684 ,p_entry_type => 'E'
4685 ,p_effective_start_date => l_effective_start_date
4686 ,p_effective_end_date => l_effective_end_date
4687 ,p_element_entry_id => l_element_entry_id
4688 ,p_object_version_number => l_object_version_number
4689 ,p_create_warning => p_warnings
4690 );
4691 --
4692 pay_in_utils.set_location(g_debug, l_procedure, 40);
4693 --
4694 END IF;
4695 --
4696 IF g_debug THEN
4697 pay_in_utils.trace('Effective Start Date: ', l_effective_start_date);
4698 pay_in_utils.trace('Effective End Date: ', l_effective_end_date);
4699 END IF;
4700 pay_in_utils.set_location(g_debug, l_procedure, 50);
4701
4702 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,60);
4703 --
4704 EXCEPTION
4705 WHEN OTHERS THEN
4706 fnd_msg_pub.add_exc_msg
4707 (p_pkg_name => g_package
4708 ,p_procedure_name => 'declare_section80u'
4709 ,p_error_text => substr(sqlerrm, 1, 240)
4710 );
4711
4712 END;
4713
4714 /* BUG 4251141: STAT UPDATE 2005 CHANGES END HERE */
4715
4716 PROCEDURE declare_tax
4717 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
4718 ,p_is_monthly_rent_changed IN VARCHAR2
4719 ,p_apr IN NUMBER default null
4720 ,p_may IN NUMBER default null
4721 ,p_jun IN NUMBER default null
4722 ,p_jul IN NUMBER default null
4723 ,p_aug IN NUMBER default null
4724 ,p_sep IN NUMBER default null
4725 ,p_oct IN NUMBER default null
4726 ,p_nov IN NUMBER default null
4727 ,p_dec IN NUMBER default null
4728 ,p_jan IN NUMBER default null
4729 ,p_feb IN NUMBER default null
4730 ,p_mar IN NUMBER default null
4731 ,p_is_chapter6a_changed IN VARCHAR2
4732 ,p_pension_fund_80ccc IN NUMBER default null
4733 ,p_medical_insurance_prem_80d IN NUMBER default null
4734 ,p_med_par_insurance_prem_80d IN NUMBER default NULL
4735 ,p_80d_par_prem_changed IN VARCHAR2 DEFAULT NULL
4736 ,p_sec_80d_par_senior_citizen IN VARCHAR2 default null
4737 ,p_80d_par_snr_changed IN VARCHAR2 DEFAULT NULL
4738 ,p_sec_80ddb_senior_citizen IN VARCHAR2 default null
4739 ,p_disease_treatment_80ddb IN NUMBER default null
4740 ,p_sec_80d_senior_citizen IN VARCHAR2 default null
4741 ,p_higher_education_loan_80e IN NUMBER default null
4742 ,p_claim_exemp_under_sec_80gg IN VARCHAR2 default null
4743 ,p_donation_for_research_80gga IN NUMBER default null
4744 ,p_80gg_changed IN VARCHAR2 DEFAULT NULL
4745 ,p_80e_changed IN VARCHAR2 DEFAULT NULL
4746 ,p_80gga_changed IN VARCHAR2 DEFAULT NULL
4747 ,p_80d_changed IN VARCHAR2 DEFAULT NULL
4748 ,p_80dsc_planned_value IN VARCHAR2 DEFAULT NULL
4749 ,p_80ddb_changed IN VARCHAR2 DEFAULT NULL
4750 ,p_80ddbsc_planned_value IN VARCHAR2 DEFAULT NULL
4751 ,p_int_on_gen_investment_80L IN NUMBER default null
4752 ,p_int_on_securities_80L IN NUMBER default null
4753 ,p_is_section88_changed IN VARCHAR2 DEFAULT NULL
4754 ,p_deferred_annuity IN NUMBER default null
4755 ,p_senior_citizen_sav_scheme IN NUMBER default null
4756 ,p_public_provident_fund IN NUMBER default null
4757 ,p_post_office_savings_scheme IN NUMBER default null
4758 ,p_deposit_in_nsc_vi_issue IN NUMBER default null
4759 ,p_deposit_in_nsc_viii_issue IN NUMBER default null
4760 ,p_interest_on_nsc_reinvested IN NUMBER default null
4761 ,p_house_loan_repayment IN NUMBER default null
4762 ,p_notified_mutual_fund_or_uti IN NUMBER default null
4763 ,p_national_housing_bank_scheme IN NUMBER default null
4764 ,p_unit_linked_insurance_plan IN NUMBER default null
4765 ,p_notified_annuity_plan IN NUMBER default null
4766 ,p_notified_pension_fund IN NUMBER default null
4767 ,p_public_sector_company_scheme IN NUMBER default null
4768 ,p_approved_superannuation_fund IN NUMBER default null
4769 ,p_infrastructure_bond IN NUMBER default null
4770 ,p_tuition_fee_for_child_1 IN NUMBER default null
4771 ,p_tuition_fee_for_child_2 IN NUMBER default null
4772 ,p_is_other_income_changed IN VARCHAR2
4773 ,p_income_from_house_property IN NUMBER default null
4774 ,p_profit_and_gain_from_busines IN NUMBER default null
4775 ,p_long_term_capital_gain IN NUMBER default null
4776 ,p_short_term_capital_gain IN NUMBER default null
4777 ,p_income_from_any_other_source IN NUMBER default null
4778 ,p_tds_paid_on_other_income IN NUMBER default null
4779 ,p_approved_flag IN VARCHAR2 default null
4780 ,p_comment_text IN VARCHAR2 default null
4781 ,p_effective_date IN DATE default null
4782 ,p_warnings OUT NOCOPY VARCHAR2)
4783 IS
4784 --
4785 l_effective_date DATE;
4786 l_procedure VARCHAR(100);
4787 l_message VARCHAR2(250);
4788 l_disability_proof VARCHAR2(2);
4789 l_permanent_disability_80u NUMBER;
4790 l_category VARCHAR2(10);
4791 l_degree NUMBER;
4792 l_declare_warn BOOLEAN;
4793
4794 CURSOR get_permanent_disability_80u
4795 IS
4796 SELECT global_value
4797 FROM ff_globals_f
4798 WHERE global_name = 'IN_PERMANENT_PHYSICAL_DISABILITY_80U'
4799 AND legislation_code = g_legislation_code;
4800 --
4801 BEGIN
4802 --
4803 l_procedure := g_package || 'declare_tax';
4804 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
4805
4806 IF g_debug THEN
4807 pay_in_utils.trace('**************************************************','********************');
4808 pay_in_utils.trace ('p_assignment_id ',p_assignment_id);
4809 pay_in_utils.trace ('p_is_monthly_rent_changed ',p_is_monthly_rent_changed);
4810 pay_in_utils.trace ('p_apr ',p_apr);
4811 pay_in_utils.trace ('p_may ',p_may);
4812 pay_in_utils.trace ('p_jun ',p_jun);
4813 pay_in_utils.trace ('p_jul ',p_jul);
4814 pay_in_utils.trace ('p_aug ',p_aug);
4815 pay_in_utils.trace ('p_sep ',p_sep);
4816 pay_in_utils.trace ('p_oct ',p_oct);
4817 pay_in_utils.trace ('p_nov ',p_nov);
4818 pay_in_utils.trace ('p_dec ',p_dec);
4819 pay_in_utils.trace ('p_jan ',p_jan);
4820 pay_in_utils.trace ('p_feb ',p_feb);
4821 pay_in_utils.trace ('p_mar ',p_mar);
4822 pay_in_utils.trace ('p_is_chapter6a_changed ',p_is_chapter6a_changed);
4823 pay_in_utils.trace ('p_pension_fund_80ccc ',p_pension_fund_80ccc );
4824 pay_in_utils.trace ('p_medical_insurance_prem_80d ',p_medical_insurance_prem_80d);
4825 pay_in_utils.trace ('p_sec_80ddb_senior_citizen ',p_sec_80ddb_senior_citizen);
4826 pay_in_utils.trace ('p_disease_treatment_80ddb ',p_disease_treatment_80ddb);
4827 pay_in_utils.trace ('p_sec_80d_senior_citizen ',p_sec_80d_senior_citizen);
4828 pay_in_utils.trace ('p_higher_education_loan_80e ',p_higher_education_loan_80e);
4829 pay_in_utils.trace ('p_claim_exemp_under_sec_80gg ',p_claim_exemp_under_sec_80gg);
4830 pay_in_utils.trace ('p_donation_for_research_80gga ',p_donation_for_research_80gga);
4831 pay_in_utils.trace ('p_80gg_changed ',p_80gg_changed);
4832 pay_in_utils.trace ('p_80e_changed ',p_80e_changed);
4833 pay_in_utils.trace ('p_80gga_changed ',p_80gga_changed);
4834 pay_in_utils.trace ('p_80d_changed ',p_80d_changed);
4835 pay_in_utils.trace ('p_80dsc_planned_value ',p_80dsc_planned_value);
4836 pay_in_utils.trace ('p_80ddb_changed ',p_80ddb_changed);
4837 pay_in_utils.trace ('p_80ddbsc_planned_value ',p_80ddbsc_planned_value);
4838 pay_in_utils.trace ('p_int_on_gen_investment_80L ',p_int_on_gen_investment_80L);
4839 pay_in_utils.trace ('p_int_on_securities_80L ',p_int_on_securities_80L);
4840 pay_in_utils.trace ('p_is_section88_changed ',p_is_section88_changed);
4841 pay_in_utils.trace ('p_deferred_annuity ',p_deferred_annuity);
4842 pay_in_utils.trace ('p_senior_citizen_sav_scheme ',p_senior_citizen_sav_scheme);
4843 pay_in_utils.trace ('p_public_provident_fund ',p_public_provident_fund);
4844 pay_in_utils.trace ('p_post_office_savings_scheme ',p_post_office_savings_scheme);
4845 pay_in_utils.trace ('p_deposit_in_nsc_vi_issue ',p_deposit_in_nsc_vi_issue);
4846 pay_in_utils.trace ('p_deposit_in_nsc_viii_issue ',p_deposit_in_nsc_viii_issue);
4847 pay_in_utils.trace ('p_interest_on_nsc_reinvested ',p_interest_on_nsc_reinvested);
4848 pay_in_utils.trace ('p_house_loan_repayment ',p_house_loan_repayment);
4849 pay_in_utils.trace ('p_notified_mutual_fund_or_uti ',p_notified_mutual_fund_or_uti);
4850 pay_in_utils.trace ('p_national_housing_bank_scheme ',p_national_housing_bank_scheme);
4851 pay_in_utils.trace ('p_unit_linked_insurance_plan ',p_unit_linked_insurance_plan);
4852 pay_in_utils.trace ('p_notified_annuity_plan ',p_notified_annuity_plan);
4853 pay_in_utils.trace ('p_notified_pension_fund ',p_notified_pension_fund);
4854 pay_in_utils.trace ('p_public_sector_company_scheme ',p_public_sector_company_scheme );
4855 pay_in_utils.trace ('p_approved_superannuation_fund ',p_approved_superannuation_fund);
4856 pay_in_utils.trace ('p_infrastructure_bond ',p_infrastructure_bond);
4857 pay_in_utils.trace ('p_tuition_fee_for_child_1 ',p_tuition_fee_for_child_1);
4858 pay_in_utils.trace ('p_tuition_fee_for_child_2 ',p_tuition_fee_for_child_2);
4859 pay_in_utils.trace ('p_is_other_income_changed ',p_is_other_income_changed);
4860 pay_in_utils.trace ('p_income_from_house_property ',p_income_from_house_property);
4861 pay_in_utils.trace ('p_profit_and_gain_from_busines ',p_profit_and_gain_from_busines);
4862 pay_in_utils.trace ('p_long_term_capital_gain ',p_long_term_capital_gain);
4863 pay_in_utils.trace ('p_short_term_capital_gain ',p_short_term_capital_gain);
4864 pay_in_utils.trace ('p_income_from_any_other_source ',p_income_from_any_other_source);
4865 pay_in_utils.trace ('p_tds_paid_on_other_income ',p_tds_paid_on_other_income);
4866 pay_in_utils.trace ('p_approved_flag ',p_approved_flag);
4867 pay_in_utils.trace ('p_comment_text ',p_comment_text);
4868 pay_in_utils.trace ('p_effective_date ',p_effective_date);
4869 pay_in_utils.trace('**************************************************','********************');
4870 END IF;
4871 l_declare_warn := false;
4872 --
4873
4874 --
4875 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
4876 -- Added for bug 3990922
4877 hr_session_utilities.insert_session_row(l_effective_date);
4878 --
4879 --
4880 IF p_is_monthly_rent_changed = 'Y' THEN
4881 --
4882 pay_in_utils.set_location(g_debug, l_procedure, 20);
4883 --
4884 declare_house_rent
4885 (p_assignment_id => p_assignment_id
4886 ,p_effective_date => l_effective_date
4887 ,p_apr => p_apr
4888 ,p_may => p_may
4889 ,p_jun => p_jun
4890 ,p_jul => p_jul
4891 ,p_aug => p_aug
4892 ,p_sep => p_sep
4893 ,p_oct => p_oct
4894 ,p_nov => p_nov
4895 ,p_dec => p_dec
4896 ,p_jan => p_jan
4897 ,p_feb => p_feb
4898 ,p_mar => p_mar
4899 ,p_warnings => l_declare_warn);
4900 --
4901 pay_in_utils.set_location(g_debug, l_procedure, 30);
4902 --
4903 END IF;
4904 --
4905 pay_in_utils.set_location(g_debug, 'Entering: '||l_procedure, 40);
4906 --
4907
4908 IF p_is_chapter6a_changed = 'Y' THEN
4909 --
4910 pay_in_utils.set_location(g_debug, l_procedure, 50);
4911
4912 /* STAT 2005 CHANGES START */
4913
4914 -- Permanent Disability 80u Calculation
4915 -- Permanent disability is calculated based on the details
4916 -- entered in per_disabilities_f by the user. If the
4917 -- disability proof is submitted then only the exemption
4918 -- amount is entered i.e., when l_disability_proof = 'Y'.
4919 /* l_permanent_disability_80u :=
4920 pay_in_tax_utils.get_disability_details
4921 (p_assignment_id => p_assignment_id
4922 ,p_date_earned => l_effective_date
4923 ,p_disable_catg => l_category
4924 ,p_disable_degree=> l_degree
4925 ,p_disable_proof => l_disability_proof
4926 );
4927 --
4928 l_permanent_disability_80u := 0;
4929 --
4930 IF (l_disability_proof = 'Y' AND l_degree >= 40 AND l_category IN ('BLIND','SA_VIS_IMP','LC','SA_HEA_IMP','LD','07','MI','AU','CP','MD'))
4931 THEN
4932 --
4933 declare_section80u
4934 (p_assignment_id => p_assignment_id
4935 ,p_effective_date => l_effective_date
4936 ,p_warnings => l_declare_warn);
4937 --
4938 END IF; */
4939
4940 -- IF p_80gg_changed = 'Y' THEN
4941 IF p_80gg_changed = 'Y' THEN
4942
4943 declare_section80gg
4944 (p_assignment_id => p_assignment_id
4945 ,p_effective_date => l_effective_date
4946 ,p_claim_exemp_under_sec_80gg => p_claim_exemp_under_sec_80gg
4947 ,p_warnings => l_declare_warn);
4948
4949 END IF;
4950
4951 IF p_80e_changed = 'Y' THEN
4952
4953 declare_section80e
4954 (p_assignment_id => p_assignment_id
4955 ,p_effective_date => l_effective_date
4956 ,p_higher_education_loan_80e => p_higher_education_loan_80e
4957 ,p_warnings => l_declare_warn);
4958
4959 END IF;
4960
4961 IF p_80gga_changed = 'Y' THEN
4962
4963 declare_section80gga
4964 (p_assignment_id => p_assignment_id
4965 ,p_effective_date => l_effective_date
4966 ,p_donation_for_research_80gga => p_donation_for_research_80gga
4967 ,p_warnings => l_declare_warn);
4968
4969 END IF;
4970
4971 IF p_80d_changed = 'Y'
4972 OR p_80d_par_prem_changed = 'Y'
4973 OR p_80d_par_snr_changed = 'Y'
4974 OR p_sec_80d_senior_citizen <> p_80dsc_planned_value THEN
4975
4976
4977 declare_section80d
4978 (p_assignment_id => p_assignment_id
4979 ,p_effective_date => l_effective_date
4980 ,p_medical_insurance_prem_80d => NVL (p_medical_insurance_prem_80d,0)
4981 ,p_sec_80d_senior_citizen => p_sec_80d_senior_citizen
4982 ,p_med_par_insurance_prem_80d => p_med_par_insurance_prem_80d
4983 ,p_sec_80d_par_senior_citizen => p_sec_80d_par_senior_citizen
4984 ,p_warnings => l_declare_warn);
4985
4986 END IF;
4987
4988 IF p_80ddb_changed = 'Y' OR p_sec_80ddb_senior_citizen <> p_80ddbsc_planned_value THEN
4989
4990 declare_section80ddb
4991 (p_assignment_id => p_assignment_id
4992 ,p_effective_date => l_effective_date
4993 ,p_disease_treatment_80ddb => p_disease_treatment_80ddb
4994 ,p_sec_80ddb_senior_citizen => p_sec_80ddb_senior_citizen
4995 ,p_warnings => l_declare_warn);
4996
4997 END IF;
4998
4999 /* Stat Changes 2005 End */
5000 --
5001 /* declare_chapter6a
5002 (p_assignment_id => p_assignment_id
5003 ,p_effective_date => l_effective_date
5004 ,p_pension_fund_80ccc => p_pension_fund_80ccc
5005 ,p_medical_insurance_prem_80d => p_medical_insurance_prem_80d
5006 ,p_sec_80ddb_senior_citizen => p_sec_80ddb_senior_citizen
5007 ,p_disease_treatment_80ddb => p_disease_treatment_80ddb
5008 ,p_sec_80d_senior_citizen => p_sec_80d_senior_citizen
5009 ,p_higher_education_loan_80e => p_higher_education_loan_80e
5010 ,p_claim_exemp_under_sec_80gg => p_claim_exemp_under_sec_80gg
5011 ,p_donation_for_research_80gga => p_donation_for_research_80gga
5012 ,p_int_on_gen_investment_80L => p_int_on_gen_investment_80L
5013 ,p_int_on_securities_80L => p_int_on_securities_80L
5014 ,p_warnings => l_declare_warn);
5015 */ --
5016 pay_in_utils.set_location(g_debug, l_procedure, 60);
5017 --
5018 END IF; /* p_is_chapter6a_changed = 'Y' */
5019 --
5020 pay_in_utils.set_location(g_debug, 'Entering: '||l_procedure, 70);
5021 --
5022
5023 /* IF p_is_section88_changed = 'Y' THEN
5024 --
5025 pay_in_utils.set_location(g_debug, l_procedure, 61);
5026 --
5027 declare_section88
5028 (p_assignment_id => p_assignment_id
5029 ,p_effective_date => l_effective_date
5030 ,p_deferred_annuity => p_deferred_annuity
5031 ,p_public_provident_fund => p_public_provident_fund
5032 ,p_post_office_savings_scheme => p_post_office_savings_scheme
5033 ,p_deposit_in_nsc_vi_issue => p_deposit_in_nsc_vi_issue
5034 ,p_deposit_in_nsc_viii_issue => p_deposit_in_nsc_viii_issue
5035 ,p_interest_on_nsc_reinvested => p_interest_on_nsc_reinvested
5036 ,p_house_loan_repayment => p_house_loan_repayment
5037 ,p_notified_mutual_fund_or_uti => p_notified_mutual_fund_or_uti
5038 ,p_national_housing_bank_scheme => p_national_housing_bank_scheme
5039 ,p_unit_linked_insurance_plan => p_unit_linked_insurance_plan
5040 ,p_notified_annuity_plan => p_notified_annuity_plan
5041 ,p_notified_pension_fund => p_notified_pension_fund
5042 ,p_public_sector_company_scheme => p_public_sector_company_scheme
5043 ,p_approved_superannuation_fund => p_approved_superannuation_fund
5044 ,p_infrastructure_bond => p_infrastructure_bond
5045 ,p_warnings => l_declare_warn);
5046 --
5047 pay_in_utils.set_location(g_debug, l_procedure, 80);
5048 --
5049 declare_tuition_fee
5050 (p_assignment_id => p_assignment_id
5051 ,p_effective_date => l_effective_date
5052 ,p_tuition_fee_for_child_1 => p_tuition_fee_for_child_1
5053 ,p_tuition_fee_for_child_2 => p_tuition_fee_for_child_2
5054 ,p_warnings => l_declare_warn);
5055 --
5056 pay_in_utils.set_location(g_debug, l_procedure, 90);
5057 --
5058 END IF; */
5059 --
5060 pay_in_utils.set_location(g_debug, l_procedure, 100);
5061 --
5062
5063 IF p_is_other_income_changed = 'Y' THEN
5064 --
5065 pay_in_utils.set_location(g_debug, l_procedure, 110);
5066 --
5067 declare_other_income
5068 (p_assignment_id => p_assignment_id
5069 ,p_effective_date => l_effective_date
5070 ,p_income_from_house_property => p_income_from_house_property
5071 ,p_profit_and_gain_from_busines => p_profit_and_gain_from_busines
5072 ,p_long_term_capital_gain => p_long_term_capital_gain
5073 ,p_short_term_capital_gain => p_short_term_capital_gain
5074 ,p_income_from_any_other_source => p_income_from_any_other_source
5075 ,p_tds_paid_on_other_income => p_tds_paid_on_other_income
5076 ,p_warnings => l_declare_warn);
5077 --
5078 pay_in_utils.set_location(g_debug, l_procedure, 120);
5079 END IF;
5080 --
5081 IF p_approved_flag is not null THEN
5082 --
5083 pay_in_utils.set_location(g_debug, l_procedure, 130);
5084 --
5085 approve_declaration
5086 (p_assignment_id => p_assignment_id
5087 ,p_approval_flag => p_approved_flag
5088 ,p_effective_date => l_effective_date
5089 ,p_comment_text => p_comment_text);
5090 --
5091 pay_in_utils.set_location(g_debug, l_procedure, 140);
5092 --
5093 END IF;
5094 --
5095 IF l_declare_warn THEN
5096 p_warnings := 'TRUE';
5097 ELSE
5098 p_warnings := 'FALSE';
5099 END IF;
5100 --
5101 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,150);
5102 --
5103 EXCEPTION
5104 WHEN OTHERS THEN
5105 fnd_msg_pub.add_exc_msg
5106 (p_pkg_name => g_package
5107 ,p_procedure_name => 'declare_tax'
5108 ,p_error_text => substr(sqlerrm, 1, 240)
5109 );
5110 --
5111 END declare_tax;
5112
5113 --------------------------------------------------------------------------
5114 -- --
5115 -- Name : DELETE_DECLARATION --
5116 -- Type : PROCEDURE --
5117 -- Access : Public --
5118 -- Description : The procedure is responsible for deletion of --
5119 -- element entries as of the effective date. --
5120 -- --
5121 -- Parameters : --
5122 -- IN : p_element_entry_id element_entry_id%TYPE --
5123 -- p_effective_date DATE --
5124 -- OUT : p_warnings BOOLEAN --
5125 -- --
5126 -- Change History : --
5127 --------------------------------------------------------------------------
5128 -- Rev# Date Userid Description --
5129 --------------------------------------------------------------------------
5130 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
5131 --------------------------------------------------------------------------
5132 PROCEDURE delete_declaration
5133 (p_element_entry_id IN NUMBER
5134 ,p_effective_date IN DATE DEFAULT NULL
5135 ,p_warnings OUT NOCOPY VARCHAR2)
5136 IS
5137 --
5138 l_effective_date DATE;
5139 l_effective_start_date DATE;
5140 l_effective_end_date DATE;
5141 l_object_version_number NUMBER;
5142 l_warnings BOOLEAN;
5143 l_procedure VARCHAR(100);
5144 l_message VARCHAR2(250);
5145 l_effective_end_date_check DATE;
5146 --
5147 CURSOR csr_entry_details(c_effective_date IN DATE)
5148 IS
5149 SELECT object_version_number
5150 ,effective_end_date
5151 FROM pay_element_entries_f
5152 WHERE element_entry_id = p_element_entry_id
5153 AND c_effective_date BETWEEN effective_start_date
5154 AND effective_end_date;
5155 --
5156 BEGIN
5157 --
5158 p_warnings := 'FALSE';
5159
5160 l_procedure := g_package || 'delete_declaration';
5161 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
5162
5163 IF g_debug THEN
5164 pay_in_utils.trace('**************************************************','********************');
5165 pay_in_utils.trace('Element Entry ID:',p_element_Entry_id);
5166 pay_in_utils.trace('Effective Date:',p_effective_date);
5167 pay_in_utils.trace('**************************************************','********************');
5168 END IF;
5169
5170 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
5171 --
5172 IF g_debug THEN
5173 pay_in_utils.trace('Calculate Effective Date: ' , l_effective_date);
5174 END IF;
5175 --
5176 OPEN csr_entry_details(l_effective_date);
5177 FETCH csr_entry_details INTO l_object_version_number
5178 ,l_effective_end_date_check;
5179 CLOSE csr_entry_details;
5180 --
5181 IF l_object_version_number is null
5182 or l_effective_end_date_check = l_effective_date THEN
5183 return;
5184 END IF;
5185 --
5186 pay_in_utils.set_location(g_debug, l_procedure, 40);
5187 --
5188 pay_element_entry_api.delete_element_entry
5189 (p_validate => FALSE
5190 ,p_datetrack_delete_mode => hr_api.g_delete
5191 ,p_effective_date => l_effective_date
5192 ,p_element_entry_id => p_element_entry_id
5193 ,p_object_version_number => l_object_version_number
5194 ,p_effective_start_date => l_effective_start_date
5195 ,p_effective_end_date => l_effective_end_date
5196 ,p_delete_warning => l_warnings
5197 );
5198 --
5199 pay_in_utils.set_location(g_debug, l_procedure, 50);
5200 --
5201 IF l_warnings = TRUE THEN
5202 --
5203 pay_in_utils.set_location(g_debug, l_procedure, 60);
5204 p_warnings := 'TRUE';
5205 --
5206 END IF;
5207
5208 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,70);
5209 --
5210 EXCEPTION
5211 WHEN OTHERS THEN
5212 fnd_msg_pub.add_exc_msg
5213 (p_pkg_name => g_package
5214 ,p_procedure_name => 'delete_declaration'
5215 ,p_error_text => substr(sqlerrm, 1, 240)
5216 );
5217 --
5218 END delete_declaration;
5219
5220 --------------------------------------------------------------------------
5221 -- --
5222 -- Name : APPROVE_DECLARATION --
5223 -- Type : PROCEDURE --
5224 -- Access : Public --
5225 -- Description : The procedure is responsible for approval of --
5226 -- tax declaration for the assignment in question. --
5227 -- --
5228 -- Parameters : --
5229 -- IN :p_assignment_id per_assignments_f.assignment_id%TYPE--
5230 -- p_approval_flag VARCHAR2 --
5231 -- p_effective_date DATE --
5232 -- p_comment_text VARCHAR2 --
5233 -- Change History : --
5234 --------------------------------------------------------------------------
5235 -- Rev# Date Userid Description --
5236 --------------------------------------------------------------------------
5237 -- 1.0 24-Sep-2004 PUCHIL Initial Version --
5238 --------------------------------------------------------------------------
5239 PROCEDURE approve_declaration
5240 (p_assignment_id IN per_assignments_f.assignment_id%TYPE
5241 ,p_approval_flag IN VARCHAR2
5242 ,p_effective_date IN DATE
5243 ,p_comment_text IN VARCHAR2)
5244 IS
5245 --
5246 l_procedure VARCHAR(100);
5247 l_message VARCHAR2(250);
5248 l_approval_status VARCHAR2(2);
5249 l_object_version_number NUMBER;
5250 l_extra_info_id per_assignment_extra_info.assignment_extra_info_id%TYPE;
5251 --
5252 CURSOR get_object_version(c_extra_info_id IN NUMBER)
5253 IS
5254 SELECT object_version_number
5255 FROM per_assignment_extra_info
5256 WHERE assignment_extra_info_id = c_extra_info_id;
5257 --
5258 BEGIN
5259 --
5260 l_procedure := g_package || 'approve_declaration';
5261 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
5262
5263 IF g_debug THEN
5264 pay_in_utils.trace('**************************************************','********************');
5265 pay_in_utils.trace('p_assignment_id',p_assignment_id);
5266 pay_in_utils.trace('p_effective_date ',p_effective_date );
5267 pay_in_utils.trace('p_approval_flag ',p_approval_flag);
5268 pay_in_utils.trace('p_comment_text ',p_comment_text);
5269 pay_in_utils.trace('**************************************************','********************');
5270 END IF;
5271
5272
5273 --
5274 l_approval_status := get_approval_status
5275 (p_assignment_id
5276 ,get_tax_year(p_effective_date)
5277 ,l_extra_info_id);
5278 --
5279 pay_in_utils.set_location(g_debug, l_procedure, 20);
5280 --
5281 IF l_approval_status is not null THEN
5282 --
5283 pay_in_utils.set_location(g_debug, l_procedure, 30);
5284 --
5285 OPEN get_object_version(l_extra_info_id);
5286 FETCH get_object_version INTO l_object_version_number;
5287 CLOSE get_object_version;
5288 --
5289 pay_in_utils.set_location(g_debug, l_procedure, 40);
5290 --
5291 hr_assignment_extra_info_api.update_assignment_extra_info
5292 (p_assignment_extra_info_id => l_extra_info_id
5293 ,p_object_version_number => l_object_version_number
5294 ,p_aei_information_category => g_approval_info_type
5295 ,p_aei_information1 => get_tax_year(p_effective_date)
5296 ,p_aei_information2 => p_approval_flag
5297 ,p_aei_information3 => substr(p_comment_text, 0, 150));
5298 --
5299 pay_in_utils.set_location(g_debug, l_procedure, 50);
5300 --
5301 ELSE
5302 --
5303 pay_in_utils.set_location(g_debug, l_procedure, 60);
5304 --
5305 hr_assignment_extra_info_api.create_assignment_extra_info
5306 (p_assignment_id => p_assignment_id
5307 ,p_information_type => g_approval_info_type
5308 ,p_aei_information_category => g_approval_info_type
5309 ,p_aei_information1 => get_tax_year(p_effective_date)
5310 ,p_aei_information2 => p_approval_flag
5311 ,p_aei_information3 => substr(p_comment_text, 0, 150)
5312 ,p_assignment_extra_info_id => l_extra_info_id
5313 ,p_object_version_number => l_object_version_number);
5314 --
5315 pay_in_utils.set_location(g_debug, l_procedure, 70);
5316 --
5317 END IF;
5318 --
5319 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,80);
5320 --
5321 EXCEPTION
5322 WHEN OTHERS THEN
5323 fnd_msg_pub.add_exc_msg
5324 (p_pkg_name => g_package
5325 ,p_procedure_name => 'approve_declaration'
5326 ,p_error_text => substr(sqlerrm, 1, 240)
5327 );
5328 --
5329 END approve_declaration;
5330
5331 -- Start changes to Enhancement 3886086(Web ADI)
5332
5333 --------------------------------------------------------------------------
5334 -- --
5335 -- Name : WEB_ADI_DECLARE_TAX --
5336 -- Type : PROCEDURE --
5337 -- Access : Public --
5338 -- Description : The procedure is responsible for storing the --
5339 -- details through WEB ADI . --
5340 -- --
5341 -- Parameters : --
5342 -- IN : p_assignment_id per_assignments_f.assignment_id%TYPE--
5343 -- p_effective_date DATE --
5344 -- p_warnings BOOLEAN --
5345 -- --
5346 -- Change History : --
5347 --------------------------------------------------------------------------
5348 -- Rev# Date Userid Description --
5349 --------------------------------------------------------------------------
5350 -- 1.1 20-Jun-2005 abhjain Added changes after stat update --
5351 --------------------------------------------------------------------------
5352
5353 PROCEDURE web_adi_declare_tax
5354 (p_assignment_id IN number
5355 ,p_effective_date IN date default null
5356 ,p_april IN number default null
5357 ,p_may IN number default null
5358 ,p_june IN number default null
5359 ,p_july IN number default null
5360 ,p_august IN number default null
5361 ,p_september IN number default null
5362 ,p_october IN number default null
5363 ,p_november IN number default null
5364 ,p_december IN number default null
5365 ,p_january IN number default null
5366 ,p_february IN number default null
5367 ,p_march IN number default null
5368 ,p_cce_ee_id1 IN number default null
5369 ,p_cce_component1 IN varchar2 default null
5370 ,p_investment_amount1 IN number default null
5371 ,p_cce_ee_id2 IN number default null
5372 ,p_cce_component2 IN varchar2 default null
5373 ,p_investment_amount2 IN number default null
5374 ,p_cce_ee_id3 IN number default null
5375 ,p_cce_component3 IN varchar2 default null
5376 ,p_investment_amount3 IN number default null
5377 ,p_cce_ee_id4 IN number default null
5378 ,p_cce_component4 IN varchar2 default null
5379 ,p_investment_amount4 IN number default null
5380 ,p_cce_ee_id5 IN number default null
5381 ,p_cce_component5 IN varchar2 default null
5382 ,p_investment_amount5 IN number default null
5383 ,p_cce_ee_id6 IN number default null
5384 ,p_cce_component6 IN varchar2 default null
5385 ,p_investment_amount6 IN number default null
5386 ,p_cce_ee_id7 IN number default null
5387 ,p_cce_component7 IN varchar2 default null
5388 ,p_investment_amount7 IN number default null
5389 ,p_cce_ee_id8 IN number default null
5390 ,p_cce_component8 IN varchar2 default null
5391 ,p_investment_amount8 IN number default null
5392 ,p_cce_ee_id9 IN number default null
5393 ,p_cce_component9 IN varchar2 default null
5394 ,p_investment_amount9 IN number default null
5395 ,p_cce_ee_id10 IN number default null
5396 ,p_cce_component10 IN varchar2 default null
5397 ,p_investment_amount10 IN number default null
5398 ,p_cce_ee_id11 IN number default null
5399 ,p_cce_component11 IN varchar2 default null
5400 ,p_investment_amount11 IN number default null
5401 ,p_cce_ee_id12 IN number default null
5402 ,p_cce_component12 IN varchar2 default null
5403 ,p_investment_amount12 IN number default null
5404 ,p_cce_ee_id13 IN number default null
5405 ,p_cce_component13 IN varchar2 default null
5406 ,p_investment_amount13 IN number default null
5407 ,p_cce_ee_id14 IN number default null
5408 ,p_cce_component14 IN varchar2 default null
5409 ,p_investment_amount14 IN number default null
5410 ,p_cce_ee_id15 IN number default null
5411 ,p_cce_component15 IN varchar2 default null
5412 ,p_investment_amount15 IN number default null
5413 ,p_cce_ee_id16 IN number default null
5414 ,p_cce_component16 IN varchar2 default null
5415 ,p_investment_amount16 IN number default null
5416 ,p_cce_ee_id17 IN number default null
5417 ,p_cce_component17 IN varchar2 default null
5418 ,p_investment_amount17 IN number default null
5419 ,p_cce_ee_id18 IN number default null
5420 ,p_cce_component18 IN varchar2 default null
5421 ,p_investment_amount18 IN number default null
5422 ,p_cce_ee_id19 IN number default null
5423 ,p_cce_component19 IN varchar2 default null
5424 ,p_investment_amount19 IN number default null
5425 ,p_cce_ee_id20 IN number default null
5426 ,p_cce_component20 IN varchar2 default null
5427 ,p_investment_amount20 IN number default null
5428 ,p_cce_ee_id21 IN number default null
5429 ,p_cce_component21 IN varchar2 default null
5430 ,p_investment_amount21 IN number default null
5431 ,p_higher_education_loan IN number default null
5432 ,p_donation_for_research IN number default null
5433 ,p_claim_exemption_sec_80gg IN varchar2 default null
5434 ,p_premium_amount IN number default null
5435 ,p_premium_covers_sc IN varchar2 default null
5436 ,p_treatment_amount IN number default null
5437 ,p_treatment_covers_sc IN varchar2 default null
5438 ,p_income_from_house_property IN number default null
5439 ,p_profit_and_gain IN number default null
5440 ,p_long_term_capital_gain IN number default null
5441 ,p_short_term_capital_gain IN number default null
5442 ,p_income_from_other_sources IN number default null
5443 ,p_tds_paid IN number default null
5444 ,p_disease_entry_id1 IN number default null
5445 ,p_disability_type1 IN varchar2 default null
5446 ,p_disability_percentage1 IN varchar2 default null
5447 ,p_treatment_amount1 IN number default null
5448 ,p_disease_entry_id2 IN number default null
5449 ,p_disability_type2 IN varchar2 default null
5450 ,p_disability_percentage2 IN varchar2 default null
5451 ,p_treatment_amount2 IN number default null
5452 ,p_donation_entry_id1 IN number default null
5453 ,p_donation_type1 IN varchar2 default null
5454 ,p_donation_amount1 IN number default null
5455 ,p_donation_entry_id2 IN number default null
5456 ,p_donation_type2 IN varchar2 default null
5457 ,p_donation_amount2 IN number default null
5458 ,p_lic_entry_id1 IN number default null
5459 ,p_premium_paid1 IN number default null
5460 ,p_sum_assured1 IN number default null
5461 ,p_lic_entry_id2 IN number default null
5462 ,p_premium_paid2 IN number default null
5463 ,p_sum_assured2 IN number default null
5464 ,p_lic_entry_id3 IN number default null
5465 ,p_premium_paid3 IN number default null
5466 ,p_sum_assured3 IN number default null
5467 ,p_lic_entry_id4 IN number default null
5468 ,p_premium_paid4 IN number default null
5469 ,p_sum_assured4 IN number default null
5470 ,p_lic_entry_id5 IN number default null
5471 ,p_premium_paid5 IN number default null
5472 ,p_sum_assured5 IN number default null
5473 ,p_comment_text IN varchar2 default NULL
5474 ,P_PERSON_ID IN number default null
5475 ,P_FULL_NAME IN varchar2 default NULL
5476 ,P_EMPLOYEE_NUMBER IN varchar2 default NULL
5477 ,P_ASSIGNMENT_NUMBER IN varchar2 default NULL
5478 ,P_DEPARTMENT IN varchar2 default NULL
5479 ,P_LAST_UPDATED_DATE IN date default null
5480 ,P_ORGANIZATION_ID IN number default null
5481 ,P_BUSINESS_GROUP_ID IN number default null
5482 ,P_START_DATE IN date default null
5483 ,P_GRADE_ID IN number default null
5484 ,P_JOB_ID IN number default null
5485 ,P_POSITION_ID IN number default null
5486 ,P_TAX_AREA_NUMBER IN varchar2 default NULL
5487 ,P_APPROVAL_STATUS IN varchar2 default NULL
5488 ,P_TAX_YEAR IN varchar2 default NULL
5489 ,p_parent_premium IN number default null
5490 ,p_parent_sc IN varchar2 default null
5491 )
5492 IS
5493 --
5494 l_effective_date DATE;
5495 l_procedure VARCHAR(100);
5496 l_message VARCHAR2(250);
5497 l_declare_warn BOOLEAN;
5498 l_warnings VARCHAR2(256);
5499 l_approved_flag VARCHAR2(10);
5500 l_count NUMBER;
5501 --
5502 -- Added as a part of bug fix for 4774108
5503 l_element_type_id NUMBER;
5504 l_element_link_id NUMBER;
5505
5506 CURSOR csr_element_type_id(p_element_name VARCHAR2)
5507 IS
5508 SELECT element_type_id
5509 FROM pay_element_types_f
5510 WHERE legislation_code = 'IN'
5511 AND element_name = p_element_name
5512 AND p_effective_date BETWEEN effective_start_date AND effective_end_date;
5513
5514 CURSOR csr_number_of_entries
5515 (c_assignment_id IN per_assignments_f.assignment_id%TYPE
5516 ,c_element_name IN pay_element_types_f.element_name%TYPE
5517 ,c_effective_date IN DATE
5518 ,c_element_link_id IN NUMBER)
5519 IS
5520 SELECT count(entries.element_entry_id)
5521 FROM per_assignments_f assgn
5522 , pay_element_links_f link
5523 , pay_element_types_f types
5524 , pay_element_entries_f entries
5525 WHERE assgn.assignment_id = c_assignment_id
5526 AND link.element_link_id = c_element_link_id
5527 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
5528 AND link.business_group_id = assgn.business_group_id
5529 AND link.element_type_id = types.element_type_id
5530 AND types.element_name = c_element_name
5531 AND entries.element_type_id = types.element_type_id
5532 AND entries.element_link_id = link.element_link_id
5533 AND entries.assignment_id = assgn.assignment_id
5534 AND c_effective_date BETWEEN assgn.effective_start_date
5535 AND assgn.effective_end_date
5536 AND c_effective_date BETWEEN link.effective_start_date
5537 AND link.effective_end_date
5538 AND c_effective_date BETWEEN types.effective_start_date
5539 AND types.effective_end_date
5540 AND c_effective_date BETWEEN entries.effective_start_date
5541 AND entries.effective_end_date;
5542
5543
5544
5545
5546 PROCEDURE store_Disability
5547 (p_assignment_id IN number
5548 ,p_effective_date IN date default null
5549 ,p_disease_entry_id IN number default null
5550 ,p_disability_type IN varchar2 default null
5551 ,p_disability_percentage IN varchar2 default null
5552 ,p_treatment_amount IN number default null)
5553 IS
5554 l_procedure VARCHAR(100);
5555 l_message VARCHAR2(250);
5556
5557 BEGIN
5558 --
5559 l_procedure := g_package || 'store_Disability';
5560 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
5561
5562 IF g_debug THEN
5563 pay_in_utils.trace('**************************************************','********************');
5564 pay_in_utils.trace('Disease Entry ID: ', p_disease_entry_id);
5565 pay_in_utils.trace('Disability _type: ', p_disability_type);
5566 pay_in_utils.trace('Disability Percentage: ',p_disability_percentage);
5567 pay_in_utils.trace('Treatment Amount: ' , p_treatment_amount);
5568 pay_in_utils.trace('**************************************************','********************');
5569 END IF;
5570
5571 pay_in_utils.set_location(g_debug,'Entering Section80dd', 20);
5572
5573 --
5574 declare_section80dd
5575 (p_assignment_id => p_assignment_id
5576 ,p_disability_type => p_disability_type
5577 ,p_disability_percentage => p_disability_percentage
5578 ,p_treatment_amount => p_treatment_amount
5579 ,p_effective_date => l_effective_date
5580 ,p_element_entry_id => p_disease_entry_id
5581 ,p_warnings => l_warnings);
5582 --
5583 pay_in_utils.set_location(g_debug,'Leaving Section80dd', 20);
5584
5585 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
5586 --
5587 END store_Disability;
5588
5589
5590
5591
5592 PROCEDURE store_Donation
5593 (p_assignment_id IN number
5594 ,p_effective_date IN date default null
5595 ,p_donation_entry_id IN number default null
5596 ,p_donation_type IN varchar2 default null
5597 ,p_donation_amount IN number default null)
5598 IS
5599 l_procedure VARCHAR(100);
5600
5601 BEGIN
5602
5603 l_procedure := g_package || 'store_Donation';
5604 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
5605
5606 IF g_debug THEN
5607 pay_in_utils.trace('**************************************************','********************');
5608 pay_in_utils.trace('Donation Entry ID: ', p_donation_entry_id);
5609 pay_in_utils.trace('Donation Type: ', p_donation_type);
5610 pay_in_utils.trace('Donation Amount: ', p_donation_amount);
5611 pay_in_utils.trace('**************************************************','********************');
5612 END IF;
5613
5614 pay_in_utils.set_location(g_debug,'Entering store_Donation', 20);
5615 --
5616 declare_section80g
5617 (p_assignment_id => p_assignment_id
5618 ,p_donation_type => p_donation_type
5619 ,p_donation_amount => p_donation_amount
5620 ,p_effective_date => p_effective_date
5621 ,p_element_entry_id => p_donation_entry_id
5622 ,p_warnings => l_warnings);
5623 --
5624 pay_in_utils.set_location(g_debug,'Leaving store_Donation', 20);
5625
5626 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
5627 --
5628 END store_Donation;
5629
5630
5631
5632 PROCEDURE store_LIC
5633 (p_assignment_id IN number
5634 ,p_effective_date IN date default null
5635 ,p_lic_entry_id IN number default null
5636 ,p_premium_paid IN number default null
5637 ,p_sum_assured IN number default null)
5638 IS
5639 l_procedure VARCHAR(100);
5640 l_message VARCHAR2(250);
5641
5642 BEGIN
5643
5644 l_procedure := g_package || 'store_LIC';
5645 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
5646
5647 IF g_debug THEN
5648 pay_in_utils.trace('**************************************************','********************');
5649 pay_in_utils.trace('LIC Entry ID: ' , p_lic_entry_id);
5650 pay_in_utils.trace('Premium Paid: ' , p_premium_paid);
5651 pay_in_utils.trace('Sum Assured: ' , p_sum_assured);
5652 pay_in_utils.trace('**************************************************','********************');
5653 END IF;
5654 --
5655 pay_in_utils.set_location(g_debug,'Entering store_LIC', 20);
5656
5657 declare_life_insurance_premium
5658 (p_assignment_id => p_assignment_id
5659 ,p_premium_paid => p_premium_paid
5660 ,p_sum_assured => p_sum_assured
5661 ,p_effective_date => p_effective_date
5662 ,p_element_entry_id => p_lic_entry_id
5663 ,p_warnings => l_warnings);
5664 --
5665 pay_in_utils.set_location(g_debug,'Leaving store_LIC', 30);
5666
5667 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
5668
5669 --
5670 END store_LIC;
5671
5672
5673
5674 PROCEDURE raise_message
5675 (p_token1 IN VARCHAR2
5676 ,p_token2 IN VARCHAR2)
5677 IS
5678 l_procedure VARCHAR(100);
5679 l_message VARCHAR2(250);
5680 BEGIN
5681
5682 l_procedure := g_package || 'raise_message';
5683 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
5684
5685 IF g_debug THEN
5686 pay_in_utils.trace('**************************************************','********************');
5687 pay_in_utils.trace('p_token1 : ' , p_token1);
5688 pay_in_utils.trace('p_token2 : ' , p_token2);
5689 pay_in_utils.trace('**************************************************','********************');
5690 END IF;
5691
5692 IF (INSTR(p_token1,'PER_IN_INVESTMENT_80CCE')= 1)
5693 THEN
5694 hr_utility.set_message(800, 'PER_IN_INVESTMENT_80CCE');
5695 hr_utility.set_message_token('FROM', SUBSTR(p_token1,LENGTH('PER_IN_INVESTMENT_80CCE') + 1));
5696 hr_utility.set_message_token('TO', p_token2);
5697 hr_utility.raise_error;
5698 END IF;
5699
5700 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,40);
5701
5702 END raise_message;
5703
5704
5705
5706 --
5707 BEGIN
5708
5709
5710 l_procedure := g_package || 'web_adi_declare_tax';
5711 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
5712
5713
5714 IF g_debug THEN
5715 pay_in_utils.trace('**************************************************','********************');
5716 pay_in_utils.trace('p_assignment_id ',p_assignment_id);
5717 pay_in_utils.trace('p_effective_date ',p_effective_date);
5718 pay_in_utils.trace ('p_apr ',p_april);
5719 pay_in_utils.trace ('p_may ',p_may);
5720 pay_in_utils.trace ('p_jun ',p_june);
5721 pay_in_utils.trace ('p_jul ',p_july);
5722 pay_in_utils.trace ('p_aug ',p_august);
5723 pay_in_utils.trace ('p_sep ',p_september);
5724 pay_in_utils.trace ('p_oct ',p_october);
5725 pay_in_utils.trace ('p_nov ',p_november);
5726 pay_in_utils.trace ('p_dec ',p_december);
5727 pay_in_utils.trace ('p_jan ',p_january);
5728 pay_in_utils.trace ('p_feb ',p_february);
5729 pay_in_utils.trace ('p_mar ',p_march);
5730 pay_in_utils.trace('p_cce_ee_id1 ',p_cce_ee_id1);
5731 pay_in_utils.trace('p_cce_component1 ',p_cce_component1);
5732 pay_in_utils.trace('p_investment_amount1 ',p_investment_amount1);
5733 pay_in_utils.trace('p_cce_ee_id2 ',p_cce_ee_id2);
5734 pay_in_utils.trace('p_cce_component2 ',p_cce_component2);
5735 pay_in_utils.trace('p_investment_amount2 ',p_investment_amount2);
5736 pay_in_utils.trace('p_cce_ee_id3 ',p_cce_ee_id3);
5737 pay_in_utils.trace('p_cce_component3 ',p_cce_component3);
5738 pay_in_utils.trace('p_investment_amount3 ',p_investment_amount3);
5739 pay_in_utils.trace('p_cce_ee_id4 ',p_cce_ee_id4);
5740 pay_in_utils.trace('p_cce_component4 ',p_cce_component4);
5741 pay_in_utils.trace('p_investment_amount4 ',p_investment_amount4);
5742 pay_in_utils.trace('p_cce_ee_id5 ',p_cce_ee_id5);
5743 pay_in_utils.trace('p_cce_component5 ',p_cce_component5);
5744 pay_in_utils.trace('p_investment_amount5 ',p_investment_amount6);
5745 pay_in_utils.trace('p_cce_ee_id6 ',p_cce_ee_id6);
5746 pay_in_utils.trace('p_cce_component6 ',p_cce_component6);
5747 pay_in_utils.trace('p_investment_amount6 ',p_investment_amount6);
5748 pay_in_utils.trace('p_cce_ee_id7 ',p_cce_ee_id7);
5749 pay_in_utils.trace('p_cce_component7 ',p_cce_component7);
5750 pay_in_utils.trace('p_investment_amount7 ',p_investment_amount7);
5751 pay_in_utils.trace('p_cce_ee_id8 ',p_cce_ee_id8);
5752 pay_in_utils.trace('p_cce_component8 ',p_cce_component8);
5753 pay_in_utils.trace('p_investment_amount8 ',p_investment_amount8);
5754 pay_in_utils.trace('p_cce_ee_id9 ',p_cce_ee_id9);
5755 pay_in_utils.trace('p_cce_component9 ',p_cce_component9);
5756 pay_in_utils.trace('p_investment_amount9 ',p_investment_amount9);
5757 pay_in_utils.trace('p_cce_ee_id10 ',p_cce_ee_id10);
5758 pay_in_utils.trace('p_cce_component10 ',p_cce_component10);
5759 pay_in_utils.trace('p_investment_amount10 ',p_investment_amount10);
5760 pay_in_utils.trace('p_cce_ee_id11 ',p_cce_ee_id11);
5761 pay_in_utils.trace('p_cce_component11 ',p_cce_component11);
5762 pay_in_utils.trace('p_investment_amount11 ',p_investment_amount11);
5763 pay_in_utils.trace('p_cce_ee_id12 ',p_cce_ee_id12);
5764 pay_in_utils.trace('p_cce_component12 ',p_cce_component12);
5765 pay_in_utils.trace('p_investment_amount12 ',p_investment_amount12);
5766 pay_in_utils.trace('p_cce_ee_id13 ',p_cce_ee_id13);
5767 pay_in_utils.trace('p_cce_component13 ',p_cce_component13);
5768 pay_in_utils.trace('p_investment_amount13 ',p_investment_amount13);
5769 pay_in_utils.trace('p_cce_ee_id14 ',p_cce_ee_id14);
5770 pay_in_utils.trace('p_cce_component14 ',p_cce_component14);
5771 pay_in_utils.trace('p_investment_amount14 ',p_investment_amount14);
5772 pay_in_utils.trace('p_cce_ee_id15 ',p_cce_ee_id15);
5773 pay_in_utils.trace('p_cce_component15 ',p_cce_component15);
5774 pay_in_utils.trace('p_investment_amount15 ',p_investment_amount15);
5775 pay_in_utils.trace('p_cce_ee_id16 ',p_cce_ee_id16);
5776 pay_in_utils.trace('p_cce_component16 ',p_cce_component16);
5777 pay_in_utils.trace('p_investment_amount16 ',p_investment_amount16);
5778 pay_in_utils.trace('p_cce_ee_id17 ',p_cce_ee_id17);
5779 pay_in_utils.trace('p_cce_component17 ',p_cce_component17);
5780 pay_in_utils.trace('p_investment_amount17 ',p_investment_amount17);
5781 pay_in_utils.trace('p_cce_ee_id18 ',p_cce_ee_id18);
5782 pay_in_utils.trace('p_cce_component18 ',p_cce_component18);
5783 pay_in_utils.trace('p_investment_amount18 ',p_investment_amount18);
5784 pay_in_utils.trace('p_cce_ee_id19 ',p_cce_ee_id19);
5785 pay_in_utils.trace('p_cce_component19 ',p_cce_component19);
5786 pay_in_utils.trace('p_investment_amount19 ',p_investment_amount19);
5787 pay_in_utils.trace('p_cce_ee_id20 ',p_cce_ee_id20);
5788 pay_in_utils.trace('p_cce_component20 ',p_cce_component20);
5789 pay_in_utils.trace('p_investment_amount20 ',p_investment_amount20);
5790 pay_in_utils.trace('p_cce_ee_id21 ',p_cce_ee_id21);
5791 pay_in_utils.trace('p_cce_component21 ',p_cce_component21);
5792 pay_in_utils.trace('p_investment_amount21 ',p_investment_amount21);
5793 pay_in_utils.trace('p_higher_education_loan ',p_higher_education_loan);
5794 pay_in_utils.trace('p_donation_for_research ',p_donation_for_research);
5795 pay_in_utils.trace('p_claim_exemption_sec_80gg ',p_claim_exemption_sec_80gg);
5796 pay_in_utils.trace('p_premium_amount ',p_premium_amount);
5797 pay_in_utils.trace('p_premium_covers_sc ',p_premium_covers_sc);
5798 pay_in_utils.trace('p_treatment_amount ',p_treatment_amount);
5799 pay_in_utils.trace('p_treatment_covers_sc ',p_treatment_covers_sc);
5800 pay_in_utils.trace('p_income_from_house_property ',p_income_from_house_property);
5801 pay_in_utils.trace('p_profit_and_gain ',p_profit_and_gain);
5802 pay_in_utils.trace('p_long_term_capital_gain ',p_long_term_capital_gain);
5803 pay_in_utils.trace('p_short_term_capital_gain ',p_short_term_capital_gain);
5804 pay_in_utils.trace('p_income_from_other_sources ',p_income_from_other_sources);
5805 pay_in_utils.trace('p_tds_paid ',p_tds_paid);
5806 pay_in_utils.trace('p_disease_entry_id1 ',p_disease_entry_id1);
5807 pay_in_utils.trace('p_disability_type1 ',p_disability_type1);
5808 pay_in_utils.trace('p_disability_percentage1 ',p_disability_percentage1);
5809 pay_in_utils.trace('p_treatment_amount1 ',p_treatment_amount1);
5810 pay_in_utils.trace('p_disease_entry_id2 ',p_disease_entry_id2);
5811 pay_in_utils.trace('p_disability_type2 ',p_disability_type2);
5812 pay_in_utils.trace('p_disability_percentage2 ',p_disability_percentage2 );
5813 pay_in_utils.trace('p_treatment_amount2 ',p_treatment_amount2);
5814 pay_in_utils.trace('p_donation_entry_id1 ',p_donation_entry_id1);
5815 pay_in_utils.trace('p_donation_type1 ',p_donation_type1);
5816 pay_in_utils.trace('p_donation_amount1 ',p_donation_amount1);
5817 pay_in_utils.trace('p_donation_entry_id2 ',p_donation_amount1);
5818 pay_in_utils.trace('p_donation_type2 ',p_donation_type2);
5819 pay_in_utils.trace('p_donation_amount2 ',p_donation_amount2);
5820 pay_in_utils.trace('p_lic_entry_id1 ',p_lic_entry_id1);
5821 pay_in_utils.trace('p_premium_paid1 ',p_premium_paid1);
5822 pay_in_utils.trace('p_sum_assured1 ',p_sum_assured1);
5823 pay_in_utils.trace('p_lic_entry_id2 ',p_lic_entry_id2);
5824 pay_in_utils.trace('p_premium_paid2 ',p_premium_paid2);
5825 pay_in_utils.trace('p_sum_assured2 ',p_sum_assured2);
5826 pay_in_utils.trace('p_lic_entry_id3 ',p_lic_entry_id3);
5827 pay_in_utils.trace('p_premium_paid3 ',p_premium_paid3);
5828 pay_in_utils.trace('p_sum_assured3 ',p_sum_assured3);
5829 pay_in_utils.trace('p_lic_entry_id4 ',p_lic_entry_id4);
5830 pay_in_utils.trace('p_premium_paid4 ',p_premium_paid4);
5831 pay_in_utils.trace('p_sum_assured4 ',p_sum_assured4);
5832 pay_in_utils.trace('p_lic_entry_id5 ',p_lic_entry_id5);
5833 pay_in_utils.trace('p_premium_paid5 ',p_premium_paid5);
5834 pay_in_utils.trace('p_sum_assured5 ',p_sum_assured5);
5835 pay_in_utils.trace('p_comment_text ',p_comment_text);
5836 pay_in_utils.trace('**************************************************','********************');
5837 END IF ;
5838
5839 l_declare_warn := false;
5840 l_approved_flag := 'Y';
5841 --
5842 --
5843 l_effective_date := pay_in_utils.get_effective_date(p_effective_date);
5844 --
5845 declare_house_rent
5846 (p_assignment_id => p_assignment_id
5847 ,p_effective_date => l_effective_date
5848 ,p_apr => p_april
5849 ,p_may => p_may
5850 ,p_jun => p_june
5851 ,p_jul => p_july
5852 ,p_aug => p_august
5853 ,p_sep => p_september
5854 ,p_oct => p_october
5855 ,p_nov => p_november
5856 ,p_dec => p_december
5857 ,p_jan => p_january
5858 ,p_feb => p_february
5859 ,p_mar => p_march
5860 ,p_warnings => l_declare_warn);
5861 --
5862 pay_in_utils.set_location(g_debug, l_procedure, 20);
5863 --
5864 /* declare_chapter6a
5865 (p_assignment_id => p_assignment_id
5866 ,p_effective_date => l_effective_date
5867 ,p_pension_fund_80ccc => p_pension_fund
5868 ,p_medical_insurance_prem_80d => p_premium_amount
5869 ,p_sec_80ddb_senior_citizen => p_premium_covers_sc
5870 ,p_disease_treatment_80ddb => p_treatment_amount
5871 ,p_sec_80d_senior_citizen => p_treatment_covers_sc
5872 ,p_higher_education_loan_80e => p_higher_education_loan
5873 ,p_claim_exemp_under_sec_80gg => p_claim_exemption_sec_80gg
5874 ,p_donation_for_research_80gga => p_donation_for_research
5875 ,p_int_on_gen_investment_80L => p_general_investments
5876 ,p_int_on_securities_80L => p_securities
5877 ,p_warnings => l_declare_warn);
5878
5879 --
5880 pay_in_utils.set_location(g_debug, l_procedure, 30);
5881 --
5882 declare_section88
5883 (p_assignment_id => p_assignment_id
5884 ,p_effective_date => l_effective_date
5885 ,p_deferred_annuity => p_deferred_annuity
5886 ,p_public_provident_fund => p_public_provident_fund
5887 ,p_post_office_savings_scheme => p_post_office_savings
5888 ,p_deposit_in_nsc_vi_issue => p_nsc_6_Issue
5889 ,p_deposit_in_nsc_viii_issue => p_nsc_8_Issue
5890 ,p_interest_on_nsc_reinvested => p_interest_on_nsc
5891 ,p_house_loan_repayment => p_housing_loan_principal
5892 ,p_notified_mutual_fund_or_uti => p_notified_mutual_fund
5893 ,p_national_housing_bank_scheme => p_national_housing_bank
5894 ,p_unit_linked_insurance_plan => p_unit_linked_insurance
5895 ,p_notified_annuity_plan => p_notified_annuity_plan
5896 ,p_notified_pension_fund => p_notified_pension_fund
5897 ,p_public_sector_company_scheme => p_public_sector_company
5898 ,p_approved_superannuation_fund => p_approved_superannuation
5899 ,p_infrastructure_bond => p_infrastructure_bonds
5900 ,p_warnings => l_declare_warn);
5901 --
5902
5903 pay_in_utils.set_location(g_debug, l_procedure, 40);
5904 --
5905 declare_tuition_fee
5906 (p_assignment_id => p_assignment_id
5907 ,p_effective_date => l_effective_date
5908 ,p_tuition_fee_for_child_1 => p_tuition_fee_for_first_child
5909 ,p_tuition_fee_for_child_2 => p_tuition_fee_for_second_child
5910 ,p_warnings => l_declare_warn);
5911 --
5912 pay_in_utils.set_location(g_debug, l_procedure, 50);
5913 */
5914 --
5915 declare_other_income
5916 (p_assignment_id => p_assignment_id
5917 ,p_effective_date => l_effective_date
5918 ,p_income_from_house_property => p_income_from_house_property
5919 ,p_profit_and_gain_from_busines => p_profit_and_gain
5920 ,p_long_term_capital_gain => p_long_term_capital_gain
5921 ,p_short_term_capital_gain => p_short_term_capital_gain
5922 ,p_income_from_any_other_source => p_income_from_other_sources
5923 ,p_tds_paid_on_other_income => p_tds_paid
5924 ,p_warnings => l_declare_warn);
5925 --
5926 pay_in_utils.set_location(g_debug, l_procedure, 60);
5927 --
5928
5929 declare_section80e
5930 (p_assignment_id => p_assignment_id
5931 ,p_effective_date => l_effective_date
5932 ,p_higher_education_loan_80e => p_higher_education_loan
5933 ,p_warnings => l_declare_warn);
5934
5935
5936 --
5937 pay_in_utils.set_location(g_debug, l_procedure, 70);
5938 --
5939
5940 declare_section80gga
5941 (p_assignment_id => p_assignment_id
5942 ,p_effective_date => l_effective_date
5943 ,p_donation_for_research_80gga => p_donation_for_research
5944 ,p_warnings => l_declare_warn);
5945
5946 --
5947 pay_in_utils.set_location(g_debug, l_procedure, 80);
5948 --
5949 declare_section80gg
5950 (p_assignment_id => p_assignment_id
5951 ,p_effective_date => l_effective_date
5952 ,p_claim_exemp_under_sec_80gg => p_claim_exemption_sec_80gg
5953 ,p_warnings => l_declare_warn);
5954 --
5955 pay_in_utils.set_location(g_debug, l_procedure, 90);
5956 --
5957 declare_section80d
5958 (p_assignment_id => p_assignment_id
5959 ,p_effective_date => l_effective_date
5960 ,p_medical_insurance_prem_80d => p_premium_amount
5961 ,p_sec_80d_senior_citizen => p_premium_covers_sc
5962 ,p_med_par_insurance_prem_80d => p_parent_premium
5963 ,p_sec_80d_par_senior_citizen => p_parent_sc
5964 ,p_warnings => l_declare_warn);
5965 --
5966 pay_in_utils.set_location(g_debug, l_procedure, 100);
5967 --
5968 declare_section80ddb
5969 (p_assignment_id => p_assignment_id
5970 ,p_effective_date => l_effective_date
5971 ,p_disease_treatment_80ddb => p_treatment_amount
5972 ,p_sec_80ddb_senior_citizen => p_treatment_covers_sc
5973 ,p_warnings => l_declare_warn);
5974 --
5975 pay_in_utils.set_location(g_debug, l_procedure, 110);
5976 --
5977
5978 --
5979 pay_in_utils.set_location(g_debug, l_procedure, 120);
5980 --
5981 store_Disability(p_assignment_id, l_effective_date, p_disease_entry_id1, p_disability_type1, p_disability_percentage1, p_treatment_amount1);
5982 store_Disability(p_assignment_id, l_effective_date, p_disease_entry_id2, p_disability_type2, p_disability_percentage2, p_treatment_amount2);
5983
5984 --
5985 pay_in_utils.set_location(g_debug, l_procedure, 130);
5986 --
5987 store_Donation(p_assignment_id, l_effective_date, p_donation_entry_id1, p_donation_type1, p_donation_amount1);
5988 store_Donation(p_assignment_id, l_effective_date, p_donation_entry_id2, p_donation_type2, p_donation_amount2);
5989 --
5990 pay_in_utils.set_location(g_debug, l_procedure, 140);
5991 --
5992
5993 store_LIC(p_assignment_id, l_effective_date, p_lic_entry_id1, p_premium_paid1, p_sum_assured1);
5994 store_LIC(p_assignment_id, l_effective_date, p_lic_entry_id2, p_premium_paid2, p_sum_assured2);
5995 store_LIC(p_assignment_id, l_effective_date, p_lic_entry_id3, p_premium_paid3, p_sum_assured3);
5996 store_LIC(p_assignment_id, l_effective_date, p_lic_entry_id4, p_premium_paid4, p_sum_assured4);
5997 store_LIC(p_assignment_id, l_effective_date, p_lic_entry_id5, p_premium_paid5, p_sum_assured5);
5998 --
5999 pay_in_utils.set_location(g_debug, l_procedure, 150);
6000 --
6001 declare_section80cce(p_assignment_id, p_cce_component1, p_investment_amount1, p_effective_date, p_cce_ee_id1, l_warnings);
6002 raise_message(l_warnings,p_cce_component1);
6003 declare_section80cce(p_assignment_id, p_cce_component2, p_investment_amount2, p_effective_date, p_cce_ee_id2, l_warnings);
6004 raise_message(l_warnings,p_cce_component2);
6005 declare_section80cce(p_assignment_id, p_cce_component3, p_investment_amount3, p_effective_date, p_cce_ee_id3, l_warnings);
6006 raise_message(l_warnings,p_cce_component3);
6007 declare_section80cce(p_assignment_id, p_cce_component4, p_investment_amount4, p_effective_date, p_cce_ee_id4, l_warnings);
6008 raise_message(l_warnings,p_cce_component4);
6009 declare_section80cce(p_assignment_id, p_cce_component5, p_investment_amount5, p_effective_date, p_cce_ee_id5, l_warnings);
6010 raise_message(l_warnings,p_cce_component5);
6011 declare_section80cce(p_assignment_id, p_cce_component6, p_investment_amount6, p_effective_date, p_cce_ee_id6, l_warnings);
6012 raise_message(l_warnings,p_cce_component6);
6013 declare_section80cce(p_assignment_id, p_cce_component7, p_investment_amount7, p_effective_date, p_cce_ee_id7, l_warnings);
6014 raise_message(l_warnings,p_cce_component7);
6015 declare_section80cce(p_assignment_id, p_cce_component8, p_investment_amount8, p_effective_date, p_cce_ee_id8, l_warnings);
6016 raise_message(l_warnings,p_cce_component8);
6017 declare_section80cce(p_assignment_id, p_cce_component9, p_investment_amount9, p_effective_date, p_cce_ee_id9, l_warnings);
6018 raise_message(l_warnings,p_cce_component9);
6019 declare_section80cce(p_assignment_id, p_cce_component10, p_investment_amount10, p_effective_date, p_cce_ee_id10, l_warnings);
6020 raise_message(l_warnings,p_cce_component10);
6021 declare_section80cce(p_assignment_id, p_cce_component11, p_investment_amount11, p_effective_date, p_cce_ee_id11, l_warnings);
6022 raise_message(l_warnings,p_cce_component11);
6023 declare_section80cce(p_assignment_id, p_cce_component12, p_investment_amount12, p_effective_date, p_cce_ee_id12, l_warnings);
6024 raise_message(l_warnings,p_cce_component12);
6025 declare_section80cce(p_assignment_id, p_cce_component13, p_investment_amount13, p_effective_date, p_cce_ee_id13, l_warnings);
6026 raise_message(l_warnings,p_cce_component13);
6027 declare_section80cce(p_assignment_id, p_cce_component14, p_investment_amount14, p_effective_date, p_cce_ee_id14, l_warnings);
6028 raise_message(l_warnings,p_cce_component14);
6029 declare_section80cce(p_assignment_id, p_cce_component15, p_investment_amount15, p_effective_date, p_cce_ee_id15, l_warnings);
6030 raise_message(l_warnings,p_cce_component15);
6031 declare_section80cce(p_assignment_id, p_cce_component16, p_investment_amount16, p_effective_date, p_cce_ee_id16, l_warnings);
6032 raise_message(l_warnings,p_cce_component16);
6033 declare_section80cce(p_assignment_id, p_cce_component17, p_investment_amount17, p_effective_date, p_cce_ee_id17, l_warnings);
6034 raise_message(l_warnings,p_cce_component17);
6035 declare_section80cce(p_assignment_id, p_cce_component18, p_investment_amount18, p_effective_date, p_cce_ee_id18, l_warnings);
6036 raise_message(l_warnings,p_cce_component18);
6037 declare_section80cce(p_assignment_id, p_cce_component19, p_investment_amount19, p_effective_date, p_cce_ee_id19, l_warnings);
6038 raise_message(l_warnings,p_cce_component19);
6039 declare_section80cce(p_assignment_id, p_cce_component20, p_investment_amount20, p_effective_date, p_cce_ee_id20, l_warnings);
6040 raise_message(l_warnings,p_cce_component20);
6041 declare_section80cce(p_assignment_id, p_cce_component21, p_investment_amount21, p_effective_date, p_cce_ee_id21, l_warnings);
6042 raise_message(l_warnings,p_cce_component21);
6043
6044 l_count := 0;
6045 -- Added as a part of bug fix 4774108
6046 OPEN csr_element_type_id('Deduction under Section 80DD');
6047 FETCH csr_element_type_id INTO l_element_type_id;
6048 CLOSE csr_element_type_id;
6049
6050 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6051 ,l_effective_date
6052 ,l_element_type_id
6053 );
6054
6055 OPEN csr_number_of_entries(p_assignment_id, 'Deduction under Section 80DD', l_effective_date,l_element_link_id);
6056 FETCH csr_number_of_entries INTO l_count;
6057 CLOSE csr_number_of_entries;
6058 --
6059 IF l_count > 2 THEN
6060 --
6061 l_approved_flag := 'N';
6062 --
6063 END IF;
6064 --
6065 pay_in_utils.set_location(g_debug, l_procedure, 160);
6066 --
6067 -- Added as a part of bug fix 4774108
6068 OPEN csr_element_type_id('Deduction under Section 80G');
6069 FETCH csr_element_type_id INTO l_element_type_id;
6070 CLOSE csr_element_type_id;
6071
6072 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6073 ,l_effective_date
6074 ,l_element_type_id
6075 );
6076
6077 l_count := 0;
6078 OPEN csr_number_of_entries(p_assignment_id, 'Deduction under Section 80G',l_effective_date,l_element_link_id);
6079 FETCH csr_number_of_entries INTO l_count;
6080 CLOSE csr_number_of_entries;
6081 --
6082 IF l_count > 2 THEN
6083 --
6084 l_approved_flag := 'N';
6085 --
6086 END IF;
6087 --
6088 pay_in_utils.set_location(g_debug, l_procedure, 170);
6089 --
6090 l_count := 0;
6091 -- Added as a part of bug fix 4774108
6092 OPEN csr_element_type_id('Life Insurance Premium');
6093 FETCH csr_element_type_id INTO l_element_type_id;
6094 CLOSE csr_element_type_id;
6095
6096 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6097 ,l_effective_date
6098 ,l_element_type_id
6099 );
6100
6101 OPEN csr_number_of_entries(p_assignment_id, 'Life Insurance Premium', l_effective_date,l_element_link_id);
6102 FETCH csr_number_of_entries INTO l_count;
6103 CLOSE csr_number_of_entries;
6104 --
6105 IF l_count > 5 THEN
6106 --
6107 l_approved_flag := 'N';
6108 --
6109 END IF;
6110 --
6111 pay_in_utils.set_location(g_debug, l_procedure, 180);
6112 --
6113 -- Added as a part of bug fix 4774108
6114 OPEN csr_element_type_id('Deduction under Section 80CCE');
6115 FETCH csr_element_type_id INTO l_element_type_id;
6116 CLOSE csr_element_type_id;
6117
6118 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6119 ,l_effective_date
6120 ,l_element_type_id
6121 );
6122
6123 l_count := 0;
6124 OPEN csr_number_of_entries(p_assignment_id,'Deduction under Section 80CCE',l_effective_date,l_element_link_id);
6125 FETCH csr_number_of_entries INTO l_count;
6126 CLOSE csr_number_of_entries;
6127 --
6128 IF l_count > 19 THEN
6129 --
6130 l_approved_flag := 'N';
6131 --
6132 END IF;
6133 --
6134 pay_in_utils.set_location(g_debug, l_procedure, 190);
6135
6136 -- Added as a part of bug fix 4774108
6137 OPEN csr_element_type_id('Pension Fund 80CCC');
6138 FETCH csr_element_type_id INTO l_element_type_id;
6139 CLOSE csr_element_type_id;
6140
6141 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6142 ,l_effective_date
6143 ,l_element_type_id
6144 );
6145
6146 l_count := 0;
6147 OPEN csr_number_of_entries(p_assignment_id, 'Pension Fund 80CCC', l_effective_date,l_element_link_id);
6148 FETCH csr_number_of_entries INTO l_count;
6149 CLOSE csr_number_of_entries;
6150 --
6151 IF l_count > 1 THEN
6152 --
6153 l_approved_flag := 'N';
6154 --
6155 END IF;
6156 --
6157 pay_in_utils.set_location(g_debug, l_procedure, 200);
6158
6159 l_count := 0;
6160 -- Added as a part of bug fix 4774108
6161 OPEN csr_element_type_id('Deferred Annuity');
6162 FETCH csr_element_type_id INTO l_element_type_id;
6163 CLOSE csr_element_type_id;
6164
6165 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6166 ,l_effective_date
6167 ,l_element_type_id
6168 );
6169
6170 OPEN csr_number_of_entries(p_assignment_id, 'Deferred Annuity', l_effective_date,l_element_link_id);
6171 FETCH csr_number_of_entries INTO l_count;
6172 CLOSE csr_number_of_entries;
6173 --
6174 IF l_count > 1 THEN
6175 --
6176 l_approved_flag := 'N';
6177 --
6178 END IF;
6179
6180 l_count := 0;
6181 OPEN csr_element_type_id('Senior Citizens Savings Scheme');
6182 FETCH csr_element_type_id INTO l_element_type_id;
6183 CLOSE csr_element_type_id;
6184
6185 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6186 ,l_effective_date
6187 ,l_element_type_id
6188 );
6189
6190 OPEN csr_number_of_entries(p_assignment_id, 'Senior Citizens Savings Scheme', l_effective_date,l_element_link_id);
6191 FETCH csr_number_of_entries INTO l_count;
6192 CLOSE csr_number_of_entries;
6193 --
6194 IF l_count > 1 THEN
6195 --
6196 l_approved_flag := 'N';
6197 --
6198 END IF;
6199 --
6200 pay_in_utils.set_location(g_debug, l_procedure, 210);
6201 --
6202 approve_declaration
6203 (p_assignment_id => p_assignment_id
6204 ,p_approval_flag => l_approved_flag
6205 ,p_effective_date => l_effective_date
6206 ,p_comment_text => p_comment_text);
6207 --
6208 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,220);
6209
6210 END web_adi_declare_tax;
6211
6212 --------------------------------------------------------------------------
6213 -- --
6214 -- Name : GET_VALUE --
6215 -- Type : PROCEDURE --
6216 -- Access : Public --
6217 -- Description : The procedure is responsible for getting values --
6218 -- of the input values in case of multiple element --
6219 -- of an element in tax declaration --
6220 -- --
6221 -- Parameters : --
6222 -- IN : p_assignment_id NUMBER --
6223 -- p_index NUMBER --
6224 -- p_element_name VARCHAR2 --
6225 -- p_input_name VARCHAR2 --
6226 -- p_effective_date DATE --
6227 -- --
6228 -- Change History : --
6229 --------------------------------------------------------------------------
6230 -- Rev# Date Userid Description --
6231 --------------------------------------------------------------------------
6232 -- 1.1 20-Jun-2005 abhjain Added changes after stat update --
6233 --------------------------------------------------------------------------
6234 FUNCTION get_value
6235 (p_assignment_id IN number
6236 ,p_index IN number
6237 ,p_element_name IN varchar2
6238 ,p_input_name IN varchar2
6239 ,p_effective_date IN date
6240 )
6241 RETURN VARCHAR2
6242 IS
6243 --
6244 CURSOR csr_get_80dd_values(p_element_link_id NUMBER)
6245 IS
6246 SELECT entries.element_entry_id entry_id
6247 , value1.screen_entry_value Disability_Type
6248 , value2.screen_entry_value Treatment_Amount
6249 , value3.screen_entry_value Disability_Percentage
6250 FROM per_assignments_f assgn
6251 , pay_element_links_f link
6252 , pay_element_types_f types
6253 , pay_element_entries_f entries
6254 , pay_element_entry_values_f value1
6255 , pay_input_values_f inputs1
6256 , pay_element_entry_values_f value2
6257 , pay_input_values_f inputs2
6258 , pay_element_entry_values_f value3
6259 , pay_input_values_f inputs3
6260 WHERE assgn.assignment_id = p_assignment_id
6261 AND link.element_link_id = p_element_link_id-- Changed for bug 4774108
6262 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
6263 AND link.business_group_id = assgn.business_group_id
6264 AND link.element_type_id = types.element_type_id
6265 AND types.element_name = 'Deduction under Section 80DD'
6266 AND entries.element_type_id = types.element_type_id
6267 AND entries.element_link_id = link.element_link_id
6268 AND entries.assignment_id = assgn.assignment_id
6269 AND value1.element_entry_id = entries.element_entry_id
6270 AND inputs1.input_value_id = value1.input_value_id
6271 AND inputs1.element_type_id = types.element_type_id
6272 AND inputs1.name = 'Disability Type'
6273 AND value2.element_entry_id = entries.element_entry_id
6274 AND inputs2.input_value_id = value2.input_value_id
6275 AND inputs2.element_type_id = types.element_type_id
6276 AND inputs2.name = 'Treatment Amount'
6277 AND value3.element_entry_id = entries.element_entry_id
6278 AND inputs3.input_value_id = value3.input_value_id
6279 AND inputs3.element_type_id = types.element_type_id
6280 AND inputs3.name = 'Disability Percentage'
6281 AND p_effective_date BETWEEN assgn.effective_start_date
6282 AND assgn.effective_end_date
6283 AND p_effective_date BETWEEN link.effective_start_date
6284 AND link.effective_end_date
6285 AND p_effective_date BETWEEN types.effective_start_date
6286 AND types.effective_end_date
6287 AND p_effective_date BETWEEN entries.effective_start_date
6288 AND entries.effective_end_date
6289 AND p_effective_date BETWEEN inputs1.effective_start_date
6290 AND inputs1.effective_end_date
6291 AND p_effective_date BETWEEN value1.effective_start_date
6292 AND value1.effective_end_date
6293 AND p_effective_date BETWEEN inputs2.effective_start_date
6294 AND inputs2.effective_end_date
6295 AND p_effective_date BETWEEN value2.effective_start_date
6296 AND value2.effective_end_date
6297 AND p_effective_date BETWEEN inputs3.effective_start_date
6298 AND inputs3.effective_end_date
6299 AND p_effective_date BETWEEN value3.effective_start_date
6300 AND value3.effective_end_date;
6301 --
6302 CURSOR csr_get_80g_values(p_element_link_id NUMBER)
6303 IS
6304 SELECT entries.element_entry_id entry_id
6305 , value1.screen_entry_value Donation_Type
6306 , value2.screen_entry_value Donation_Amount
6307 FROM per_assignments_f assgn
6308 , pay_element_links_f link
6309 , pay_element_types_f types
6310 , pay_element_entries_f entries
6311 , pay_element_entry_values_f value1
6312 , pay_input_values_f inputs1
6313 , pay_element_entry_values_f value2
6314 , pay_input_values_f inputs2
6315 WHERE assgn.assignment_id = p_assignment_id
6316 AND link.element_link_id = p_element_link_id
6317 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
6318 AND link.business_group_id = assgn.business_group_id
6319 AND link.element_type_id = types.element_type_id
6320 AND types.element_name = 'Deduction under Section 80G'
6321 AND entries.element_type_id = types.element_type_id
6322 AND entries.element_link_id = link.element_link_id
6323 AND entries.assignment_id = assgn.assignment_id
6324 AND value1.element_entry_id = entries.element_entry_id
6325 AND inputs1.input_value_id = value1.input_value_id
6326 AND inputs1.element_type_id = types.element_type_id
6327 AND inputs1.name = 'Donation Type'
6328 AND value2.element_entry_id = entries.element_entry_id
6329 AND inputs2.input_value_id = value2.input_value_id
6330 AND inputs2.element_type_id = types.element_type_id
6331 AND inputs2.name = 'Donation Amount'
6332 AND p_effective_date BETWEEN assgn.effective_start_date
6333 AND assgn.effective_end_date
6334 AND p_effective_date BETWEEN link.effective_start_date
6335 AND link.effective_end_date
6336 AND p_effective_date BETWEEN types.effective_start_date
6337 AND types.effective_end_date
6338 AND p_effective_date BETWEEN entries.effective_start_date
6339 AND entries.effective_end_date
6340 AND p_effective_date BETWEEN inputs1.effective_start_date
6341 AND inputs1.effective_end_date
6342 AND p_effective_date BETWEEN value1.effective_start_date
6343 AND value1.effective_end_date
6344 AND p_effective_date BETWEEN inputs2.effective_start_date
6345 AND inputs2.effective_end_date
6346 AND p_effective_date BETWEEN value2.effective_start_date
6347 AND value2.effective_end_date;
6348 --
6349 CURSOR csr_get_insurace_values(p_element_link_id NUMBER)
6350 IS
6351 SELECT entries.element_entry_id entry_id
6352 , value1.screen_entry_value Premium_Paid
6353 , value2.screen_entry_value Sum_Assured
6354 FROM per_assignments_f assgn
6355 , pay_element_links_f link
6356 , pay_element_types_f types
6357 , pay_element_entries_f entries
6358 , pay_element_entry_values_f value1
6359 , pay_input_values_f inputs1
6360 , pay_element_entry_values_f value2
6361 , pay_input_values_f inputs2
6362 WHERE assgn.assignment_id = p_assignment_id
6363 AND link.element_link_id = p_element_link_id
6364 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
6365 AND link.business_group_id = assgn.business_group_id
6366 AND link.element_type_id = types.element_type_id
6367 AND types.element_name = 'Life Insurance Premium'
6368 AND entries.element_type_id = types.element_type_id
6369 AND entries.element_link_id = link.element_link_id
6370 AND entries.assignment_id = assgn.assignment_id
6371 AND value1.element_entry_id = entries.element_entry_id
6372 AND inputs1.input_value_id = value1.input_value_id
6373 AND inputs1.element_type_id = types.element_type_id
6374 AND inputs1.name = 'Premium Paid'
6375 AND value2.element_entry_id = entries.element_entry_id
6376 AND inputs2.input_value_id = value2.input_value_id
6377 AND inputs2.element_type_id = types.element_type_id
6378 AND inputs2.name = 'Sum Assured'
6379 AND p_effective_date BETWEEN assgn.effective_start_date
6380 AND assgn.effective_end_date
6381 AND p_effective_date BETWEEN link.effective_start_date
6382 AND link.effective_end_date
6383 AND p_effective_date BETWEEN types.effective_start_date
6384 AND types.effective_end_date
6385 AND p_effective_date BETWEEN entries.effective_start_date
6386 AND entries.effective_end_date
6387 AND p_effective_date BETWEEN inputs1.effective_start_date
6388 AND inputs1.effective_end_date
6389 AND p_effective_date BETWEEN value1.effective_start_date
6390 AND value1.effective_end_date
6391 AND p_effective_date BETWEEN inputs2.effective_start_date
6392 AND inputs2.effective_end_date
6393 AND p_effective_date BETWEEN value2.effective_start_date
6394 AND value2.effective_end_date;
6395 --
6396 CURSOR csr_get_80cce_values(p_element_name VARCHAR2
6397 ,p_element_link_id NUMBER
6398 )
6399 IS
6400 SELECT entries.element_entry_id entry_id
6401 , value1.screen_entry_value Investment_Amount
6402 , value2.screen_entry_value Component_Name
6403 FROM per_assignments_f assgn
6404 , pay_element_links_f link
6405 , pay_element_types_f types
6406 , pay_element_entries_f entries
6407 , pay_element_entry_values_f value1
6408 , pay_input_values_f inputs1
6409 , pay_element_entry_values_f value2
6410 , pay_input_values_f inputs2
6411 WHERE assgn.assignment_id = p_assignment_id
6412 AND link.element_link_id = p_element_link_id
6413 AND (types.processing_type = 'R' OR assgn.payroll_id IS NOT NULL)
6414 AND link.business_group_id = assgn.business_group_id
6415 AND link.element_type_id = types.element_type_id
6416 AND types.element_name = p_element_name
6417 AND entries.element_type_id = types.element_type_id
6418 AND entries.element_link_id = link.element_link_id
6419 AND entries.assignment_id = assgn.assignment_id
6420 AND value1.element_entry_id = entries.element_entry_id
6421 AND inputs1.input_value_id = value1.input_value_id
6422 AND inputs1.element_type_id = types.element_type_id
6423 AND inputs1.name = 'Investment Amount'
6424 AND value2.element_entry_id = entries.element_entry_id
6425 AND inputs2.input_value_id = value2.input_value_id
6426 AND inputs2.element_type_id = types.element_type_id
6427 AND inputs2.name = 'Component Name'
6428 AND p_effective_date BETWEEN assgn.effective_start_date
6429 AND assgn.effective_end_date
6430 AND p_effective_date BETWEEN link.effective_start_date
6431 AND link.effective_end_date
6432 AND p_effective_date BETWEEN types.effective_start_date
6433 AND types.effective_end_date
6434 AND p_effective_date BETWEEN entries.effective_start_date
6435 AND entries.effective_end_date
6436 AND p_effective_date BETWEEN inputs1.effective_start_date
6437 AND inputs1.effective_end_date
6438 AND p_effective_date BETWEEN value1.effective_start_date
6439 AND value1.effective_end_date
6440 AND p_effective_date BETWEEN inputs2.effective_start_date
6441 AND inputs2.effective_end_date
6442 AND p_effective_date BETWEEN value2.effective_start_date
6443 AND value2.effective_end_date;
6444 --
6445 --Added as a part of bug fix 4774108
6446 CURSOR csr_element_type_id(p_element_name VARCHAR2)
6447 IS
6448 SELECT element_type_id
6449 FROM pay_element_types_f
6450 WHERE legislation_code = 'IN'
6451 AND element_name = p_element_name
6452 AND p_effective_date BETWEEN effective_start_date AND effective_end_date;
6453
6454 l_element_type_id NUMBER; --Added as a part of bug fix 4774108
6455 l_element_link_id NUMBER; --Added as a part of bug fix 4774108
6456 l_element_name pay_element_types_f.element_name%TYPE;--Added as a part of bug fix 4774108
6457 l_procedure VARCHAR(100);
6458 l_message VARCHAR2(250);
6459 BEGIN
6460 --
6461 l_procedure := g_package || 'get_value';
6462 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
6463
6464
6465 IF g_debug THEN
6466 pay_in_utils.trace('**************************************************','********************');
6467 pay_in_utils.trace('p_assignment_id',p_assignment_id);
6468 pay_in_utils.trace('p_index',p_index);
6469 pay_in_utils.trace('p_element_name',p_element_name);
6470 pay_in_utils.trace('p_input_name',p_input_name);
6471 pay_in_utils.trace('p_effective_date',p_effective_date);
6472 pay_in_utils.trace('**************************************************','********************');
6473 END IF;
6474
6475
6476 IF g_index_assignment_id <> p_assignment_id THEN
6477 --
6478 pay_in_utils.set_location(g_debug, l_procedure, 20);
6479 g_index_values_valid := false;
6480 --
6481 END IF;
6482 --
6483 IF NOT g_index_values_valid THEN
6484 --
6485 -- Put the details in the appropriate table available
6486 -- for each of the elements.
6487 --
6488 g_80dd_values.DELETE;
6489 g_80g_values.DELETE;
6490 g_insurace_values.DELETE;
6491 g_80cce_values.DELETE;
6492 g_80dd_index := 0;
6493 g_80g_index := 0;
6494 g_insurace_index := 0;
6495 g_80cce_index := 0;
6496 pay_in_utils.set_location(g_debug, l_procedure, 30);
6497 --
6498 --Added as a part of bug fix 4774108
6499 OPEN csr_element_type_id('Deduction under Section 80DD');
6500 FETCH csr_element_type_id INTO l_element_type_id;
6501 CLOSE csr_element_type_id;
6502
6503 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6504 ,p_effective_date
6505 ,l_element_type_id
6506 );
6507
6508 FOR rec IN csr_get_80dd_values(l_element_link_id) LOOP
6509 --
6510 pay_in_utils.set_location(g_debug, l_procedure, 40);
6511 g_80dd_values(g_80dd_index).entry_id := rec.entry_id;
6512 g_80dd_values(g_80dd_index).input1_value := rec.disability_type;
6513 g_80dd_values(g_80dd_index).input2_value := rec.treatment_amount;
6514 g_80dd_values(g_80dd_index).input3_value := rec.disability_percentage;
6515 g_80dd_index := g_80dd_index + 1;
6516 --
6517 END LOOP;
6518 --
6519 --Added as a part of bug fix 4774108
6520 OPEN csr_element_type_id('Deduction under Section 80G');
6521 FETCH csr_element_type_id INTO l_element_type_id;
6522 CLOSE csr_element_type_id;
6523
6524 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6525 ,p_effective_date
6526 ,l_element_type_id
6527 );
6528
6529 FOR rec IN csr_get_80g_values(l_element_link_id)LOOP
6530 --
6531 pay_in_utils.set_location(g_debug, l_procedure, 50);
6532 g_80g_values(g_80g_index).entry_id := rec.entry_id;
6533 g_80g_values(g_80g_index).input1_value := rec.donation_type;
6534 g_80g_values(g_80g_index).input2_value := rec.donation_amount;
6535 g_80g_index := g_80g_index + 1;
6536 --
6537 END LOOP;
6538 --Added as a part of bug fix 4774108
6539 OPEN csr_element_type_id('Life Insurance Premium');
6540 FETCH csr_element_type_id INTO l_element_type_id;
6541 CLOSE csr_element_type_id;
6542
6543 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6544 ,p_effective_date
6545 ,l_element_type_id
6546 );
6547
6548 FOR rec IN csr_get_insurace_values(l_element_link_id) LOOP
6549 --
6550 pay_in_utils.set_location(g_debug, l_procedure, 60);
6551 g_insurace_values(g_insurace_index).entry_id := rec.entry_id;
6552 g_insurace_values(g_insurace_index).input1_value := rec.premium_paid;
6553 g_insurace_values(g_insurace_index).input2_value := rec.sum_assured;
6554 g_insurace_index := g_insurace_index + 1;
6555 --
6556 END LOOP;
6557 --
6558 FOR i IN 1..4
6559 LOOP
6560 IF (i = 1) THEN
6561 l_element_name := 'Deduction under Section 80CCE';
6562 ELSIF (i = 2) THEN
6563 l_element_name := 'Pension Fund 80CCC';
6564 ELSIF (i = 3) THEN
6565 l_element_name := 'Deferred Annuity';
6566 ELSE
6567 l_element_name := 'Senior Citizens Savings Scheme';
6568 END IF;
6569
6570 --Added as a part of bug fix 4774108
6571 OPEN csr_element_type_id(l_element_name);
6572 FETCH csr_element_type_id INTO l_element_type_id;
6573 CLOSE csr_element_type_id;
6574
6575 l_element_link_id := pay_in_utils.get_element_link_id(p_assignment_id
6576 ,p_effective_date
6577 ,l_element_type_id
6578 );
6579
6580 FOR rec IN csr_get_80cce_values(l_element_name,l_element_link_id) LOOP
6581 --
6582 pay_in_utils.set_location(g_debug, l_procedure, 70);
6583 g_80cce_values(g_80cce_index).entry_id := rec.entry_id;
6584 g_80cce_values(g_80cce_index).input1_value := rec.Investment_Amount;
6585 g_80cce_values(g_80cce_index).input2_value := rec.Component_Name;
6586 g_80cce_index := g_80cce_index + 1;
6587 --
6588 END LOOP;
6589 END LOOP;
6590 --
6591 pay_in_utils.set_location(g_debug, l_procedure, 70);
6592 g_index_values_valid := true;
6593 g_index_assignment_id := p_assignment_id;
6594 --
6595 END IF;
6596 --
6597 IF p_element_name = 'Deduction under Section 80DD' THEN
6598 --
6599 pay_in_utils.set_location(g_debug, l_procedure, 80);
6600 IF p_index <= g_80dd_index AND g_80dd_values.exists(p_index-1) THEN
6601 --
6602 pay_in_utils.set_location(g_debug, l_procedure, 90);
6603 IF p_input_name = 'Disability Type' THEN
6604 pay_in_utils.set_location(g_debug, l_procedure, 100);
6605 IF g_debug THEN
6606 pay_in_utils.trace('**************************************************','********************');
6607 pay_in_utils.trace('Disablity Type',g_80dd_values(p_index-1).input1_value);
6608 pay_in_utils.trace('**************************************************','********************');
6609 END IF;
6610 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,110);
6611 RETURN g_80dd_values(p_index-1).input1_value;
6612
6613 ELSIF p_input_name = 'Treatment Amount' THEN
6614 IF g_debug THEN
6615 pay_in_utils.trace('**************************************************','********************');
6616 pay_in_utils.trace('Treatment Amount',g_80dd_values(p_index-1).input2_value);
6617 pay_in_utils.trace('**************************************************','********************');
6618 END IF;
6619 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,120);
6620 RETURN g_80dd_values(p_index-1).input2_value;
6621
6622 ELSIF p_input_name = 'Disability Percentage' THEN
6623 IF g_debug THEN
6624 pay_in_utils.trace('**************************************************','********************');
6625 pay_in_utils.trace('Disability Percentage',g_80dd_values(p_index-1).input3_value);
6626 pay_in_utils.trace('**************************************************','********************');
6627 END IF;
6628 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,130);
6629 pay_in_utils.set_location(g_debug, l_procedure, 120);
6630 RETURN g_80dd_values(p_index-1).input3_value;
6631
6632 ELSIF p_input_name = 'Element Entry Id' THEN
6633 IF g_debug THEN
6634 pay_in_utils.trace('**************************************************','********************');
6635 pay_in_utils.trace('Element ',g_80dd_values(p_index-1).entry_id);
6636 pay_in_utils.trace('**************************************************','********************');
6637 END IF;
6638 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,130);
6639 return g_80dd_values(p_index-1).entry_id;
6640 ELSE
6641 return NULL;
6642 END IF;
6643 ELSE
6644 pay_in_utils.set_location(g_debug, l_procedure, 130);
6645 return NULL;
6646 END IF;
6647
6648 ELSIF p_element_name = 'Deduction under Section 80G' THEN
6649 --
6650 pay_in_utils.set_location(g_debug, l_procedure, 140);
6651 IF p_index <= g_80g_index AND g_80g_values.exists(p_index-1) THEN
6652 --
6653 IF p_input_name = 'Donation Type' THEN
6654 IF g_debug THEN
6655 pay_in_utils.trace('**************************************************','********************');
6656 pay_in_utils.trace('Donation Type',g_80g_values(p_index-1).input1_value);
6657 pay_in_utils.trace('**************************************************','********************');
6658 END IF;
6659 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,140);
6660 return g_80g_values(p_index-1).input1_value;
6661
6662 ELSIF p_input_name = 'Donation Amount' THEN
6663 IF g_debug THEN
6664 pay_in_utils.trace('**************************************************','********************');
6665 pay_in_utils.trace('Donation Amount',g_80g_values(p_index-1).input2_value);
6666 pay_in_utils.trace('**************************************************','********************');
6667 END IF;
6668 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,150);
6669 return g_80g_values(p_index-1).input2_value;
6670
6671 ELSIF p_input_name = 'Element Entry Id' THEN
6672 IF g_debug THEN
6673 pay_in_utils.trace('**************************************************','********************');
6674 pay_in_utils.trace('Element Entry',g_80g_values(p_index-1).entry_id);
6675 pay_in_utils.trace('**************************************************','********************');
6676 END IF;
6677 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,160);
6678 return g_80g_values(p_index-1).entry_id;
6679 END IF;
6680
6681 ELSE
6682 pay_in_utils.set_location(g_debug, l_procedure, 180);
6683 return NULL;
6684 END IF;
6685 ELSIF p_element_name = 'Life Insurance Premium' THEN
6686 --
6687 pay_in_utils.set_location(g_debug, l_procedure, 190);
6688 IF p_index <= g_insurace_index AND g_insurace_values.exists(p_index-1) THEN
6689 --
6690 IF p_input_name = 'Premium Paid' THEN
6691 IF g_debug THEN
6692 pay_in_utils.trace('**************************************************','********************');
6693 pay_in_utils.trace('Premium Amount',g_insurace_values(p_index-1).input1_value);
6694 pay_in_utils.trace('**************************************************','********************');
6695 END IF;
6696 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,170);
6697 return g_insurace_values(p_index-1).input1_value;
6698
6699 ELSIF p_input_name = 'Sum Assured' THEN
6700 IF g_debug THEN
6701 pay_in_utils.trace('**************************************************','********************');
6702 pay_in_utils.trace('Sum Assured',g_insurace_values(p_index-1).input2_value);
6703 pay_in_utils.trace('**************************************************','********************');
6704 END IF;
6705 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,180);
6706 return g_insurace_values(p_index-1).input2_value;
6707
6708 ELSIF p_input_name = 'Element Entry Id' THEN
6709 IF g_debug THEN
6710 pay_in_utils.trace('**************************************************','********************');
6711 pay_in_utils.trace('Element ',g_insurace_values(p_index-1).entry_id);
6712 pay_in_utils.trace('**************************************************','********************');
6713 END IF;
6714 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,190);
6715 return g_insurace_values(p_index-1).entry_id;
6716 END IF;
6717
6718 ELSE
6719 pay_in_utils.set_location(g_debug, l_procedure, 230);
6720 return NULL;
6721 END IF;
6722 ELSIF p_element_name = 'Deduction under Section 80CCE' THEN
6723 --
6724 pay_in_utils.set_location(g_debug, l_procedure, 240);
6725 IF p_index <= g_80cce_index AND g_80cce_values.exists(p_index-1) THEN
6726 --
6727 IF p_input_name = 'Investment Amount' THEN
6728 IF g_debug THEN
6729 pay_in_utils.trace('**************************************************','********************');
6730 pay_in_utils.trace('Investment Amount',g_80cce_values(p_index-1).input1_value);
6731 pay_in_utils.trace('**************************************************','********************');
6732 END IF;
6733 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,200);
6734 return g_80cce_values(p_index-1).input1_value;
6735
6736 ELSIF p_input_name = 'Component Name' THEN
6737 IF g_debug THEN
6738 pay_in_utils.trace('**************************************************','********************');
6739 pay_in_utils.trace('Component Name',g_80cce_values(p_index-1).input2_value);
6740 pay_in_utils.trace('**************************************************','********************');
6741 END IF;
6742 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,210);
6743 return g_80cce_values(p_index-1).input2_value;
6744
6745 ELSIF p_input_name = 'Element Entry Id' THEN
6746 IF g_debug THEN
6747 pay_in_utils.trace('**************************************************','********************');
6748 pay_in_utils.trace('Element',g_80cce_values(p_index-1).entry_id);
6749 pay_in_utils.trace('**************************************************','********************');
6750 END IF;
6751 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,220);
6752 pay_in_utils.set_location(g_debug, l_procedure, 270);
6753 return g_80cce_values(p_index-1).entry_id;
6754 END IF;
6755 ELSE
6756 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,230);
6757 return NULL;
6758 END IF;
6759 ELSE
6760 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,240);
6761 return null;
6762 END IF;
6763 --
6764 -- As per logic should not come here at all.
6765 return null;
6766 pay_in_utils.set_location(g_debug,'Leaving: '||l_procedure,250);
6767
6768 END get_value;
6769 -- End changes to Enhancement 3886086(Web ADI)
6770
6771
6772
6773 BEGIN
6774 --
6775 -- Global variable Initialization
6776 --
6777 g_legislation_code := 'IN';
6778 g_approval_info_type := 'PER_IN_TAX_DECL_DETAILS';
6779 g_is_valid := false;
6780
6781 -- Following lines added for Web ADI Support
6782 g_index_values_valid := false;
6783 g_index_assignment_id := 0;
6784 g_80dd_index := 0;
6785 g_80g_index := 0;
6786 g_insurace_index := 0;
6787 g_80cce_index := 0;
6788
6789 --
6790 END pay_in_tax_declaration;