Thursday, 19 December 2019

Per Periods of Service DFF and Assignment EIT

To Navigate to the Per_Periods_of_service DFF in cloud go to the task Manage Employment Descriptive Flexfields from Setup and Maintaenance.

Select the PER_PPS_DF
Click Edit symbol and make the required changes.












For Assignment EIT, navigate to Manage Employment Extensible Flexfields Task in first screenshot above.

Tuesday, 10 December 2019

Person Duplicate Check while loading data through HDL/HSDL

While loading worker data through HDL, we can ensure that the person duplicate check is done,i.e. the same person does not exist in the system already, by using the PersonDuplicateCheck attribute of the Worker object.

If at the enterprise level we have a duplicate check enabled that will anyways be checked while loading the data for all the records, but if the duplicate person check is set to None at enterprise level, using this attribute we can do the duplicate person check at the record level in HDL/HSDL.

Another important point to remember is to ensure that the formatting of the field being validated for duplication should be maintained, otherwise the validation may fail.



Please see the below note from Doc ID 2340648.1

NOTE: The enterprise option Person Creation Service Duplicate Check controls whether checks for duplicate person records occur by default when you load person records in bulk. If you exclude the PersonDuplicateCheck attribute of the Worker object, then the current setting of Person Creation Service Duplicate Check applies. If you include the PersonDuplicateCheck attribute, then the current setting of Person Creation Service Duplicate Check is ignored for the relevant person record.

Customer must include any formatting characters in the value that you specify on the NationalIdentifierNumber attribute of the Person National Identifier component. For example, to load the US social security number 123-45-6789, you must include the hyphens.
Don't specify the number as 123456789. If you omit the formatting, then duplicate record checks are likely to fail.

Wednesday, 6 November 2019

Using Table Value set with parameters in fast formula to perform some validations

I have encountered a requirement to stop an element being processed more than once in a payroll. This could have been achieved in case the correct configuration was done at element creation time. But the check box to process the element once was not checked.

So to resolve this issue we decided to write a skip rule, so that the second result which gets processed will be skipped. So the next hurdle was how do I check if a result is already processed for the element.

To resolve this I found out that a table value set can be created and would be parameterized and would be called from the fast formula to return a value(in this case Y or N depending if the element got processed at least once). The value set can be called using the function get_value_set in the fast formula.

Sample:
---------
Source:
http://www.oracleport.com


Thursday, 5 September 2019

Payroll Access to HR Formula Type - Accessing HR Database Items in Payroll Fast Formulas

In Cloud Payroll Fast Formulas, some of the database items related to HR are not accessible. To overcome this Oracle has provided a type of formula - Payroll Access to HR Formula Type, with the help of which we can fetch the HR DBIs.

The following contexts are available to all formulas of this type:

  • HR_RELATIONSHIP_ID
  • HR_TERM_ID
  • GRADE_RATE_ID
  • LEGAL_EMPLOYER_ID
  • AREA1
  • LOCATION_ID
  • HR_ASSIGNMENT_ID
  • PERSON_ID
  • JOB_ID
  • GRADE_ID
  • ADDRESS_ID
  • ADDRESS_TYPE
  • ACCRUAL_PLAN_ID
  • EFFECTIVE_DATE
  • LEGISLATIVE_DATA_GROUP_ID
  • ORGANIZATION_ID

Input Variables

The following input variables are available to formulas of this type.
Enter DataData Type
ACTUAL_END_DATE
Date
ACTUAL_START_DATE
Date
EFF_DATE
Date
END_DATE
Date
ENTRY_LEVEL
Text
HR_ASSG_ID
Number
HR_ASSIGN_ID
Number
HR_EFFECTIVE_DATE
Date
HR_ENTRY_LEVEL
Text
HR_ID
Number
HR_ID2
Number
HR_TRM_ID
Number
MODE
Text
START_DATE
Date
UNIT_TYPE
Text


Return Values

The following return values are available to formulas of this type:
Return ValueData TypeDescription
L_SALARY
Number
Salary ID of employee
L_SALARY_BASIS_CODE
Text
Salary basis of employee
L_UNITS
Number
Number of units worked
X_OUTPUT
Date
Output date
X_OUTPUT
Text
Output text
X_OUTPUT_NUMBER
Number
Output number
X_OUTPUT_TEXT
Text
Output text



Sample Formula
--------------------------
The following sample Oracle Payroll formula returns the salary amount for employees based on their full-time equivalent (FTE). The full-time equivalent is an HR database item. Since HR database items are not accessible through Oracle Payroll formulas, you must create a Payroll Access to HR formula to retrieve the database item, and then call the formula that retrieves the database item from the formula that returns the salary amount.

