176: l_proc varchar2(80) := g_package || '.set_elig_change_dt';
177: --
178: begin
179: --
180: hr_utility.set_location ('Entering '||l_proc,10);
181: hr_utility.set_location ('p_elig_change_dt '||p_elig_change_dt,10);
182: hr_utility.set_location ('g_elig_change_dt '||g_elig_change_dt,10);
183: hr_utility.set_location ('g_effective_date '||g_effective_date,10);
184: hr_utility.set_location ('** SUP p_effective_date '||p_effective_date,10);
177: --
178: begin
179: --
180: hr_utility.set_location ('Entering '||l_proc,10);
181: hr_utility.set_location ('p_elig_change_dt '||p_elig_change_dt,10);
182: hr_utility.set_location ('g_elig_change_dt '||g_elig_change_dt,10);
183: hr_utility.set_location ('g_effective_date '||g_effective_date,10);
184: hr_utility.set_location ('** SUP p_effective_date '||p_effective_date,10);
185: hr_utility.set_location ('g_dpnt_cvg_strt_dt '||g_dpnt_cvg_strt_dt,10);
178: begin
179: --
180: hr_utility.set_location ('Entering '||l_proc,10);
181: hr_utility.set_location ('p_elig_change_dt '||p_elig_change_dt,10);
182: hr_utility.set_location ('g_elig_change_dt '||g_elig_change_dt,10);
183: hr_utility.set_location ('g_effective_date '||g_effective_date,10);
184: hr_utility.set_location ('** SUP p_effective_date '||p_effective_date,10);
185: hr_utility.set_location ('g_dpnt_cvg_strt_dt '||g_dpnt_cvg_strt_dt,10);
186: --
179: --
180: hr_utility.set_location ('Entering '||l_proc,10);
181: hr_utility.set_location ('p_elig_change_dt '||p_elig_change_dt,10);
182: hr_utility.set_location ('g_elig_change_dt '||g_elig_change_dt,10);
183: hr_utility.set_location ('g_effective_date '||g_effective_date,10);
184: hr_utility.set_location ('** SUP p_effective_date '||p_effective_date,10);
185: hr_utility.set_location ('g_dpnt_cvg_strt_dt '||g_dpnt_cvg_strt_dt,10);
186: --
187: -- If dpnt. coverage start date is specified then, the elig change date
180: hr_utility.set_location ('Entering '||l_proc,10);
181: hr_utility.set_location ('p_elig_change_dt '||p_elig_change_dt,10);
182: hr_utility.set_location ('g_elig_change_dt '||g_elig_change_dt,10);
183: hr_utility.set_location ('g_effective_date '||g_effective_date,10);
184: hr_utility.set_location ('** SUP p_effective_date '||p_effective_date,10);
185: hr_utility.set_location ('g_dpnt_cvg_strt_dt '||g_dpnt_cvg_strt_dt,10);
186: --
187: -- If dpnt. coverage start date is specified then, the elig change date
188: -- cannot be before that.
181: hr_utility.set_location ('p_elig_change_dt '||p_elig_change_dt,10);
182: hr_utility.set_location ('g_elig_change_dt '||g_elig_change_dt,10);
183: hr_utility.set_location ('g_effective_date '||g_effective_date,10);
184: hr_utility.set_location ('** SUP p_effective_date '||p_effective_date,10);
185: hr_utility.set_location ('g_dpnt_cvg_strt_dt '||g_dpnt_cvg_strt_dt,10);
186: --
187: -- If dpnt. coverage start date is specified then, the elig change date
188: -- cannot be before that.
189: -- Additionally
214: end if;
215: --
216: -- End 6520270
217: --
218: hr_utility.set_location (' Setting g_elig_change_dt '||g_elig_change_dt,10);
219: end if;
220: --
221: hr_utility.set_location ('Leaving '||l_proc,10);
222: --
217: --
218: hr_utility.set_location (' Setting g_elig_change_dt '||g_elig_change_dt,10);
219: end if;
220: --
221: hr_utility.set_location ('Leaving '||l_proc,10);
222: --
223: end set_elig_change_dt;
224: --
225: --
630:
631:
632: begin
633: --
634: hr_utility.set_location ('Entering '||l_proc,10);
635: --
636: -- Initialize the globals.
637: --
638: g_elig_change_dt := null;
646: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
647: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
648:
649: --
650: hr_utility.set_location ('Fonm Date '||g_effective_date ,10);
651: end if;
652:
653: --
654: hr_utility.set_location ('p_contact_person_id '||to_char(p_contact_person_id),10);
650: hr_utility.set_location ('Fonm Date '||g_effective_date ,10);
651: end if;
652:
653: --
654: hr_utility.set_location ('p_contact_person_id '||to_char(p_contact_person_id),10);
655: hr_utility.set_location ('p_contact_relationship_id '||
656: to_char(p_contact_relationship_id),10);
657: hr_utility.set_location ('p_pgm_id:'||to_char(p_pgm_id)||
658: ' p_pl_id:'||to_char(p_pl_id)||' p_ptip_id:'||to_char(p_ptip_id)||
651: end if;
652:
653: --
654: hr_utility.set_location ('p_contact_person_id '||to_char(p_contact_person_id),10);
655: hr_utility.set_location ('p_contact_relationship_id '||
656: to_char(p_contact_relationship_id),10);
657: hr_utility.set_location ('p_pgm_id:'||to_char(p_pgm_id)||
658: ' p_pl_id:'||to_char(p_pl_id)||' p_ptip_id:'||to_char(p_ptip_id)||
659: ' p_oipl_id:'||to_char(p_oipl_id),10);
653: --
654: hr_utility.set_location ('p_contact_person_id '||to_char(p_contact_person_id),10);
655: hr_utility.set_location ('p_contact_relationship_id '||
656: to_char(p_contact_relationship_id),10);
657: hr_utility.set_location ('p_pgm_id:'||to_char(p_pgm_id)||
658: ' p_pl_id:'||to_char(p_pl_id)||' p_ptip_id:'||to_char(p_ptip_id)||
659: ' p_oipl_id:'||to_char(p_oipl_id),10);
660:
661: --
663: -- Not related to the particular person then use effective_date
664: --
665: -- g_elig_change_dt := nvl(p_lf_evt_ocrd_dt,p_effective_date)-1;
666: --
667: hr_utility.set_location ('Determining designation level ',20);
668:
669: if p_level is null then
670: if p_pgm_id is not null then
671: open c_pgm
673: );
674: fetch c_pgm into l_pgm;
675: if c_pgm%notfound then
676: close c_pgm;
677: hr_utility.set_location ('BEN_91470_PGM_NOT_FOUND ',10);
678: fnd_message.set_name('BEN','BEN_91470_PGM_NOT_FOUND');
679: fnd_message.set_token('PROC',l_proc);
680: fnd_message.set_token('PGM_ID',to_char(p_pgm_id));
681: fnd_message.raise_error;
688: else
689: l_level := p_level;
690: end if;
691: --
692: hr_utility.set_location ('l_level: '||l_level,20);
693:
694: -- In order to find ptip eligibility profiles, this was added:
695: -- Bug 1167262
696: l_ptip.ptip_id := p_ptip_id;
716: fetch c_contact into l_contact;
717: if c_contact%notfound then
718: --
719: close c_contact;
720: hr_utility.set_location ('BEN_91480_MISSING_CONTACT_REL ',10);
721: fnd_message.set_name('BEN','BEN_91480_MISSING_CONTACT_REL');
722: fnd_message.set_token('PROC',l_proc);
723: fnd_message.set_token('CONT_RLSHP_ID',to_char(p_contact_relationship_id));
724: fnd_message.set_token('LF_EVT_OCRD_DT',to_char(p_lf_evt_ocrd_dt));
751: --
752: -- If there are no designation requirements for the comp object
753: -- then any number or type of dependents can be designated.
754: --
755: hr_utility.set_location ('c_dsgn'||l_eligible_flag,20);
756: --
757: open c_dsgn
758: (c_effective_date => l_effective_date
759: );
768: else
769: --
770: -- if there is a designation requirement for the contact_type.
771: --
772: hr_utility.set_location ('c_dsgn_rl_typ'||l_eligible_flag,20);
773: --
774: open c_dsgn_rl_typ
775: (c_effective_date => l_effective_date,
776: p_contact_type => l_contact.contact_type
793: --
794: fetch c_dsgn_grp into l_exists;
795: if c_dsgn_grp%found then
796: --
797: hr_utility.set_location ('c_dsgn_grp'||l_eligible_flag,20);
798: l_eligible_flag := 'Y';
799: l_inelig_rsn_cd := null;
800: --
801: open c_dsgn_not_rl_typ
804: --
805: fetch c_dsgn_not_rl_typ into l_exists;
806: if c_dsgn_not_rl_typ%found then
807: --
808: hr_utility.set_location ('c_dsgn_not_rl_typ'||
809: l_eligible_flag,20);
810: l_eligible_flag := 'N';
811: l_inelig_rsn_cd := 'REL';
812: --
851: --
852: close c_contact2;
853: --
854: end if;
855: hr_utility.set_location ('eligible flag'||l_eligible_flag,30);
856: --
857: -- Loop through all profiles
858: --
859: if l_eligible_flag = 'Y' then
856: --
857: -- Loop through all profiles
858: --
859: if l_eligible_flag = 'Y' then
860: hr_utility.set_location (l_proc||' l_eligible_flag=Y ',10);
861: --
862: -- Eventally call the cache
863: --
864: open c_per
869: --
870: if c_per%notfound then
871: --
872: close c_per;
873: hr_utility.set_location ('BEN_91481_INVALID_PERSON ',10);
874: fnd_message.set_name('BEN','BEN_91481_INVALID_PERSON');
875: fnd_message.set_token('PROC',l_proc);
876: fnd_message.set_token('CONT_PER_ID',to_char(p_contact_person_id));
877: fnd_message.raise_error;
891: if c_add%notfound and
892: l_contact.rltd_per_rsds_w_dsgntr_flag='N' then
893: --
894: close c_add;
895: hr_utility.set_location ('BEN_91482_INVALID_ADDRESS ',10);
896: fnd_message.set_name('BEN','BEN_91482_INVALID_ADDRESS');
897: fnd_message.set_token('PROC',l_proc);
898: fnd_message.set_token('CONT_PER_ID',to_char(p_contact_person_id));
899: raise ben_manage_life_events.g_record_error;
906: );
907: --
908: fetch c_add2 into l_add;
909: if c_add2%notfound then
910: hr_utility.set_location ('BEN_91482_INVALID_ADDRESS - c_add2 ',10);
911: fnd_message.set_name('BEN','BEN_91482_INVALID_ADDRESS');
912: fnd_message.set_token('PROC',l_proc);
913: fnd_message.set_token('CONT_PER_ID',to_char(l_contact.person_id));
914: raise ben_manage_life_events.g_record_error;
928: -- overridden for postal elig for that case
929: --
930: -- g_elig_change_dt:=l_per.effective_start_date-1;
931: --
932: hr_utility.set_location (' g_elig_change_dt '||to_char(g_elig_change_dt),40);
933: open c_ade
934: (c_lvl => l_level
935: ,c_effective_date => l_effective_date
936: ,c_pgm_id => p_pgm_id
965: p_lf_evt_ocrd_dt => p_lf_evt_ocrd_dt,
966: p_eligible_flag => l_eligible_flag,
967: p_inelig_rsn_cd => l_inelig_rsn_cd);
968: --
969: hr_utility.set_location ('eligible flag'||l_eligible_flag,40);
970: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
971: --
972: end if;
973: --
993: set_elig_change_dt(p_elig_change_dt=>l_per.effective_start_date-1);
994: end if;
995: */
996: --
997: hr_utility.set_location ('eligible flag'||l_eligible_flag,80);
998: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
999: --
1000: end if;
1001: --
1087: --
1088: else
1089: --
1090: l_inelig_rsn_cd := 'AGE';
1091: --hr_utility.set_location('** SUP l_effective_date-1'||l_effective_date,900);
1092: set_elig_change_dt(p_elig_change_dt=>l_effective_date-1,p_effective_date => l_effective_date); -- bug 4546890
1093: --
1094: end if;
1095: --
1122: --
1123: else
1124: --
1125: l_inelig_rsn_cd := 'AGE';
1126: --hr_utility.set_location('** SUP l_effective_date'||l_effective_date,901);
1127: set_elig_change_dt(p_elig_change_dt=>l_effective_date-1,p_effective_date => l_effective_date); -- bug 4546890
1128: --
1129: end if;
1130: --
1135: exit when (l_ade.mndtry_flag = 'Y' and (l_eligible_flag <> 'Y' or l_apld_eligible_flag <> 'Y'));
1136: --
1137: end if;
1138: --
1139: hr_utility.set_location ('apld dep eligible flag'||l_apld_eligible_flag,50);
1140: --
1141: -- End 4271143
1142: --
1143: hr_utility.set_location ('eligible flag'||l_eligible_flag,50);
1139: hr_utility.set_location ('apld dep eligible flag'||l_apld_eligible_flag,50);
1140: --
1141: -- End 4271143
1142: --
1143: hr_utility.set_location ('eligible flag'||l_eligible_flag,50);
1144: --
1145: if l_ade.dpnt_mrtl_flag = 'Y' and
1146: l_eligible_flag = 'Y' then
1147: --
1169: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1170: --
1171: end if;
1172: --
1173: hr_utility.set_location ('eligible flag'||l_eligible_flag,50);
1174: --
1175: if l_ade.dpnt_mltry_flag = 'Y' and
1176: l_eligible_flag = 'Y' then
1177: --
1199: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1200: --
1201: end if;
1202: --
1203: hr_utility.set_location ('eligible flag'||l_eligible_flag,60);
1204: --
1205: if l_ade.dpnt_stud_flag = 'Y' and
1206: l_eligible_flag = 'Y' then
1207: --
1225: end if;
1226: close c_previous_per;
1227: end if;
1228: --
1229: hr_utility.set_location ('eligible flag'||l_eligible_flag,70);
1230: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1231: --
1232: end if;
1233: --
1250: if l_eligible_flag <> 'Y' then
1251: set_elig_change_dt(p_elig_change_dt=>l_per.effective_start_date-1);
1252: end if;
1253: --
1254: hr_utility.set_location ('eligible flag'||l_eligible_flag,80);
1255: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1256: --
1257: end if;
1258: */
1280: end if;
1281: close c_previous_per;
1282: end if;
1283: --
1284: hr_utility.set_location ('eligible flag'||l_eligible_flag,90);
1285: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1286: --
1287: end if;
1288: --
1289: if l_ade.dpnt_pstl_flag = 'Y' and
1290: l_eligible_flag = 'Y' then
1291: --- Beofre calling postal eligibility check whehter the address/share address is defined
1292: --
1293: hr_utility.set_location('postal flag ', 219);
1294: open c_add
1295: (c_effective_date => l_effective_date
1296: );
1297: --
1298: fetch c_add into l_add;
1299: if c_add%notfound and l_contact.rltd_per_rsds_w_dsgntr_flag='N' then
1300: --
1301: --close c_add;
1302: hr_utility.set_location ('BEN_91482_INVALID_ADDRESS ',10);
1303: hr_utility.set_location ('contact '|| l_contact.rltd_per_rsds_w_dsgntr_flag ,10);
1304: --fnd_message.set_name('BEN','BEN_91482_INVALID_ADDRESS');
1305: --fnd_message.set_token('PROC',l_proc);
1306: --fnd_message.set_token('CONT_PER_ID',to_char(p_contact_person_id));
1299: if c_add%notfound and l_contact.rltd_per_rsds_w_dsgntr_flag='N' then
1300: --
1301: --close c_add;
1302: hr_utility.set_location ('BEN_91482_INVALID_ADDRESS ',10);
1303: hr_utility.set_location ('contact '|| l_contact.rltd_per_rsds_w_dsgntr_flag ,10);
1304: --fnd_message.set_name('BEN','BEN_91482_INVALID_ADDRESS');
1305: --fnd_message.set_token('PROC',l_proc);
1306: --fnd_message.set_token('CONT_PER_ID',to_char(p_contact_person_id));
1307: --raise ben_manage_life_events.g_record_error;
1314: --
1315: fetch c_add2 into l_add;
1316: if c_add2%notfound then
1317:
1318: hr_utility.set_location ('contact '|| l_contact.rltd_per_rsds_w_dsgntr_flag ,10);
1319: hr_utility.set_location ('BEN_91482_INVALID_ADDRESS - c_add2 ',10);
1320: --fnd_message.set_name('BEN','BEN_91482_INVALID_ADDRESS');
1321: --fnd_message.set_token('PROC',l_proc);
1322: --fnd_message.set_token('CONT_PER_ID',to_char(l_contact.person_id));
1315: fetch c_add2 into l_add;
1316: if c_add2%notfound then
1317:
1318: hr_utility.set_location ('contact '|| l_contact.rltd_per_rsds_w_dsgntr_flag ,10);
1319: hr_utility.set_location ('BEN_91482_INVALID_ADDRESS - c_add2 ',10);
1320: --fnd_message.set_name('BEN','BEN_91482_INVALID_ADDRESS');
1321: --fnd_message.set_token('PROC',l_proc);
1322: --fnd_message.set_token('CONT_PER_ID',to_char(l_contact.person_id));
1323: --raise ben_manage_life_events.g_record_error;
1329: end if;
1330: --
1331: close c_add;
1332: --
1333: hr_utility.set_location ('calling check_postal ' ,10);
1334: check_postal_elig
1335: (p_eligy_prfl_id => l_ade.dpnt_cvg_eligy_prfl_id,
1336: p_person_id => p_contact_person_id,
1337: p_business_group_id => p_business_group_id,
1349: -- g_elig_change_dt:=l_add.date_from-1;
1350: --
1351: end if;
1352: --
1353: hr_utility.set_location ('eligible flag'||l_eligible_flag,100);
1354: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1355: --
1356: end if;
1357: --
1371: if l_eligible_flag <> 'Y' then
1372: set_elig_change_dt(p_elig_change_dt=>l_per.effective_start_date-1,p_effective_date => l_effective_date);-- bug 4546890
1373: end if;
1374: --
1375: hr_utility.set_location ('eligible flag'||l_eligible_flag,110);
1376: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1377: --
1378: end if;
1379: --
1393: p_lf_evt_ocrd_dt => p_lf_evt_ocrd_dt,
1394: p_eligible_flag => l_eligible_flag,
1395: p_inelig_rsn_cd => l_inelig_rsn_cd);
1396: --
1397: hr_utility.set_location ('eligible flag'||l_eligible_flag,40);
1398: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1399: --
1400: end if;
1401: --
1416: if l_eligible_flag <> 'Y' then
1417: set_elig_change_dt(p_elig_change_dt=>l_per.effective_start_date-1,p_effective_date => l_effective_date); -- bug 4546890
1418: end if;
1419: --
1420: hr_utility.set_location ('eligible flag'||l_eligible_flag,110);
1421: exit when (l_ade.mndtry_flag = 'Y' and l_eligible_flag <> 'Y');
1422: --
1423: end if;
1424: --
1430: --
1431: -- Bug 4271143 : Fetch from c_ade1 for records where no eligibility profile
1432: -- is attached, only dependent coverage eligibility rule is there
1433: --
1434: hr_utility.set_location('eligible flag'||l_eligible_flag,115);
1435: hr_utility.set_location ('apld dep eligible flag'||l_apld_eligible_flag,115);
1436: -- fetch only if till now all the profiles with mandatory flag on have been satisfied
1437: if (not(l_ade.mndtry_flag = 'Y' and (l_eligible_flag <> 'Y' or l_apld_eligible_flag <> 'Y'))) then
1438: open c_ade1
1431: -- Bug 4271143 : Fetch from c_ade1 for records where no eligibility profile
1432: -- is attached, only dependent coverage eligibility rule is there
1433: --
1434: hr_utility.set_location('eligible flag'||l_eligible_flag,115);
1435: hr_utility.set_location ('apld dep eligible flag'||l_apld_eligible_flag,115);
1436: -- fetch only if till now all the profiles with mandatory flag on have been satisfied
1437: if (not(l_ade.mndtry_flag = 'Y' and (l_eligible_flag <> 'Y' or l_apld_eligible_flag <> 'Y'))) then
1438: open c_ade1
1439: (c_lvl => l_level
1522: --
1523: else
1524: --
1525: l_inelig_rsn_cd := 'AGE';
1526: --hr_utility.set_location('** SUP l_effective_date-1'||l_effective_date,902);
1527: set_elig_change_dt(p_elig_change_dt=>l_effective_date-1,p_effective_date => l_effective_date); -- bug 4546890
1528: --
1529: end if;
1530: --
1533: end if;
1534: --
1535: exit when (l_ade1.mndtry_flag = 'Y' and l_apld_eligible_flag <> 'Y');
1536: --
1537: hr_utility.set_location ('apld dep eligible flag'||l_apld_eligible_flag,115);
1538: end loop;
1539: close c_ade1;
1540: --
1541: end if;
1553: (p_elig_change_dt => l_effective_date-1,p_effective_date => l_effective_date); -- bug 4546890
1554: --
1555: end if;
1556: --
1557: hr_utility.set_location ('eligible flag'||l_eligible_flag,120);
1558: hr_utility.set_location ('apld eligible flag'||l_apld_eligible_flag,120);
1559: --
1560: if (l_apld_eligible_flag = 'N') then -- Bug 4271143
1561: l_eligible_flag := 'N';
1554: --
1555: end if;
1556: --
1557: hr_utility.set_location ('eligible flag'||l_eligible_flag,120);
1558: hr_utility.set_location ('apld eligible flag'||l_apld_eligible_flag,120);
1559: --
1560: if (l_apld_eligible_flag = 'N') then -- Bug 4271143
1561: l_eligible_flag := 'N';
1562: end if;
1563: --
1564: p_dependent_eligible_flag := l_eligible_flag;
1565: p_dpnt_inelig_rsn_cd := l_inelig_rsn_cd;
1566: --
1567: hr_utility.set_location ('Leaving'||l_proc,130);
1568: --
1569: end main;
1570: --
1571: procedure check_age_elig
1634: and eac.effective_end_date;
1635: --
1636: begin
1637: --
1638: hr_utility.set_location('Entering :'||l_proc, 10);
1639: hr_utility.set_location('PERSON ID :'||p_person_id, 10);
1640: hr_utility.set_location('BUSINESS_GROUP_ID :'||p_business_group_id, 10);
1641: hr_utility.set_location('EFFECTIVE_DATE :'||p_effective_date, 10);
1642: hr_utility.set_location('LIFE_EVENT_DATE :'||p_lf_evt_ocrd_dt, 10);
1635: --
1636: begin
1637: --
1638: hr_utility.set_location('Entering :'||l_proc, 10);
1639: hr_utility.set_location('PERSON ID :'||p_person_id, 10);
1640: hr_utility.set_location('BUSINESS_GROUP_ID :'||p_business_group_id, 10);
1641: hr_utility.set_location('EFFECTIVE_DATE :'||p_effective_date, 10);
1642: hr_utility.set_location('LIFE_EVENT_DATE :'||p_lf_evt_ocrd_dt, 10);
1643: hr_utility.set_location('PROFILE_ID :'||p_eligy_prfl_id, 10);
1636: begin
1637: --
1638: hr_utility.set_location('Entering :'||l_proc, 10);
1639: hr_utility.set_location('PERSON ID :'||p_person_id, 10);
1640: hr_utility.set_location('BUSINESS_GROUP_ID :'||p_business_group_id, 10);
1641: hr_utility.set_location('EFFECTIVE_DATE :'||p_effective_date, 10);
1642: hr_utility.set_location('LIFE_EVENT_DATE :'||p_lf_evt_ocrd_dt, 10);
1643: hr_utility.set_location('PROFILE_ID :'||p_eligy_prfl_id, 10);
1644: --
1637: --
1638: hr_utility.set_location('Entering :'||l_proc, 10);
1639: hr_utility.set_location('PERSON ID :'||p_person_id, 10);
1640: hr_utility.set_location('BUSINESS_GROUP_ID :'||p_business_group_id, 10);
1641: hr_utility.set_location('EFFECTIVE_DATE :'||p_effective_date, 10);
1642: hr_utility.set_location('LIFE_EVENT_DATE :'||p_lf_evt_ocrd_dt, 10);
1643: hr_utility.set_location('PROFILE_ID :'||p_eligy_prfl_id, 10);
1644: --
1645:
1638: hr_utility.set_location('Entering :'||l_proc, 10);
1639: hr_utility.set_location('PERSON ID :'||p_person_id, 10);
1640: hr_utility.set_location('BUSINESS_GROUP_ID :'||p_business_group_id, 10);
1641: hr_utility.set_location('EFFECTIVE_DATE :'||p_effective_date, 10);
1642: hr_utility.set_location('LIFE_EVENT_DATE :'||p_lf_evt_ocrd_dt, 10);
1643: hr_utility.set_location('PROFILE_ID :'||p_eligy_prfl_id, 10);
1644: --
1645:
1646: -- fonm
1639: hr_utility.set_location('PERSON ID :'||p_person_id, 10);
1640: hr_utility.set_location('BUSINESS_GROUP_ID :'||p_business_group_id, 10);
1641: hr_utility.set_location('EFFECTIVE_DATE :'||p_effective_date, 10);
1642: hr_utility.set_location('LIFE_EVENT_DATE :'||p_lf_evt_ocrd_dt, 10);
1643: hr_utility.set_location('PROFILE_ID :'||p_eligy_prfl_id, 10);
1644: --
1645:
1646: -- fonm
1647: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
1651: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
1652: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
1653:
1654: --
1655: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
1656: end if;
1657:
1658:
1659:
1664: -- If person does not have a date of birth then he/she
1665: -- is not eligible.
1666: --
1667: if l_check_dob = true then
1668: hr_utility.set_location('HERE',10);
1669: open c_per;
1670: fetch c_per into l_dob;
1671: close c_per;
1672: if l_dob is null then
1685: elsif l_pl_id is not null then
1686: l_pgm_id := null;
1687: end if;
1688: --
1689: hr_utility.set_location('XXXX AGE = '||l_age,10);
1690: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1691: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1692: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1693: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1686: l_pgm_id := null;
1687: end if;
1688: --
1689: hr_utility.set_location('XXXX AGE = '||l_age,10);
1690: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1691: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1692: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1693: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1694: --
1687: end if;
1688: --
1689: hr_utility.set_location('XXXX AGE = '||l_age,10);
1690: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1691: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1692: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1693: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1694: --
1695: ben_derive_factors.determine_age
1688: --
1689: hr_utility.set_location('XXXX AGE = '||l_age,10);
1690: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1691: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1692: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1693: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1694: --
1695: ben_derive_factors.determine_age
1696: (p_person_id => p_person_id ,
1689: hr_utility.set_location('XXXX AGE = '||l_age,10);
1690: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1691: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1692: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1693: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1694: --
1695: ben_derive_factors.determine_age
1696: (p_person_id => p_person_id ,
1697: p_per_dob => l_dob,
1708: p_change_date => l_change_date,
1709: p_parent_person_id => p_contact_person_id,
1710: p_fonm_cvg_strt_dt => l_fonm_cvg_strt_dt );
1711: --
1712: hr_utility.set_location('XXXX AGE = '||l_age,10);
1713: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1714: hr_utility.set_location('XXXX DOB = '||l_change_date,1965);
1715: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1716: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1709: p_parent_person_id => p_contact_person_id,
1710: p_fonm_cvg_strt_dt => l_fonm_cvg_strt_dt );
1711: --
1712: hr_utility.set_location('XXXX AGE = '||l_age,10);
1713: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1714: hr_utility.set_location('XXXX DOB = '||l_change_date,1965);
1715: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1716: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1717: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1710: p_fonm_cvg_strt_dt => l_fonm_cvg_strt_dt );
1711: --
1712: hr_utility.set_location('XXXX AGE = '||l_age,10);
1713: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1714: hr_utility.set_location('XXXX DOB = '||l_change_date,1965);
1715: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1716: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1717: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1718: hr_utility.set_location (' age chek in dep elig ' , 610);
1711: --
1712: hr_utility.set_location('XXXX AGE = '||l_age,10);
1713: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1714: hr_utility.set_location('XXXX DOB = '||l_change_date,1965);
1715: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1716: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1717: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1718: hr_utility.set_location (' age chek in dep elig ' , 610);
1719: --Bug 2101937 we need to test the max limit differently for
1712: hr_utility.set_location('XXXX AGE = '||l_age,10);
1713: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1714: hr_utility.set_location('XXXX DOB = '||l_change_date,1965);
1715: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1716: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1717: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1718: hr_utility.set_location (' age chek in dep elig ' , 610);
1719: --Bug 2101937 we need to test the max limit differently for
1720: --whole numbers and decimal numbers.
1713: hr_utility.set_location('XXXX DOB = '||l_dob,10);
1714: hr_utility.set_location('XXXX DOB = '||l_change_date,1965);
1715: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1716: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1717: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1718: hr_utility.set_location (' age chek in dep elig ' , 610);
1719: --Bug 2101937 we need to test the max limit differently for
1720: --whole numbers and decimal numbers.
1721: --if the age_max_num is a whole number we need to take age_max_num + 1
1714: hr_utility.set_location('XXXX DOB = '||l_change_date,1965);
1715: hr_utility.set_location('XXXX MIN = '||age.mn_age_num,10);
1716: hr_utility.set_location('XXXX MAX = '||age.mx_age_num,10);
1717: hr_utility.set_location('XXXX EXCLD = '||age.excld_flag,10);
1718: hr_utility.set_location (' age chek in dep elig ' , 610);
1719: --Bug 2101937 we need to test the max limit differently for
1720: --whole numbers and decimal numbers.
1721: --if the age_max_num is a whole number we need to take age_max_num + 1
1722: --else we need to take the age_max_num + 0.00000001
1754: if ((l_age >= age.mn_age_num and l_age < l_max_age_number)
1755: or (age.no_mn_age_flag = 'Y' and l_age < l_max_age_number)
1756: or (age.no_mx_age_flag = 'Y' and l_age >= age.mn_age_num) ) then
1757:
1758: hr_utility.set_location (' passed age chekc in dep elig ' , 610);
1759: --
1760: if age.excld_flag = 'Y' then
1761: --
1762: -- exclude means if the criteria matches, the person is not eligible
1779: p_max => age.mx_age_num,
1780: p_value => 'GT_MIN') - 1;
1781: end if;
1782: --
1783: hr_utility.set_location('l_elig_change_dt :'||l_elig_change_dt, 5);
1784: --
1785: set_elig_change_dt(p_elig_change_dt => l_elig_change_dt,p_effective_date => l_effective_date); -- bug 4546890
1786: exit;
1787: --
1817: p_max => age.mx_age_num,
1818: p_value => 'GT_MAX') - 1;
1819: end if;
1820:
1821: hr_utility.set_location('l_elig_change_dt :'||l_elig_change_dt, 10);
1822:
1823: set_elig_change_dt(p_elig_change_dt => l_elig_change_dt,p_effective_date => l_effective_date); -- bug 4546890
1824: --
1825: end if;
1835: l_elig := 'Y';
1836: --
1837: end if;
1838: --
1839: hr_utility.set_location('l_elig :'||l_elig, 10);
1840: p_eligible_flag := l_elig;
1841: --
1842: if l_elig = 'Y' then
1843: p_inelig_rsn_cd := null;
1844: else
1845: p_inelig_rsn_cd := 'AGE';
1846: end if;
1847: --
1848: hr_utility.set_location('Leaving :'||l_proc, 20);
1849: --
1850: end check_age_elig;
1851: --
1852: procedure check_marital_elig
1883: l_ems c_ems%rowtype;
1884: --
1885: begin
1886: --
1887: hr_utility.set_location('Entering: '||l_proc,10);
1888: --
1889:
1890: -- fonm
1891: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
1895: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
1896: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
1897:
1898: --
1899: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
1900: end if;
1901:
1902:
1903: open c_ems;
1929: else
1930: p_inelig_rsn_cd := 'MRT';
1931: end if;
1932: --
1933: hr_utility.set_location('Leaving: '||l_proc,20);
1934: --
1935: end check_marital_elig;
1936: --
1937: procedure check_military_elig
1968: l_emc c_emc%rowtype;
1969: --
1970: begin
1971: --
1972: hr_utility.set_location('Entering: '||l_proc,10);
1973: --
1974: -- fonm
1975: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
1976: if ben_manage_life_events.fonm = 'Y'
1979: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
1980: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
1981:
1982: --
1983: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
1984: end if;
1985:
1986:
1987: open c_emc;
2013: else
2014: p_inelig_rsn_cd := 'MLT';
2015: end if;
2016: --
2017: hr_utility.set_location('Leaving: '||l_proc,20);
2018: --
2019: end check_military_elig;
2020: --
2021: procedure check_student_elig
2052: l_esc c_esc%rowtype;
2053: --
2054: begin
2055: --
2056: hr_utility.set_location('Entering: '||l_proc,10);
2057: --
2058: -- fonm
2059: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
2060: if ben_manage_life_events.fonm = 'Y'
2063: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
2064: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
2065:
2066: --
2067: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
2068: end if;
2069:
2070:
2071: open c_esc;
2097: else
2098: p_inelig_rsn_cd := 'STU';
2099: end if;
2100: --
2101: hr_utility.set_location('Leaving: '||l_proc,20);
2102: --
2103: end check_student_elig;
2104: --
2105: procedure check_contact_elig
2149: l_dcr c_dcr%rowtype;
2150: --
2151: begin
2152: --
2153: hr_utility.set_location('Entering: '||l_proc,10);
2154: --
2155: -- fonm
2156: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
2157: if ben_manage_life_events.fonm = 'Y'
2160: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
2161: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
2162:
2163: --
2164: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
2165: end if;
2166:
2167:
2168: open c_dcr;
2202: else
2203: p_inelig_rsn_cd := 'REL';
2204: end if;
2205: --
2206: hr_utility.set_location('Leaving: '||l_proc,20);
2207: --
2208: end check_contact_elig;
2209: --
2210: procedure check_disabled_elig
2240: l_edc c_edc%rowtype;
2241: --
2242: begin
2243: --
2244: hr_utility.set_location('Entering: '||l_proc,10);
2245: hr_utility.set_location('*** SUP in Check disability p_effective_date '|| p_effective_date,10);
2246:
2247: --
2248: -- fonm
2241: --
2242: begin
2243: --
2244: hr_utility.set_location('Entering: '||l_proc,10);
2245: hr_utility.set_location('*** SUP in Check disability p_effective_date '|| p_effective_date,10);
2246:
2247: --
2248: -- fonm
2249: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
2253: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
2254: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
2255:
2256: --
2257: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
2258: end if;
2259:
2260:
2261: open c_edc;
2287: else
2288: p_inelig_rsn_cd := 'DSB';
2289: end if;
2290: --
2291: hr_utility.set_location('** sup in disability check p_eligible_flag '||p_eligible_flag,200);
2292: hr_utility.set_location('Leaving: '||l_proc,20);
2293: --
2294: end check_disabled_elig;
2295: --
2288: p_inelig_rsn_cd := 'DSB';
2289: end if;
2290: --
2291: hr_utility.set_location('** sup in disability check p_eligible_flag '||p_eligible_flag,200);
2292: hr_utility.set_location('Leaving: '||l_proc,20);
2293: --
2294: end check_disabled_elig;
2295: --
2296: procedure check_postal_elig
2337: l_len number ;
2338: --
2339: begin
2340: --
2341: hr_utility.set_location('Entering : '||l_proc,10);
2342: --
2343: -- fonm
2344: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
2345: if ben_manage_life_events.fonm = 'Y'
2348: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
2349: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
2350:
2351: --
2352: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
2353: end if;
2354:
2355:
2356: open c_zip_code_rng;
2360: fetch c_zip_code_rng into l_zip;
2361: exit when c_zip_code_rng%notfound;
2362: --
2363: l_found_one := 'Y';
2364: hr_utility.set_location('Found zip criteria. from:'||
2365: l_zip.from_value||' to:'||
2366: l_zip.to_value||' '||p_postal_code,2219.2);
2367:
2368: l_len := length(nvl(l_zip.from_value,'00000')) ;
2366: l_zip.to_value||' '||p_postal_code,2219.2);
2367:
2368: l_len := length(nvl(l_zip.from_value,'00000')) ;
2369: --
2370: hr_utility.set_location(' len ' || l_len , 2219.2);
2371: ---
2372: if nvl( length(p_postal_code) >= length(l_zip.from_value) and
2373: (substr(nvl(p_postal_code,'-1'),1,l_len )
2374: between nvl(l_zip.from_value,'00000') and
2372: if nvl( length(p_postal_code) >= length(l_zip.from_value) and
2373: (substr(nvl(p_postal_code,'-1'),1,l_len )
2374: between nvl(l_zip.from_value,'00000') and
2375: nvl(l_zip.to_value,nvl(p_postal_code,'-1'))),false) then
2376: hr_utility.set_location('result true ' ,2219.2);
2377: --
2378: if l_zip.excld_flag = 'Y' then
2379: -- exclude means if the criteria matches, the person is not eligible
2380: l_elig := 'N';
2377: --
2378: if l_zip.excld_flag = 'Y' then
2379: -- exclude means if the criteria matches, the person is not eligible
2380: l_elig := 'N';
2381: hr_utility.set_location(' l_elig := No ',99);
2382: exit;
2383: --
2384: else -- l_zip.excld_flag = 'N'
2385: -- one criteria instance passed, leave.
2383: --
2384: else -- l_zip.excld_flag = 'N'
2385: -- one criteria instance passed, leave.
2386: l_elig := 'Y';
2387: hr_utility.set_location(' l_elig := yes ',99);
2388: exit;
2389: --
2390: end if;
2391: --
2390: end if;
2391: --
2392: elsif l_zip.excld_flag = 'Y' then -- No Match and exclude is 'Y' case
2393: --
2394: hr_utility.set_location('No Match and exclude is yes ' ,99);
2395: l_elig := 'Y';
2396: -- exit;
2397: --
2398: end if;
2398: end if;
2399: -- one criteria instance failed. keep going to check others.
2400: end loop;
2401: --
2402: hr_utility.set_location(' l_elig '||l_elig ,99);
2403: if l_found_one = 'N' then
2404: --
2405: -- No criteria passes
2406: --
2417: else
2418: p_inelig_rsn_cd := 'ZIP';
2419: end if;
2420: --
2421: hr_utility.set_location(' l_elig '||l_elig ,100);
2422: hr_utility.set_location('Leaving: '||l_proc,20);
2423: --
2424: end check_postal_elig;
2425: --
2418: p_inelig_rsn_cd := 'ZIP';
2419: end if;
2420: --
2421: hr_utility.set_location(' l_elig '||l_elig ,100);
2422: hr_utility.set_location('Leaving: '||l_proc,20);
2423: --
2424: end check_postal_elig;
2425: --
2426: procedure check_cvrd_anthr_pl_elig
2478: l_dpc c_get_cvrd_anthr_pl%rowtype;
2479: --
2480: begin
2481: --
2482: hr_utility.set_location('Entering: '||l_proc,10);
2483: --
2484: -- fonm
2485: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
2486: if ben_manage_life_events.fonm = 'Y'
2489: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
2490: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
2491:
2492: --
2493: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
2494: end if;
2495:
2496:
2497: open c_get_cvrd_anthr_pl;
2519: -- If the dependent is covered under the plan
2520: -- and the exclude flag is set to 'Y' then he/she
2521: -- is not eligible.
2522: --
2523: hr_utility.set_location ('Found c_get_elig_cvrd_dpnt '||l_dpc.excld_flag,34634611);
2524: if l_dpc.excld_flag = 'Y' then
2525: l_elig := 'N';
2526: exit ;
2527: else
2534: --
2535: -- If the dependent is not covered under plan and the
2536: -- exclude flag is set to 'Y', then the he/she is eligible.
2537: --
2538: hr_utility.set_location ('Not Found c_get_elig_cvrd_dpnt '||l_dpc.excld_flag,34634611);
2539: if l_dpc.excld_flag = 'N' then
2540: l_elig := 'N';
2541: else
2542: l_elig := 'Y' ;
2555: else
2556: p_inelig_rsn_cd := 'CVP';
2557: end if;
2558: --
2559: hr_utility.set_location('Leaving: '||l_proc,20);
2560:
2561: --
2562: end check_cvrd_anthr_pl_elig;
2563: --
2605:
2606: --
2607: begin
2608: --
2609: hr_utility.set_location('Entering: '||l_proc,10);
2610: hr_utility.set_location('eligy_prfl: '||p_eligy_prfl_id,10);
2611: hr_utility.set_location('dsgntr_id: '||p_dsgntr_id,10);
2612: --
2613: -- fonm
2606: --
2607: begin
2608: --
2609: hr_utility.set_location('Entering: '||l_proc,10);
2610: hr_utility.set_location('eligy_prfl: '||p_eligy_prfl_id,10);
2611: hr_utility.set_location('dsgntr_id: '||p_dsgntr_id,10);
2612: --
2613: -- fonm
2614: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
2607: begin
2608: --
2609: hr_utility.set_location('Entering: '||l_proc,10);
2610: hr_utility.set_location('eligy_prfl: '||p_eligy_prfl_id,10);
2611: hr_utility.set_location('dsgntr_id: '||p_dsgntr_id,10);
2612: --
2613: -- fonm
2614: l_effective_date := nvl(p_lf_evt_ocrd_dt,p_effective_date ) ;
2615: if ben_manage_life_events.fonm = 'Y'
2618: l_fonm_cvg_strt_dt := ben_manage_life_events.g_fonm_cvg_strt_dt ;
2619: l_effective_date := nvl(l_fonm_cvg_strt_dt,l_effective_date ) ;
2620:
2621: --
2622: hr_utility.set_location ('Fonm Date '||l_effective_date ,10);
2623: end if;
2624:
2625:
2626: open c_get_dsgntr_enrld_cvg;
2660: else
2661: p_inelig_rsn_cd := 'DEG';
2662: end if;
2663: --
2664: hr_utility.set_location('Leaving: '||l_proc,20);
2665: --
2666: end check_dsgntr_enrld_cvg_elig;
2667: --
2668: function get_elig_change_dt return date is