Login
Register

Home

Trainings

Fusion Blog

EBS Blog

Authors

CONTACT US

Fusion PayRoll
  • Register

Oracle Gold Partners, our very popular training packages, training schedule is listed here
Designed by Five Star Rated Oracle Press Authors & Oracle ACE's.

webinar new

Search Courses

 

Introduction

In this article we would try to understand what a fast formula is. Why is it named such way. Is it about some formula ( what kind of formula) and why is it called Fast ( is it something which is being tracked against time).

The answers to all the above question is ‘I don’t Know’.

Not sure why it is called fast formula it should be rather named as ‘Custom Code on Application UI’ or may be ‘Application Custom Code’.

So basically a Fast Formula or  Application Custom Code ( if you may like to call it that way) is a way which allows you to customize a delivered / seeded solution to meet specific business needs.

Types of Fast Formulas

Most of the times Fast Formulas are used for HCM related modules ( no comments on whether they can be used for other modules that would be a separate topic and would be discussed later) some of the primary ones being :

Functional Areas

  1. Payroll

  2. Absence Management

Technical Areas

  1. Inbound Integration ( Typical Example being Custom Logic to generate Person Number )

  2. Outbound Integration ( HCM Extracts)

In this article we would discuss primarily about Fast Formulas associated with Fusion Applications Absence Management.

While there are multiple types of Fast Formulas in Absence Management some of the ones we are trying to discuss here being:

  1. Global Absence Accrual

  2. Global Absence Accrual Matrix

  3. Global Absence Entry Validation

  4. Global Absence Partial Period Accrual Rate

  5. Global Absence Type Duration

  6. Global Absence Vesting Period

  7. Participation and Rate Eligibility Formula

Global Absence Accrual Matrix

Lets start with describing what do we mean by Global Absence Accrual Matrix. Truly speaking the name could very well have been Absence Accrual Matrix. For now lets say its Global Absence Accrual Matrix and not Absence Accrual Matrix ( for reasons not known to me ).

Absence means lack of presence and Accrual means method of accumulating. So Absence Accrual becomes ‘Method of Accumulating Lack of Presence’ or in simpler words ‘Method of Accumulating Absences’.

Matrix in simpler terms means ‘Multiple Categories / Bands ’.

Hence Global Absence Accrual Matrix will stand for Method of Accumulating Absences for Multiple Combinations / Categories / Bands. So when we have different Accrual Rules for Different Bands we need to use Accrual Matrix Formula.

Each organization may have different ways of accumulating absences like:

  1. Allocate All Leaves on the First Day of the Year ( Frontloaded Accruals)

  2. Allocate Leaves on regular intervals, say first day of month (Incremental Accrual).

A Sample Example

In this example the customer has a requirement where-in the customer wants to have Annual Absence Accrual based on different Bands (categories). The different Accrual Bands are classified based upon the length of Service ( SYSDATE – DATE_OF_HIRE) in Years . So the First Accrual band is for 3 years of LOS (length of Service) and corresponding Accrual Value is 15. Second band is for 6 years of LOS (lengths of Service) with accrual value of 18 and lastly Band 3 for all Individuals having LOS greater than 6, the accrual value is 21.

/*******************************************************************

FORMULA NAME: XX_ANC_XX_ACCMAT_Annual

FORMULA TYPE: Global Absence Accrual Matrix

DESCRIPTION: This sample formula will find the weighted average of the Accrual value based on the number of the days the employee was eligible in a particular band. For example, I an employee has changed from Band 1 to Band 2 on 03-Mar-2014 and accrual value for Band 1 and Band 2 is 100 and 200 respectively. The formula will return:

accrual =

(100*(number of days employee in Band1) + 200*(number of days Employee in Band 2))/365

Change History:

Name Date Comments

--------------------------------------------------------------------------------------------------------------------

Ashley Hardy 12-May-2015 Initial Version

--------------------------------------------------------------------------------------------------------------------

***********************************************************************/

/*=========== DATABASE ITEM DEFAULTS BEGIN =====================*/

DEFAULT for PER_ASG_REL_ORIGINAL_DATE_OF_HIRE is '4712/12/31 00:00:00' (date)

Default for IV_BAND_CHG_DT1 is '1951/01/01 00:00' (date)

Default for IV_BAND_CHG_DT2 is '1951/01/01 00:00' (date)

