Subprocess Sections
Subprocess sections are especially useful for:
-
Calculating gross ups, gross amounts based on known net amounts.
Say payees get a bonus payment of a specific amount. You can create a subprocess section that uses iterative calculations to compute taxes and subsequent gross pay to achieve the desired net amount.
-
Taking deductions based on their relative priority.
You can create a subprocess section that's enabled for net pay validation by priority. When deductions exceed net pay or a defined minimum, the system uses an iterative process to adjust the amounts deducted, based on the relative priority of each deduction.
A subprocess can include conditional formulas that determine whether a particular element is resolved and whether to perform a looping action.
See Understanding Net Pay Validation and Arrears Processing.
Rules for Using Subprocess Sections
These are the rules for using subprocess sections:
-
All elements and supporting elements in a subprocess section are recalculated in subprocess execution.
An exception to this rule applies to subsections that are enabled for net pay validation by priority order. For these sections, you can choose whether to recalculate an element. By default, the system does not recalculate.
-
Forwarded adjustments are considered during each subprocess iteration.
-
Regular element eligibility and generation control apply during a subprocess.
-
You can include standard sections and payee sections in a subprocess section.
-
Accumulators used during an iterative process are self-correcting—they don't require resetting.
During each iteration, the system removes the old value and adds or subtracts the new value, as applicable. (When the Accumulate Timing option for an accumulator is set to After Calculation, the value isn't updated until the process ends.)
For subprocess sections that are enabled for net pay validation by priority, this rule applies only to the elements that are calculated during the iteration. Accumulators are updated depending on the amount that could actually be taken for a deduction.
-
The element resolution chain audits subprocesses.
Audit chain results are written out by iteration: each loop is documented with its iteration number.
-
When using the net pay validation by priority feature, the system performs the net pay validation processing when it discovers that net pay has dropped below zero (or a defined minimum).
Including Multiple Subprocess Sections in a Process List
Following are guidelines for including multiple subprocess sections in the same process list:
-
Rather than creating multiple subprocess sections, you can gross up multiple elements in the same subprocess.
The system calculates the gross up amount after entry of all net amounts and before deductions. Create an earning element to hold the grossed-up amount for each element or group of elements that you're grossing up. The net amount remains as is in the existing element, and if entered through positive input, the result tables' net amount still reconciles to the positive input entered. To report the entire amount, you can create an accumulator that includes the net amount and the grossed-up amount.
-
To reduce the number of elements to be grossed up, consider creating an accumulator that stores the grossed-up amount of like groups of elements, such as elements subject to the same tax treatment.
You can add this grossed-up element to applicable accumulators.
-
If using net pay validation by priority, all deductions that are to be considered must be in the same subprocess loop.
Net pay validation is done in processing sequence for all deductions that are placed outside of the subprocess loop for net pay validation.
Guidelines for Defining Net Pay Validation Logic for a Subprocess Section
Use the following guidelines to perform net pay validation by priority order:
-
When creating the section, select the Net Pay Validation by Priority check box on the Section-Definition page.
Note:
This check box appears only if the associated country contains a Net Pay Validation formula on the Country Setup page.
-
List deductions and other elements in the subprocess section in normal processing sequence.
The system refers to the priority order assigned to the deduction on the Deduction - Arrears page during the net pay validation process.
-
Associate a loop formula with the element that is to begin the loop action. During the first loop, the formula should resolve to true (1), causing all elements in the subprocess to be calculated in processing sequence. Before performing a subsequent loop, the formula should check net pay. If it detects that net pay is greater than zero or a minimum amount that you define for the process list, the formula should return a value of false (zero), and end the looping process. If net is less than zero or the defined minimum, the formula should return a value of true (1) and initiate another pass. (The system automatically calls the net pay validation formula that you selected on the Country Setup page and adjusts the deduction with the lowest priority.)
The following example shows how a conditional formula called FM ANOTHER PASS might be used to drive looping. It uses the system element, SUB PROCESS PASS, to determine the current loop number. This element is automatically incremented before each pass. GXVRNPVMIN represents the element entered on the Process List - Definition page that determines the minimum net pay.
If ac/NET1 >=var/GXVRNPVMIN and sy/SUB PROCESS PASS > 1 then 0 >> fm/FM ANOTHER PASS? Else 1 >> fm/FM ANOTHER PASS? EndifSUB PROCESS PASS > 1 ensures that the system processes the loop at least once and calculates all of the elements. Without this instruction, the elements in the subprocess section will not be processed in the event that net exceeds the minimum before taking deductions (the usual case).
-
To specify a minimum net pay other than zero, select the minimum net element on the Process List - Definition page.
Guidelines for Creating the Net Pay Validation Formula
Use the Country Setup page to assign a net pay validation formula to each country that intends to use the net pay validation by priority feature. The Always Recalculate option should be activated for the formula. The Process List Manager program resolves the formula once for each deduction in the subprocess section beginning with the second loop.
The formula should return one of these four values:
-
0 = Calculate and perform net pay validation.
Return this value if calculation and net pay validation need to occur during the same iteration. This is the default setting for gross-to-net subprocess sections and, in most cases, will not be used in this formula.
-
1 = Calculate.
This is the default value for the first iteration of the loop. The system resolves the formula beginning with the second iteration.
-
2 = Perform net pay validation.
-
3 = Skip.
If the formula returns any other value, the system generates an error message and puts the segment in error. It also skips the deduction and continues processing with the next element in the section. If no formula exists, the system generates an error message and puts the segment in error. Calculation of the segment continues with a default setting of zero (calculate and perform net pay validation).
Here's a sample formula:
/* This formula controls the processing per deduction during a Net Pay
Validation sub-process */
/*set to calculate*/
1 >> fm/FM CONTR NPV FLOW
/*if Net is greater than the defined minimum and deduction is not
NPV completed we need to calculate*/
IF ac/NET >= var/MINIMUM NET and sy/NPV COMPLETED = 0
Exit
End-If
/*if element is NPV modified already don't use it again; set to skip*/
If sy/NPV COMPLETED = 1
2 >> fm/FM CONTROL NPV FLOW
exit
end-if
/*if the element isn't of lowest priority, calculate*/
if sy/CURR PRIORITY NBR <> sy/LOW PRIORITY NBR then
Exit
End-If
/*set formula to NPV processing*/
3 >> fm/FM CONTROL NPV FLOW
Using System Elements in Subprocess Formulas
You may find the following system elements useful when creating formulas for net pay validation by priority processing.
| System Element | Description |
|---|---|
|
NET AVAILABLE |
Holds the current value of the net accumulator minus the minimum net without the deduction that is currently being processed. It is set by the earning and deduction resolution module during net pay validation of an element. The net pay validation partial formula that calculates a partial deduction can reference this element. |
|
CURR PRIORITY NBR |
Holds the priority number of the deduction that is currently being processed. Set in the deduction program before resolving the net pay validation formula. |
|
LOW PRIORITY NBR |
Holds the lowest relative priority number of deductions that are processed within the subprocess section. The low priority nbr system element represents the priority number that Net Pay Validation is processing in the current subprocess iteration. When the deduction is reduced to zero by the net pay validation process at the end of each subprocess loop, the system sets this element to the next lowest priority (the highest priority number). When there are no deductions with a higher priority, the system sets the element to zero. |
|
SUB PROCESS PASS |
Holds the number of the current loop iteration. The number is set at the beginning of the subprocess loop. |
|
NPV COMPLETED |
(Binary: 1/0, decimal value of 1 or 0.) Set to true (nonzero) if the deduction has already been modified and set to zero in a previous pass of the net pay validation process. All instances of a deduction must be resolved to zero before this element is set to true. |
|
PRIOR DED VAL |
Holds the previously calculated deduction amount. The amount is only available within a net pay validation subprocess while net pay validation processing is being processed for a deduction. The system element can be used in a net pay validation partial formula (within a net pay validation subprocess section only). |
Related Topics