/***************************************************************
FORMULA TYPE: Payroll Access to HR
DESCRIPTION: Retrieve FTE DBI
***************************************************************/
/* Default Statement Section */
Default for PER_ASG_FTE_VALUE is 1/
* Calculation Section */
HR_FTE = PER_ASG_FTE_VALUE
/* Return Statement Section */
Return HR_FTE


/*************************************************************
FORMULA NAME: GB Salary by FTE 
FORMULA TYPE: Oracle Payroll 
DESCRIPTION: Calculate the salary amount for OK employees based on their FTE.
**************************************************************/
/* Alias Statement Section */
ALIAS ANNUAL_SALARY_UK_AMOUNT_ASG_ENTRY_VALUE AS UK_ASG_SAL
/* Default Statement Section */
Default for ASG_HR_ASG_ID is 1
Default for UK_ASG_SAL is 0
Default for Salary_UK is 0
/* Calculation Section */
Salary_UK = UK_ASG_SAL
SET_INPUT('HR_ASSIGNMENT_ID', ASG_HR_ASG_ID)
EXECUTE('Call HR FTE DBI')
FTE = GET_OUTPUT('HR_FTE',1)
l_amount = round((FTE * Salary_UK),2)
Message = 'Salary Value is'||to_Char(l_Amount)
/* Return Statement Section */
RETURN l_Amount,Message

Monday, 17 June 2019

Changing the Payslip display name of an element in Oracle Cloud Payroll

We had got a requirement to change the display name of a particular element on the payslip in Cloud. We initially tried to do it by changing the element reporting name, but it did not work out. When digging more deep into it we found out that the payslip displays the balance reporting name, the balance which gets created in cloud when the element is created.

Once the reporting name of the Balance was changed, the payslip display name also got changed.

Wednesday, 22 May 2019

Too many matching records found. Specify additional criteria to limit the number of records.

If you get this issue when creating an implementation project then all u have to do is Save and Close as in below screenshot.

Too many matching records found. Specify additional criteria to limit the number of records



Tuesday, 21 May 2019

Query to fetch Legal Employer and Payroll of an employee in Oracle Cloud HCM

PER_LEGAL_EMPLOYERS consists the Legal Employer details

select papf.person_number,
ppnf.full_name,
PAP.PAYROLL_NAME,
PAP.PAYROLL_NAME,
PLE.NAME LE_NAME
from
per_all_people_f papf,
per_person_names_f ppnf,
per_all_assignments_f paaf,
PER_PERIODS_OF_SERVICE ppos,
pay_payroll_assignments ppasg,
PAY_ASSIGNED_PAYROLLS_DN papd,
pay_all_payrolls_f pap,
per_legal_employers ple
where 1=1
and papf.person_id = paaf.person_id
and papf.person_id = ppnf.person_id
and papf.person_id = ppos.person_id
and paaf.period_of_service_id = ppos.period_of_service_id
and paaf.assignment_id = ppasg.hr_assignment_id(+)
--and paaf.person_id = ppasg.person_id
and ppasg.payroll_term_id = papd.payroll_term_id(+)
and papd.payroll_id = pap.payroll_id(+)
and paaf.legal_entity_id = ple.organization_id
and ple.status = 'A'
and paaf.PRIMARY_FLAG ='Y'
--and paaf.ASSIGNMENT_TYPE = 'E'
AND PPOS.date_start = (SELECT max(date_start) FROM PER_PERIODS_OF_SERVICE PPOS_IN WHERE PPOS_IN.person_id = PAPF.person_id)
and trunc(sysdate) between papf.effective_start_date and papf.effective_end_date
and trunc(sysdate) between ppnf.effective_start_date and ppnf.effective_end_date
and trunc(sysdate) between paaf.effective_start_date and paaf.effective_end_date
and trunc(sysdate) between ppasg.start_date(+) and ppasg.end_date(+)
and trunc(sysdate) between papd.start_date(+) and papd.end_date(+)
and trunc(sysdate) between pap.effective_start_date(+) and pap.effective_end_date(+)
and trunc(sysdate) between ple.effective_start_date and ple.effective_end_date
and ppnf.name_type='GLOBAL'--'US'
and paaf.assignment_type IN ('E','C','P','N')
and papf.person_number='21029'

Query to fetch absences data in Oracle HCM Cloud

Absences related tables in cloud are anc_per_absence_entries and ANC_ABSENCE_TYPES_F.



select  per.person_number,PER_ABSENCE_ENTRY_ID ,abs.absence_type_id,
            abs.name absence_type,
            to_char(apae.start_date,'DD-MON-YYYY','NLS_DATE_LANGUAGE = AMERICAN')  start_date,
            to_char(apae.end_date,'DD-MON-YYYY','NLS_DATE_LANGUAGE = AMERICAN')  end_date,
            duration
from ANC_PER_ABS_ENTRIES apae,
         PER_PERIODS_OF_SERVICE pps,
         PER_ALL_PEOPLE_F per,
   ANC_ABSENCE_TYPES_VL abs
