You are on page 1of 11

/

***********************************************************************************
*****
* Header

* Formula Name : AZ_PY_EQUITY_FEEDBACK_FILES_SOP_SAR_RSA_RSU_FF

* Type : HCM Data Loader

* Description : Transformation Formula for Equity Feedback Files - SOP-SAR

* LDG :

* Effective Start Date : 01/01/1951

* Type of Change Developer Organization Date Description

* Initial Build Javier Reyes Northpoint 01/27/2022

* HCMA - 2283 Gaurav Singla AutoZone 04/26/2022

* HCMA - 3081 Sushmitha Muddasani AutoZone 03/13/2023

* HCMA - 3285 Salman Khan AutoZone 04/12/2023


If employee is from MX legislation code then

formula will ignore that employee


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

/* Inputs */
INPUTS ARE OPERATION (text),
LINENO (number),
LINESEQUENCE (number),
POSITION1 (text),
POSITION2 (text),
POSITION3 (text),
POSITION4 (text),
POSITION5 (text),
POSITION6 (text),
POSITION7 (text),
POSITION8 (text),
POSITION9 (text),
POSITION10 (text),
POSITION11 (text),
POSITION12 (text),
POSITION13 (text),
POSITION14 (text),
POSITION15 (text),
LINEREPEATNO (number)
DEFAULT FOR LINEREPEATNO IS 3
DEFAULT FOR LINENO IS 1
DEFAULT FOR LINESEQUENCE IS 1
DEFAULT FOR POSITION1 IS 'NO DATA'
DEFAULT FOR POSITION2 IS 'NO DATA'
DEFAULT FOR POSITION3 IS 'NO DATA'
DEFAULT FOR POSITION4 IS 'NO DATA'
DEFAULT FOR POSITION5 IS 'NO DATA'
DEFAULT FOR POSITION6 IS 'NO DATA'
DEFAULT FOR POSITION7 IS 'NO DATA'
DEFAULT FOR POSITION8 IS 'NO DATA'
DEFAULT FOR POSITION9 IS 'NO DATA'
DEFAULT FOR POSITION10 IS 'NO DATA'
DEFAULT FOR POSITION11 IS 'NO DATA'
DEFAULT FOR POSITION12 IS 'NO DATA'
DEFAULT FOR POSITION13 IS 'NO DATA'
DEFAULT FOR POSITION14 IS 'NO DATA'
DEFAULT FOR POSITION15 IS 'NO DATA'

MESSAGE = 'LINE ERRORS: '


MESSAGELEVEL = 'S'
LINEREPEAT = 'N'
L_ASG_NUMBER = 'XXXX'
L_TRU = ' '
L_FLOW_INSTANCE_ID = ' '
L_BW_Batch_Name = ' '
L_W_Batch_Name = ' '
L_PAYROLL_NAME = ' '
BatchName = ' '
BatchLineSequence = '1'