DEFAULT for IV_ACCRUALPERIODSTARTDATE is '4712/12/31 00:00:00' (date)

DEFAULT for IV_ACCRUALPERIODENDDATE is '4712/12/31 00:00:00' (date)

Default for IV_BAND_CHG_BEFVAL1 is 15

Default for IV_BAND_CHG_AFTVAL1 is 18

Default for IV_BAND_CHG_AFTVAL2 is 21

DEFAULT FOR PER_ASG_PERSON_NUMBER IS 'X'

Default for IV_CEILING is 0

Default for IV_CARRYOVER is 0

Inputs are IV_ACCRUAL,IV_BAND_CHG_DT1,IV_BAND_CHG_DT2,IV_BAND_CHG_BEFVAL1,IV_BAND_CHG_AFTVAL1,IV_BAND_CHG_BEFVAL2,IV_BAND_CHG_AFTVAL2,IV_CARRYOVER,IV_CEILING,IV_ACCRUALPERIODSTARTDATE,IV_ACCRUALPERIODENDDATE

/*=========== DATABASE ITEM DEFAULTS ENDS======================*/

/*================ FORMULA SECTION BEGIN =======================*/

ld_effective_date = GET_CONTEXT(EFFECTIVE_DATE,'4712/12/31 00:00:00' (date))

ld_term_start_date = TO_DATE('01-01-'||TO_CHAR(ld_effective_date, 'rrrr'),'dd-mm-rrrr')

ld_term_end_date = TO_DATE('31-12-'||TO_CHAR(ld_effective_date, 'rrrr'),'dd-mm-rrrr')

ld_band1_end_date = ADD_YEARS(PER_ASG_REL_ORIGINAL_DATE_OF_HIRE,3)

ld_band2_end_date = ADD_YEARS(PER_ASG_REL_ORIGINAL_DATE_OF_HIRE,6)

accrual = IV_ACCRUAL

l_log = ess_log_write('***********************START********************************')

l_log = ess_log_write('PERSON_NUMBER : '|| PER_ASG_PERSON_NUMBER)

l_log = ess_log_write('ld_effective_date : '|| TO_CHAR(ld_effective_date,'DD-MM-YYYY'))

l_log = ess_log_write('ld_band1_end_date : '|| TO_CHAR(ld_band1_end_date,'DD-MM-YYYY'))

l_log = ess_log_write('ld_band2_end_date : '|| TO_CHAR(ld_band2_end_date,'DD-MM-YYYY'))

l_log = ess_log_write('IV_BAND_CHG_BEFVAL1 : '|| TO_CHAR(IV_BAND_CHG_BEFVAL1))