where apae.period_of_service_id = pps.period_of_Service_id
    and apae.absence_type_id = abs.absence_type_id
    and pps.person_id = per.person_id
 and trunc(sysdate) between abs.effective_start_date and abs.effective_end_Date
 and trunc(sysdate) between per.effective_start_date and per.effective_end_Date
and per.person_number = '11111111'
 order by per.person_number

Query to get Employee Bank Account Details tagged to personal payment method in Oracle HCM Cloud

iby_ext_bank_accounts_v is the view which stores the bank account details and linked to a personal payment method of the employee. The column to be joined is primary_acct_owner_party_id of iby_ext_bank_accounts_v with party_id column of hz_parties. The column orig_system_reference of hz_parties is then joined with person_id of per_all_people_f.


SELECT papf.person_number
  ,pprd.payroll_relationship_number
  ,paaf.assignment_number
  ,iebc.EXT_BANK_ACCOUNT_ID
  ,iebc.primary_acct_owner_name
  ,iebc.bank_account_name
  ,iebc.bank_account_number
  ,iebc.bank_account_type
  ,iebc.bank_name
  ,iebc.bank_number
  ,iebc.bank_branch_name
  ,iebc.branch_number
  ,iebc.country_code
  ,iebc.CHECK_DIGITS
  , PPPM.PERCENTAGE
  , PPPM.PRIORITY
  , POPM.ORG_PAYMENT_METHOD_NAME
  , PPPM.amount
  FROM hz_parties hz_per,
       per_all_people_f papf,
   iby_ext_bank_accounts_v iebc,
   per_all_assignments_f paaf,
   per_periods_of_service ppos,
   pay_pay_relationships_dn pprd,
   pay_payroll_assignments ppasg,
   PAY_PERSONAL_PAYMENT_METHODS_F PPPM,
   PAY_ORG_PAY_METHODS_VL POPM
 WHERE hz_per.orig_system_reference = papf.person_id
   AND hz_per.party_id = iebc.primary_acct_owner_party_id
   AND papf.person_id = pprd.person_id
   and paaf.assignment_id = ppasg.hr_assignment_id
   AND ppos.date_start=(SELECT MAX(ppos1.date_start)
   FROM per_periods_of_service  ppos1
  WHERE ppos1.person_id=ppos.person_id
    --AND ppos1.period_of_service_id = ppos.period_of_service_id
)
  AND ppos.period_of_service_id = paaf.period_of_service_id
  AND paaf.person_id = papf.person_id
  AND paaf.assignment_type IN ('C','N','E')
  AND paaf.primary_flag = 'Y'
  AND NVL(PPOS.actual_termination_date,trunc(sysdate)) BETWEEN paaf.effective_start_date AND paaf.effective_end_date
  AND NVL(PPOS.actual_termination_date,trunc(sysdate)) BETWEEN papf.effective_start_date AND papf.effective_end_date
  and NVL(PPOS.actual_termination_date,trunc(sysdate)) between ppasg.start_date and ppasg.end_date
  --AND TRUNC(SYSDATE) <= NVL(ppos.actual_termination_date, TO_DATE('12314712','MMDDYYYY'))   
  AND iebc.country_code = 'GB'
  AND iebc.BANK_ACCOUNT_ID = PPPM.BANK_ACCOUNT_ID
  AND pprd.payroll_relationship_id = pppm.payroll_relationship_id
  and pppm.PAYROLL_RELATIONSHIP_ID = ppasg.PAYROLL_RELATIONSHIP_ID----------------------------------most important
  AND POPM.ORG_PAYMENT_METHOD_ID = PPPM.ORG_PAYMENT_METHOD_ID
  AND TRUNC(SYSDATE) BETWEEN PPPM.effective_start_date AND PPPM.effective_end_date
  AND TRUNC(SYSDATE) BETWEEN POPM.effective_start_date AND POPM.effective_end_date 
ORDER BY papf.person_number


Tuesday, 23 April 2019

Cloud Table to find the Last Standard Process Date, Last Standard Earning Date, Final Close of a Person

PAY_ASSIGNED_PAYROLLS_DN is the table in cloud which stores the Last Standard Process Date, Last Standard Earning Date, Final Close columns in Oracle HCM Cloud.

It can be joined with PAY_PAYROLL_ASSIGNMENTS using the column PAYROLL_TERM_ID.

PAY_PAYROLL_ASSIGNMENTS can be joined with PER_ALL_ASSIGNMENTS_F with the column hr_assignment_id.

Monday, 21 January 2019

FRM-41316 Cannot set insert allowed property of disabled item

FRM-41316 Cannot set insert allowed property of disabled item

I faced this issue when I had disabled a field on the Personal Payment Methods Page and I tried to delete a payment method.

The initial personalization which caused the issue looks like below.


The personalization done to resolve the error.