IF OPERATION='FILETYPE' THEN
OUTPUTVALUE='DELIMITED'
ELSE IF OPERATION='DELIMITER' THEN
OUTPUTVALUE='|'
ELSE IF OPERATION='READ' THEN
OUTPUTVALUE='NONE'
ELSE IF OPERATION = 'NUMBEROFBUSINESSOBJECTS' THEN
(
OUTPUTVALUE = '4'
RETURN OUTPUTVALUE
)
ELSE IF OPERATION = 'METADATALINEINFORMATION' THEN
(

METADATA1[1] = 'BalanceAdjustmentLine'
METADATA1[2] = 'BalanceAdjustmentLine'
METADATA1[3] = 'LegislativeDataGroupName'
METADATA1[4] = 'BatchName'
METADATA1[5] = 'PayrollName'
METADATA1[6] = 'ConsolidationSetName'
METADATA1[7] = 'EffectiveDate'
METADATA1[8] = 'BatchLineSequence'
METADATA1[9] = 'AssignmentNumber'
METADATA1[10] = 'ElementName'
METADATA1[11] = 'TaxReportingUnitName'

METADATA2[1] = 'BalanceAdjustmentLine' /*FileName*/


METADATA2[2] = 'BalanceAdjustmentValue' /*FileDiscriminator*/
METADATA2[3] = 'LegislativeDataGroupName'
METADATA2[4] = 'BatchName'
METADATA2[5] = 'PayrollName'
METADATA2[6] = 'ConsolidationSetName'
METADATA2[7] = 'EffectiveDate'
METADATA2[8] = 'BatchLineSequence'
METADATA2[9] = 'InputValueName'
METADATA2[10] = 'EntryValue'
METADATA2[11] = 'ElementName'

METADATA3[1] = 'BalanceAdjustmentHeader' /*FileName*/ /*Reserved*/


METADATA3[2] = 'BalanceAdjustmentHeader' /*FileDiscriminator*/ /*Reserved*/
METADATA3[3] = 'LegislativeDataGroupName'
METADATA3[4] = 'BatchName'

METADATA4[1] = 'BalanceAdjustmentHeader' /*FileName*/ /*Reserved*/


METADATA4[2] = 'BalanceAdjustmentGroup' /*FileDiscriminator*/ /*Reserved*/
METADATA4[3] = 'LegislativeDataGroupName'
METADATA4[4] = 'BatchName'
METADATA4[5] = 'EffectiveDate'
METADATA4[6] = 'PayrollName'
METADATA4[7] = 'ConsolidationSetName'
METADATA4[8] = 'PrepayFlag'
METADATA4[9] = 'BalanceAdjCostFlag'
RETURN METADATA1,METADATA2,METADATA3,METADATA4
)
ELSE IF OPERATION = 'MAP' THEN
(

/*Batch Related Outputs*/


FileName = 'BalanceAdjustmentLine'
LegislativeDataGroupName = 'US Legislative Data Group'

BatchName = 'SOPSAR_Bi-weekly'||TO_CHAR(get_current_date(),'YYYYMMDD_HHMISS')
PayrollName = ' ' /*Review if all employee have the same name*/
/* HCMA-2283 Start - Change the consolidation group to AZSTOCK */
/* ConsolidationSetName = 'Biweekly' */
ConsolidationSetName = 'AZSTOCK'
/* HCMA-2283 End - Change the consolidation group to AZSTOCK */
BatchLineSequence = POSITION9
AssignmentNumber = ' '
ElementName = ' '
TaxReportingUnitName = ' '
L_TRU = ' '
InputValueName = ' '
EntryValue = ' '
EffectiveDate = POSITION7
L_BW_Batch_Name = ' '
L_W_Batch_Name = ' '

IF NOT WSA_EXISTS('FLOW_INSTANCE_ID') THEN


(
L_FLOW_INSTANCE_ID =GET_VALUE_SET('AZ_PY_GET_FLOW_INSTANCE_ID')
WSA_SET('FLOW_INSTANCE_ID',L_FLOW_INSTANCE_ID)
)
ELSE
(
L_FLOW_INSTANCE_ID = WSA_GET('FLOW_INSTANCE_ID', ';')
)
L_BW_Batch_Name = 'SOPSAR_Bi-weekly'||L_FLOW_INSTANCE_ID
L_W_Batch_Name = 'SOPSAR_Weekly'||L_FLOW_INSTANCE_ID

IF NOT WSA_EXISTS('ASS_NUMBER_'||POSITION2) THEN


(
L_ASG_NBR =GET_VALUE_SET('AZ_PY_ASG_TRU_PAYNAME','|=P_PERSON_NUMBER='''||
POSITION2||''''||'|P_EFFECTIVE_DATE='''||EffectiveDate||'''')
IF IS_TEXT_NULL(L_ASG_NBR) = 'N' THEN
(
AssignmentNumber = POSITION2
L_TRU = 'AutoZoners, LLC'
PayrollName = 'Bi-weekly'
)
ELSE
(
AssignmentNumber = L_ASG_NBR
L_TRU = substr( L_ASG_NBR, instr(L_ASG_NBR,'|')+1)
L_PAYROLL_NAME = substr( L_TRU, instr(L_TRU,'|')+1)
TaxReportingUnitName = L_TRU
PayrollName = L_PAYROLL_NAME
)
WSA_SET('ASS_NUMBER_'||POSITION2,AssignmentNumber)
WSA_SET('TRU_'||POSITION2,L_TRU)
WSA_SET('PAYROLL_NAME_'||POSITION2,PayrollName)
)
ELSE
(
AssignmentNumber = WSA_GET('ASS_NUMBER_'||POSITION2, ';')
TaxReportingUnitName = WSA_GET('TRU_'||POSITION2, ';')
PayrollName = WSA_GET('PAYROLL_NAME_'||POSITION2, ';')
)

IF PayrollName like 'Bi-weekly%' THEN


(
BatchName = L_BW_Batch_Name

)
ELSE
(
BatchName = L_W_Batch_Name
)

ElementName = POSITION4
InputValueName = POSITION5
EntryValue = POSITION6

/* Sushmitha - Change start to adjust taxable, excess and liability balances */

ESS_KEY = GET_FLOW_PARAM_VALUE('CONTENT_ID') || POSITION2

IF ElementName = 'Social Security Employer Tax' And


(
InputValueName = 'Tax Calculated'
or
InputValueName = 'Social Security Employer Taxable'
or
InputValueName = 'Excess Income'
)
THEN
(
/*
Call Value Set to Fetch YTD taxable balance, Fetch YTD wage, Fetch SS
rate
Calculate Taxable..
if YTD wage >= YTD Taxable + POSITION6
then position6 * ss rate
if YTD wage <= YTD Taxable
then 0 -- excess = POSITION6
if YTD wage < YTD Taxable + POSITION6
then (YTD wage - YTD Taxable) * ss rate
excess = POSITION6 - (YTD wage - YTD Taxable)
taxable = (YTD wage - YTD Taxable)
*/

l_bal_name = 'US_SOCIAL_SECURITY_EMPLOYER_TAXABLE'
l_vd_name = 'US_SS_ER_RATE'
l_year = substr(EffectiveDate,1,4)
l_wage_limit = 0
l_vd_wage = 'US_SS_ER_WAGE_LIMIT'

TaxC = 0
ExeC = 0
TinC = 0

l_bal_value = 0

l_cache_value = WSA_GET(ESS_KEY || 'SER' , 0)

IF WSA_EXISTS(ESS_KEY || 'SER' || POSITION6)


THEN
(
TaxC = WSA_GET(ESS_KEY || 'SER' || POSITION6 || 'TC' , 0 )
TinC = WSA_GET(ESS_KEY || 'SER' || POSITION6 || 'TI' , 0 )
ExeC = WSA_GET(ESS_KEY || 'SER' || POSITION6 || 'TE' , 0 )
)
else
(
l_temp = GET_VALUE_SET('AZ_FETCH_BAL_VALUE','|
=P_PER_NUM='''||POSITION2||''''||'|P_YEAR='''||l_year||''''||'|P_BAL_NAME='''||
l_bal_name||''''||'|P_BAL_DIM=''_REL_NOCB_YTD''')

if isnull(l_temp) = 'Y'
then
(
l_bal_value = to_number(l_temp)
l_bal_value = l_cache_value + l_bal_value
)

l_rate = to_number(GET_VALUE_SET('AZ_FETCH_VD_VALUE','|
=P_BASE_VD='''||l_vd_name||''''||'|P_YEAR='''||l_year||''''))
l_wage_limit = to_number(GET_VALUE_SET('AZ_FETCH_VD_VALUE','|
=P_BASE_VD='''||l_vd_wage||''''||'|P_YEAR='''||l_year||''''))

IF l_wage_limit > ( l_bal_value + to_number(POSITION6))


then
(
TaxC = to_number(POSITION6) * l_rate
ExeC = 0
TinC = to_number(POSITION6)
)
ELSE IF l_wage_limit <= l_bal_value
then
(
TaxC = 0
ExeC = to_number(POSITION6)
TinC = 0
)
ELSE IF ((l_bal_value + to_number(POSITION6)) > l_wage_limit) and
(l_wage_limit - l_bal_value) > 0
then
(
TaxC = (l_wage_limit - l_bal_value) * l_rate
ExeC = to_number(POSITION6) - (l_wage_limit - l_bal_value)
TinC = (l_wage_limit - l_bal_value)
)
ELSE
(
TaxC = l_rate
ExeC = to_number(POSITION6)
TinC = l_wage_limit
)

l_cache_value = l_cache_value + TinC


WSA_SET(ESS_KEY || 'SER', l_cache_value)
WSA_SET(ESS_KEY || 'SER' || POSITION6, 'Y' )

WSA_SET(ESS_KEY || 'SER' || POSITION6 || 'TC' , round(TaxC,2) )


WSA_SET(ESS_KEY || 'SER' || POSITION6 || 'TI' , TinC )
WSA_SET(ESS_KEY || 'SER' || POSITION6 || 'TE' , ExeC )

)
IF InputValueName = 'Tax Calculated'
then
(
EntryValue = to_char(round(TaxC,2))
)
ELSE IF InputValueName = 'Social Security Employer Taxable'
then
(
EntryValue = to_char(TinC)
)
ELSE IF InputValueName = 'Excess Income'
then
(
EntryValue = to_char(ExeC)
)
)
ELSE IF ElementName = 'Social Security Employee Tax' And
(
InputValueName = 'Social Security Employee Taxable'
or
InputValueName = 'Excess Income'
)
THEN
(
l_bal_name = 'US_SOCIAL_SECURITY_EMPLOYEE_TAXABLE'
l_vd_name = 'US_SS_EE_RATE'
l_year = substr(EffectiveDate,1,4)
l_wage_limit = 0
l_vd_wage = 'US_SS_EE_WAGE_LIMIT'

ExeC = 0
TinC = 0

l_bal_value = 0

l_cache_value = WSA_GET(ESS_KEY || 'SEE' , 0)

IF WSA_EXISTS(ESS_KEY || 'SEE' || POSITION6)


THEN
(
TinC = WSA_GET(ESS_KEY || 'SEE' || POSITION6 || 'TI' , 0 )
ExeC = WSA_GET(ESS_KEY || 'SEE' || POSITION6 || 'TE' , 0 )
)
else
(
l_temp = GET_VALUE_SET('AZ_FETCH_BAL_VALUE','|
=P_PER_NUM='''||POSITION2||''''||'|P_YEAR='''||l_year||''''||'|P_BAL_NAME='''||
l_bal_name||''''||'|P_BAL_DIM=''_REL_NOCB_YTD''')

if isnull(l_temp) = 'Y'
then
(
l_bal_value = to_number(l_temp)
l_bal_value = l_bal_value + l_cache_value
)

l_rate = to_number(GET_VALUE_SET('AZ_FETCH_VD_VALUE','|
=P_BASE_VD='''||l_vd_name||''''||'|P_YEAR='''||l_year||''''))
l_wage_limit = to_number(GET_VALUE_SET('AZ_FETCH_VD_VALUE','|
=P_BASE_VD='''||l_vd_wage||''''||'|P_YEAR='''||l_year||''''))

IF l_wage_limit > ( l_bal_value + to_number(POSITION6))


then
(
ExeC = 0
TinC = to_number(POSITION6)
)
ELSE IF l_wage_limit <= l_bal_value
then
(
ExeC = to_number(POSITION6)
TinC = 0
)
ELSE IF l_wage_limit < (l_bal_value + to_number(POSITION6)) and
(l_wage_limit - l_bal_value) > 0
then
(
ExeC = to_number(POSITION6) - (l_wage_limit - l_bal_value)
TinC = (l_wage_limit - l_bal_value)
)
ELSE
(
TaxC = 0
ExeC = to_number(POSITION6)

TinC = 0
)
l_cache_value = l_cache_value + TinC
WSA_SET(ESS_KEY || 'SEE', l_cache_value)
WSA_SET(ESS_KEY || 'SEE' || POSITION6, 'Y' )

WSA_SET(ESS_KEY || 'SEE' || POSITION6 || 'TI' , TinC )


WSA_SET(ESS_KEY || 'SEE' || POSITION6 || 'TE' , ExeC )
)

IF InputValueName = 'Social Security Employee Taxable'


then
(
EntryValue = to_char(TinC)
)
ELSE IF InputValueName = 'Excess Income'
then
(
EntryValue = to_char(ExeC)
)
)
ELSE IF ElementName = 'Medicare Employer Tax' And InputValueName = 'Tax
Calculated'
THEN
(
l_vd_name = 'US_MEDICARE_ER_RATE'
l_year = substr(EffectiveDate,1,4)
l_rate = to_number(GET_VALUE_SET('AZ_FETCH_VD_VALUE','|
=P_BASE_VD='''||l_vd_name||''''||'|P_YEAR='''||l_year||''''))
EntryValue = to_char(ROUND((to_number(POSITION6) * l_rate), 2))
)

/* Sushmitha - Change end to adjust taxable, excess and liability balances */

/*HCMA - 3285: Start Code*/

L_LOG = ESS_LOG_WRITE('EffectiveDate: '|| EffectiveDate)

L_MX_BU_CHECK = GET_VALUE_SET('AZ_PY_EQUITY_MX_BU_CHECK_VS','|=P_ASG_NO='''||
AssignmentNumber||''''||'|P_EFFECTIVE_DATE='''||EffectiveDate||'''')

/*HCMA - 3285: End Code*/

IF L_MX_BU_CHECK = 'N' THEN


(
IF( LINEREPEATNO=1 ) THEN
(
LINEREPEAT = 'Y'
/*IF(change <>'UCM') THEN*/
IF (LENGTH(POSITION3)=4 and POSITION8='1') THEN
(
FileDiscriminator = 'BalanceAdjustmentLine'
CreatorType = 'H'
BusinessOperation = 'MERGE'
RETURN
BusinessOperation,FileName,FileDiscriminator,LegislativeDataGroupName,BatchName,Pay
rollName,ConsolidationSetName,EffectiveDate,BatchLineSequence,AssignmentNumber,Elem
entName,TaxReportingUnitName,LINEREPEAT,LINEREPEATNO
)
RETURN LINEREPEAT,LINEREPEATNO

)
/*METADATA|ElementEntryValue|LegislativeDataGroupName|
EffectiveStartDate|EffectiveEndDate|ElementName|MultipleEntryCount|
AssignmentNumber|InputValueName|ScreenEntryValue|EntryType MERGE|ElementEntryValue|
IN Legislative Data Group|2019/12/08|4712/12/31|ABC Element Name|1|E509|test|Grade
Change|E*/
IF( LINEREPEATNO=2 ) THEN
(
/*IF(change <>'UCM') THEN*/
IF (LENGTH(POSITION3)=4) THEN
(
FileDiscriminator = 'BalanceAdjustmentValue'
LINEREPEAT = 'Y'
BusinessOperation = 'MERGE'
RETURN
BusinessOperation,FileDiscriminator,FileName,LegislativeDataGroupName,BatchName,Pay
rollName,ConsolidationSetName,EffectiveDate,BatchLineSequence,InputValueName,EntryV
alue,ElementName,LINEREPEAT,LINEREPEATNO
)

)
IF( LINEREPEATNO=3 and LINESEQUENCE=1 ) THEN
(
/*IF(change <>'UCM') THEN*/
IF (LENGTH(POSITION1)>8) THEN
(
BatchName = L_BW_Batch_Name
PayrollName = 'Bi-weekly'
/* HCMA-2283 Start - Change the consolidation group to
AZSTOCK */
/* ConsolidationSetName = 'Biweekly' */
ConsolidationSetName = 'AZSTOCK'
/* HCMA-2283 End - Change the consolidation group to
AZSTOCK */
FileDiscriminator = 'BalanceAdjustmentHeader'
FileName = 'BalanceAdjustmentHeader'
LINEREPEAT = 'Y'
BusinessOperation = 'MERGE'
RETURN
BusinessOperation,FileName,FileDiscriminator,LegislativeDataGroupName,BatchName,LIN
EREPEAT,LINEREPEATNO
)

)
IF( LINEREPEATNO=4 and LINESEQUENCE=1 ) THEN
(
/*IF(change <>'UCM') THEN*/
IF (LENGTH(POSITION1)>8) THEN
(
BatchName = L_BW_Batch_Name
PayrollName = 'Bi-weekly'
/* HCMA-2283 Start - Change the consolidation group to
AZSTOCK */
/* ConsolidationSetName = 'Biweekly' */
ConsolidationSetName = 'AZSTOCK'
/* HCMA-2283 End - Change the consolidation group to
AZSTOCK */
FileDiscriminator = 'BalanceAdjustmentGroup'
FileName = 'BalanceAdjustmentHeader'
LINEREPEAT = 'Y'
BusinessOperation = 'MERGE'
PrepayFlag = 'N'
BalanceAdjCostFlag='Y'
RETURN
BusinessOperation,FileDiscriminator,FileName,LegislativeDataGroupName,BatchName,Eff
ectiveDate,PayrollName,ConsolidationSetName,PrepayFlag,BalanceAdjCostFlag,LINEREPEA
T,LINEREPEATNO
)

)
IF( LINEREPEATNO=5 and LINESEQUENCE=1 ) THEN
(
/*IF(change <>'UCM') THEN*/
IF (LENGTH(POSITION1)>8) THEN
(
BatchName = L_W_Batch_Name
PayrollName = 'Weekly'
/* HCMA-2283 Start - Change the consolidation group to
AZSTOCK */
/* ConsolidationSetName = 'Weekly' */
ConsolidationSetName = 'AZSTOCK'
/* HCMA-2283 End - Change the consolidation group to
AZSTOCK */
FileDiscriminator = 'BalanceAdjustmentHeader'
FileName = 'BalanceAdjustmentHeader'
LINEREPEAT = 'Y'
BusinessOperation = 'MERGE'
RETURN
BusinessOperation,FileName,FileDiscriminator,LegislativeDataGroupName,BatchName,LIN
EREPEAT,LINEREPEATNO
)

)
IF( LINEREPEATNO=6 and LINESEQUENCE=1 ) THEN
(
/*IF(change <>'UCM') THEN*/
IF (LENGTH(POSITION1)>8) THEN
(
BatchName = L_W_Batch_Name
PayrollName = 'Weekly'
/* HCMA-2283 Start - Change the consolidation group to
AZSTOCK */
/* ConsolidationSetName = 'Weekly' */
ConsolidationSetName = 'AZSTOCK'
/* HCMA-2283 End - Change the consolidation group to
AZSTOCK */
FileDiscriminator = 'BalanceAdjustmentGroup'
FileName = 'BalanceAdjustmentHeader'
LINEREPEAT = 'N'
BusinessOperation = 'MERGE'
PrepayFlag = 'N'
BalanceAdjCostFlag='Y'
RETURN
BusinessOperation,FileDiscriminator,FileName,LegislativeDataGroupName,BatchName,Eff
ectiveDate,PayrollName,ConsolidationSetName,PrepayFlag,BalanceAdjCostFlag,LINEREPEA
T,LINEREPEATNO
)

)
)
)
ELSE OUTPUTVALUE = 'NONE'

RETURN OUTPUTVALUE

You might also like