l_log = ess_log_write('IV_BAND_CHG_AFTVAL1 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL1))

l_log = ess_log_write('IV_BAND_CHG_AFTVAL2 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL2))

l_log = ess_log_write('Initial Accrual : '|| TO_CHAR(IV_ACCRUAL))

l_log = ess_log_write('Accrual Period Start Date : '|| TO_CHAR(IV_ACCRUALPERIODSTARTDATE,'DD-MON-RRRR'))

l_log = ess_log_write('Accrual Period End Date : '|| TO_CHAR(IV_ACCRUALPERIODENDDATE,'DD-MON-RRRR'))

l_log = ess_log_write('***********************END********************************')

IF (TO_CHAR(ld_effective_date,'YYYY') = TO_CHAR(ld_band1_end_date,'YYYY')) /* (TO_CHAR(ld_effective_date,'YYYY') = TO_CHAR(IV_BAND_CHG_DT1,'YYYY')) */

THEN

(

l_log = ess_log_write('Within Band 1')

l_no_of_ds1 = DAYS_BETWEEN(ld_band1_end_date,ld_term_start_date) + 1

l_log = ess_log_write('l_no_of_ds1 : '|| TO_CHAR(l_no_of_ds1))

l_no_of_ds2 = DAYS_BETWEEN(ld_term_end_date,ld_band1_end_date) + 1

l_log = ess_log_write('l_no_of_ds2 : '|| TO_CHAR(l_no_of_ds2))

l_no_of_ds3 = 0

l_log = ess_log_write('IV_BAND_CHG_BEFVAL1 : '|| TO_CHAR(IV_BAND_CHG_BEFVAL1))

l_log = ess_log_write('IV_BAND_CHG_AFTVAL1 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL1))

l_log = ess_log_write('IV_BAND_CHG_AFTVAL2 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL2))

accrual=(l_no_of_ds1*IV_BAND_CHG_BEFVAL1 + l_no_of_ds2 * IV_BAND_CHG_AFTVAL1 + l_no_of_ds3*IV_BAND_CHG_AFTVAL2)/ 365

l_log = ess_log_write('Accrual : '|| TO_CHAR(accrual))

)

IF (TO_CHAR(ld_effective_date,'YYYY') = TO_CHAR(ld_band2_end_date,'YYYY')) /*(TO_CHAR(ld_effective_date,'YYYY') = TO_CHAR(IV_BAND_CHG_DT2,'YYYY'))*/

THEN

(

l_log = ess_log_write('Within Band 2')

l_no_of_ds1 = 0

l_no_of_ds2 = DAYS_BETWEEN(ld_band2_end_date,ld_term_start_date) + 1

l_log = ess_log_write('l_no_of_ds2 : '|| TO_CHAR(l_no_of_ds2))

l_no_of_ds3 = DAYS_BETWEEN(ld_term_end_date,ld_band2_end_date) + 1

l_log = ess_log_write('l_no_of_ds3 : '|| TO_CHAR(l_no_of_ds3))

l_log = ess_log_write('IV_BAND_CHG_BEFVAL1 : '|| TO_CHAR(IV_BAND_CHG_BEFVAL1))

l_log = ess_log_write('IV_BAND_CHG_AFTVAL1 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL1))

l_log = ess_log_write('IV_BAND_CHG_AFTVAL2 : '|| TO_CHAR(IV_BAND_CHG_AFTVAL2))

accrual=(l_no_of_ds1*IV_BAND_CHG_BEFVAL1 + l_no_of_ds2 * IV_BAND_CHG_AFTVAL1 + l_no_of_ds3*IV_BAND_CHG_AFTVAL2)/ 365

l_log = ess_log_write('Accrual : '|| TO_CHAR(accrual))

)

l_log = ess_log_write(' Prorated Accrual considered : '|| TO_CHAR(accrual))

floored_accrual = FLOOR(accrual)

decimal_accrual = accrual - floored_accrual

IF (decimal_accrual < 0.5 )

THEN

accrual = floored_accrual

IF (decimal_accrual >= 0.5)

THEN

accrual = floored_accrual + 1

l_log = ess_log_write(' Final Accrual considered : '|| TO_CHAR(accrual))

carryover = IV_CARRYOVER

ceiling = IV_CEILING

l_log = ess_log_write(' Carryover : '|| TO_CHAR(IV_CARRYOVER))

l_log = ess_log_write(' Ceiling : '|| TO_CHAR(IV_CEILING))

return accrual,ceiling,carryover

We would discuss more in details about the other Absence Fast Formula in other article.

Till then bye, do try this out.


Ashish Harbhajanka

Comments   

0 #1 RUAY 2022-06-28 11:15
Wonderful site you have here but I was wanting to know if you knew of any
community forums that cover the same topics discussed here?
I'd really like to be a part of community where I can get feed-back from other
knowledgeable people that share the same interest. If you have any recommendations , please let me
know. Bless you!

My web blog :: RUAY: https://www.opendesktop.org/u/ruayshuay123
Quote

Add comment


Security code
Refresh

About the Author

Ashish Harbhajanka

 

Oracle Fusion HCM Techno Functional Consultant with overall 10 years of Experience in software industry with 5 years in EBS HRMS and rest 5 in Fusion HCM.

My areas of intesrest in Fusion HCM include :

a) Inbound Outbound Integration using FBL/HDL or BIP/HCM Extracts.

b) Fast Formula

c) BIP Reports

d) OTBI Reports

e) RESTFUL API / Web Service Call

f) Functional Setup

g) End to End Testing

h) Regression Testing

i) Preparing COnfiguration Workbooks

j) Creating Speed Solutions

k) Preparing User Guides

l) UPK

........

Search Trainings

Fully verifiable testimonials

Apps2Fusion - Event List

<<  Apr 2024  >>
 Mon  Tue  Wed  Thu  Fri  Sat  Sun 
  1  2  3  4  5  6  7
  8  91011121314
15161718192021
22232425262728
2930     

Enquire For Training

Fusion Training Packages

Get Email Updates


Powered by Google FeedBurner