Functional Description
Purpose
The Named ER processes eligibility for either a newly elected plan or retests eligibility for a
currently enrolled plan.
Setup Notes and Prerequisites
Current Enrollment parameters are required if retesting eligibility for a currently enrolled plan.
If the current enrollment is to be closed out, because of change of enrollment status resulting from
the retest, or change of amount or rate, a new enrollment will be created and the new enrollment
parameters will be passed back. Otherwise, there will be no new enrollment parameters passed back. If
processing eligibility for newly elected plan or plan option, a new enrollment record will be created and
the new enrollment parameters will be passed back.
Special Logic
Technical Specification
FetchSingle F060116 by key, mnAddressNumber, retrieving EmployeeBenefitGroup and
EmployeeBenefitStatus
If the fetch F060116 is successful
//Look for enrollment parameter record (F08392) //
Call Named ER, "Retrieve Enrollment Parameter" (N0800036), passing in szPlanId,
EmployeeBenefitStatus, szCurrentEnrollmentStatus, Valid Plan of 'Y', and returning
fields from the
table, F08392 and an EnrollmentParmRecordFoundFlag to indicate whether an enrollment
parameter is
found. //Fields from F08392 are returned to variables, the names ending with
xxxxxxxxXF08392//
//If enrollment parameter record is not found, set default whether to perform initial or
continuing eligibility
test//
If EnrollmentParmRecordFoundFlag <> 1
ActiveFlag = substr(szCurrentEnrollmentStatus,0,1)
// If employee is currently and actively enrolled in plan, test continuing eligibility.
Otherwise, perform
initial eligibility test//
If jdCurrentEnrollmentDate<> 0 and ActiveFlag = 'A'
EligibilityCheckF08392 = 'C'
Else
EligibilityCheckF08392 = 'I'
End If
//Initialize all other enrollment parameters//
PreviousEnrollmentF08392 = ' '
ManualCheckF08392 = ' '
EnrollStatusEndF08392 = ' '
TerminationCodeF08392 = ' '
End If //End of if EnrollmentParmRecordFoundFlag <> 1//
//Set the date to use to check for previous enrollment//
If jdCurrentEnrollmentDate <> 0
DateToUse = jdCurrentEnrollmentDate
Else
DateToUse = jdDateEffectiveRates
End If
//Check to see if employee was previously eligible if requested//
Set PreviousEligibleFlag = 'N'
If PreviousEnrollmentF08392 <> Blank
//Process through the enrollment table, F08330 to find previous enrollment, if any//
Select F08330 by key, mnAddressNumber, szPlanId
Set ReadF08330Flag = '1'
While file operation is successful and ReadF08330Flag = '1'
FetchNext F08330, retrieving EligibleDateF08330
If fetchnext F08330 is successful and ElgibleDateF08330 < DateToUse
PreviousEligibleFlag = 'Y'
ReadF08330Flag = '0'
End If
End While
End If //End of If PreviousEnrollmentF08392 <> Blank//
//Determine which enrollment parameter to use, whether it would be the first set or second set//
If PrevousEnrollmentF08392 <> PreviousEligibleFlag and PreviousEnrollmentF08392 <> Blank
EligibilityCodeToUse = EligibilityCheck1F08392
TermCodeToUse = TerminationCode1F08392
ManualReviewToUse = ManualCheck1F08392
EnrollStatusEndToUse = EnrollEndStatus1F08392
Else
EligibilityCodeToUse = EligibilityCheck2F08392
TermCodeToUse = TerminationCode2F08392
ManualReviewToUse = ManualCheck2F08392
EnrollStatusEndToUse = EnrollEndStatus2F08392
End If
//Set ManualReview Flag and error code//
If ManualReviewToUse = 'Y'
cManualReviewFlag = '1'
szErrorCode = '2224'
Else
CManualReviewFlag = ' '
End If
//Validate the Plan//
FetchSingle F08320 by key, szPlanId and returning EligibilityTable1F08320,
EligibilityTable2F08320 and
PreRequisitePlanF08320
If the fetchsingle is unsuccessful
szErrorCode = '2312'
End If
//Validate plan option//
If szErrorCode <> Blank and szPlanAdditionalOption <> Blank
FetchSingle F083202 by keys, szPlanId, szPlanAdditionalOption and returning
ValidOptionFlagF083202
If fetchsingle is not successful or ValidOptionFlagF083202 = 'N'
szErrorCode = 2312'
End If
End If
//Determine which eligibility Table to test for eligibility//
If szErrorCode <> Blank
If EligibiltiyCodeToUse <> Blank
If EligibilityCodeToUse = 'I'
EligibilityTableToUse = EligibilityTable1F08320
Else
If EligibilityCodeToUse = 'C'
EligibilityTableToUse = EligibilityTable2F08320
Endif
End If
//Validate the eligibility Table to Use//
Select F08390, by key, EligibilityTableToUse
If select operation is not successful
szErrorCode = '2335'
Else
FetchNext F08390, retrieving EligibleStatusF08390, InEligibleStatusF08390,
EnrollmentCodeF08390 and TerminationCodeF08390
If fetchnext is not successful
szErrorCode = '2335'
End If
End If
//Determine Employee Eligibility//
Call Named ER "Determine Employee Eligibility Server", passing in mnAddressNumber,
szPlanId,
jdDateEffectiveRates and EligibilityCodeToUse and returning
cServiceRequirementFlag,
cAgeRequirementFlag, and cHoursRequirementFlag
//Check Prerequisite Plan//
If PreRequisitePlanF08320 <> Blank
//If caching is used, check whether the prerequisite plan is in the "Plan Status"
Enrollment Cache//
If F08330EditLineCacheJobN <> 0
Trim any trailing blank off PreRequisitePlanF08330
Locate PreRequisitePlanF08330 from cache, returning the PlanStatusCode //
Call Plan Status
Cache//
// If plan is in cache, check if the plan status is 'A' If it is,
PreRequisite Requirement is met//
If Error returning from BSFN = Blank
If PlanStatusCode = 'A'
cPreRequisiteRequirementFlag = ' '
Else
cPreRequisiteRequirementFlag = '1'
End If
Else //Else plan is not in cache//
Call Named ER, "Retrieve Employee Current Enrollment", passing in,
mnAddressNumber,
PreRequisitePlanF08320, jdDateEffectiveRates and returning the
enrollment status
(PreRequisiteEnrollStatus) and a flag (PreRequisiteEnrollFlag) to
indicate enrollment is
found
ActiveFlag = substr (PreRequisiteEnrollStatus, 0,1)
If PreRequisiteEnrollFlag = '1' and ActiveFlag = 'A'
PlanStatusCode = 'A'
cPreRequisiteRequirementFlag = ' '
Else
PlanStatusCode = ' '
cPreRequisiteRequirementFlag = '1'
End If //End of if PreRequisteEnrollFlag = '1' and ActiveFlag =
'A'//
Write PreRequisite plan to Cache
End If //End of if error returning from BSFN = Blank//
Else //Else caching is not used//
Call Named ER, "Retrieve Employee Current Enrollment", passing in,
mnAddressNumber,
PreRequisitePlanF08320, jdDateEffectiveRates and returning the
enrollment status
(PreRequisiteEnrollStatus) and a flag (PreRequisiteEnrollFlag) to
indicate enrollment is
found
ActiveFlag = substr (PreRequisiteEnrollStatus, 0,1)
If PreRequisiteEnrollFlag = '1' and ActiveFlag = 'A'
cPreRequisiteRequirementFlag = ' '
Else
cPreRequisiteRequirementFlag = '1'
End If //End of if PreRequisiteEnrollFlag = '1' and ActiveFlag = 'A'//
End If //End of if F08330EditLineCacheJobN <> 0//
End If //End of if Prerequisite Plan <> Blank //
//Determine Date by Date Code//
If cManualReviewFlag <>'1'
// If pass eligibility, use eligible status and enrollment code. Otherwise, use
ineligible status and
terminationcode//
If cAgeRequirmentFlag, cServiceRequirementFlag, cHoursRequirementFlag and
cPreRequisiteRequirementFlag are all blank
DateCodeToUse = EnrollmentCodeF08390
NewEnrollmentStatus = EligibleStatusF08390
Else
DateCodeToUse = TerminationCodeF08390
NewEnrollmentStatus = InEligibleStatusF08390
End If
// If status has not change, do not find date for date code, unless change
amount/rate//
If (szCurrentEnrollmentStatus <> NewEnrollmentStatus) OR
(szCurrentEnrollmentStatus = NewEnrollmentStatus and cActionCode = 'C')
Call Named ER "Determine Date by Date Code" (N0800039), passing in
DateCodeToUse,
jdDateEffectiveRates, mnAddressNumber and returning the
DeterminedBeginDate and
szErrorCode.
//Error if determined begin date is zero//
If DeterminedBeginDate = 0
szErrorCode = 2336'
End If
//If current enrollment parameters are passed in, determine the current
enrollment end date
which is the day prior to the determined begin date. If current end date <
current enrollment,
issue error//
If jdCurrentEnrollmentDate <> 0
WorkEndDate = add_days(DeterminedBeginDate, -1)
If WorkEndDate < jdCurrentEnrollment
szErrorCode = '2337'
End If
End If
//If the date to begin new enrollment record is the same as a previous
identical enrollment ended
with a mistaken enrollment status, do not enrollment//
If szErrorCode = Blank
Select F08330 by keys, mnAddressNumber, szPlanId, and
szPlanAdditionalOption
While the file operation is successful and szErrorCode = ' '
FetchNext F08330, retrieving EnrollmentDateF08330,
EnrollmentEndStatusF08330
If fetchnext F08330 is successful
MistakenEnrollmentFlag = substr(EnrollmentEndStatusF08330,0,1)
If DeterminedBeginDate = EnrollmentDateF08330 and
MistakenEnrollmentFlag = 'X'
szErrorCode = '2432'
End If //End of if determinedbegindate =
enrollmentdatef08330'85'85.//
End If //End of if fetchnextF08330 is successful//
End While
End If //End of if szErrorCode = blank//
End If //End of if CurrentEnrollmentStatus <> NewEnrollmentStatus or
'85'85'85'85'85'85.//
End If //End of if cManualReviewFlag <> '1'//
Else //Else EligibilityCodeToUse = Blank, check other parameters//
If cManualReviewFlag <> '1'
//Process
by'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1a'1apar
DN0800038 - Process Eligibility
Parameter Name | Data Item | Data Type | Req/Opt | I/O/Both |
---|---|---|---|---|
jdDateEffectiveRates | EFT | JDEDATE | REQ | INPUT |
The date that identifies when a date is first valid. The effective date is used generically. It can be a lease effective date, a price or cost
| ||||
mnAddressNumber | AN8 | MATH_NUMERIC | REQ | INPUT |
A number that identifies an entry in the Address Book system, such as employee, applicant, participant, customer, supplier, tenant, or
| ||||
szPlanId | PLAN | char | REQ | INPUT |
An abbreviation or number that identifies a specific employee benefit. Examples are:
o Employee Health Insurance
o Accidental Death
| ||||
szPlanAdditionalOption | AOPT | char | NONE | NONE |
A code that identifies any additional options available for a benefit plan that have been defined in the Plan Additional Options table
| ||||
jdCurrentEligibleDate | DELG | JDEDATE | NONE | NONE |
The date on which the employee is eligible to enroll in the benefit plan. This date is not necessarily the date that the employee begins
| ||||
jdCurrentEnrollmentDate | EFT | JDEDATE | NONE | NONE |
The date that identifies when a date is first valid. The effective date is used generically. It can be a lease effective date, a price or cost
| ||||
szCurrentEnrollmentStatus | XDFS | char | NONE | NONE |
A code that indicates the status of an employee's enrollment in a plan. It is a user defined code (08/ES), and you must use the following
| ||||
jdCurrentParticipationDate | DPTC | JDEDATE | NONE | NONE |
The date on which the employee begins participating in the plan for the specified enrollment period. For example:
The XYZ Company
| ||||
szCurrentEnrollmentEndStatus | XEST | char | NONE | NONE |
A code that indicates the ending status of an employee's enrollment in a plan. This status represents the reason for ending the old
| ||||
jdCurrentEnrollmentEndDate | EFTE | JDEDATE | NONE | NONE |
The date on which the item, transaction, or table becomes inactive, or through which you want transactions to appear. This field is used
| ||||
jdCurrentDBAEndDate | DTDE | JDEDATE | NONE | NONE |
The ending date on the employee's DBA instruction record (F06106) for this enrollment. In most cases, this is the same as the ending
| ||||
jdNewEligibleDate | DELG | JDEDATE | NONE | NONE |
The date on which the employee is eligible to enroll in the benefit plan. This date is not necessarily the date that the employee begins
| ||||
jdNewEnrollmentDate | EFT | JDEDATE | NONE | NONE |
The date that identifies when a date is first valid. The effective date is used generically. It can be a lease effective date, a price or cost
| ||||
szNewEnrollmentStatus | XDFS | char | NONE | NONE |
A code that indicates the status of an employee's enrollment in a plan. It is a user defined code (08/ES), and you must use the following
| ||||
jdNewParticipationDate | DPTC | JDEDATE | NONE | NONE |
The date on which the employee begins participating in the plan for the specified enrollment period. For example:
The XYZ Company
| ||||
jdNewDBABeginDate | DTDB | JDEDATE | NONE | NONE |
The beginning date on the employee's DBA instruction record (F06106) for this enrollment. In most cases, this is the same as the beginning
| ||||
cAgeRequirementFlag | EV02 | char | NONE | NONE |
An option that specifies the type of processing for an event. | ||||
cServiceRequirementFlag | EV03 | char | NONE | NONE |
A radio button that specifies the level at which trace/track result is to be displayed. Select the Detail to display all transactions except IB, IX,
| ||||
cHoursRequirementFlag | EV04 | char | NONE | NONE |
PeopleSoft event point processing flag 04. | ||||
cManualReviewFlag | EV05 | char | NONE | NONE |
A flag that indicates whether automatic spell check is turned on. | ||||
cPreRequisiteRequirementFlag | EV06 | char | NONE | NONE |
An option that specifies the type of processing for an event. | ||||
szErrorCode | VC04A | char | NONE | NONE |
This is a generic field used as a work field in Everest. | ||||
jdPlanCategoryEndingDate | EFTE | JDEDATE | REQ | INPUT |
The date on which the item, transaction, or table becomes inactive, or through which you want transactions to appear. This field is used
| ||||
szDefaultEndingStatus | XEST | char | REQ | INPUT |
A code that indicates the ending status of an employee's enrollment in a plan. This status represents the reason for ending the old
| ||||
jdNewEnrollmentEndDate | EFTE | JDEDATE | NONE | NONE |
The date on which the item, transaction, or table becomes inactive, or through which you want transactions to appear. This field is used
| ||||
jdNewDBAEndDate | DTDE | JDEDATE | NONE | NONE |
The ending date on the employee's DBA instruction record (F06106) for this enrollment. In most cases, this is the same as the ending
| ||||
szNewEnrollmentEndStatus | XEST | char | NONE | NONE |
A code that indicates the ending status of an employee's enrollment in a plan. This status represents the reason for ending the old
| ||||
cActionCode | EV01 | char | NONE | NONE |
An option that specifies the type of processing for an event. | ||||
szDftEndStatusFromPlanEndDate | XEST | char | REQ | INPUT |
A code that indicates the ending status of an employee's enrollment in a plan. This status represents the reason for ending the old
| ||||
F08330EditLineCacheJobN | MATH01 | MATH_NUMERIC | NONE | INPUT |
- - - Good Performance Low Value. | ||||
cErrorFlag | VC01A | char | OPT | OUTPUT |
This is a generic field used for video constants display. | ||||
cResultPrevEligbility | ENRP | char | OPT | OUTPUT |
A code that indicates whether the employee was previously eligible for the plan. Valid values are:
Blank
Do not check for previous
| ||||
cResultEligibilityBasis | ELGB | char | OPT | OUTPUT |
This field works in conjunction with the Number of Days, Months, Years field and the Date to Follow field to define an enrollment date that is
| ||||
szResultEligibilityTable | XET | char | OPT | OUTPUT |
A code that identifies the specific table of eligibility rules. The rules determine whether the employee is eligible for enrollment in a plan. | ||||
jdDateDeterminedbyDateCode | EFT | JDEDATE | OPT | OUTPUT |
The date that identifies when a date is first valid. The effective date is used generically. It can be a lease effective date, a price or cost
| ||||
cAdjustDateByDateCodeFlag | EV01 | char | OPT | INPUT |
An option that specifies the type of processing for an event. | ||||
cUserDefinedRequired | EV01 | char | OPT | NONE |
An option that specifies the type of processing for an event. |
None |
None |