Professional Documents
Culture Documents
BDPYMST 6
BDPYMST 6
BDPYMST 6
! Report Name:BDPYMST.SQR !
!----------------------------------------------------------------------------!
! Description:Payroll Master Report:Employee Payroll Element Details !
! for a Calendar Group ID !
!****************************************************************************!
! !
! History Log !
!----------------------------------------------------------------------------!
! Mod-Date | Author | Purpose | Version !
!----------------------------------------------------------------------------!
! 01-MAR-2009 | L&T Infotech Ltd | Original Release | 1.0 !
!----------------------------------------------------------------------------!
! 30-JUN-2009 | L&T Infotech Ltd | Net amount rounded off | 1.1 !
!----------------------------------------------------------------------------!
!----------------------------------------------------------------------------!
! 01-SEP-2009 | L&T Infotech Ltd | Management Incentive should not be shown|
1.2!
! Termination date modified !
!----------------------------------------------------------------------------!
!----------------------------------------------------------------------------!
! 15-SEP-2009 | L&T Infotech Ltd | Modified to print PF number from PF |
1.3!
! Enrollment record GPIN_PF_ENROLL as prior!
! it was picked from PERS_NID and had the !
! format issue !
!----------------------------------------------------------------------------!
#include 'setenv.sqc' !Set environment
#include 'number.sqc' !Routines to format numbers
#include 'reset.sqc' !Reset Printer Procedure
#include 'curdttim.sqc' !Get Current Date Time
#include 'datemath.sqc' !SQR date arithmetic procedures
#include 'timemath.sqc' !SQR time arithmetic procedures
#include 'datetime.sqc' !Routines for date and time formatting
#include 'prcsapi.sqc' !Update Process Request API
#include 'prcsdef.sqc' !Routines to Update Run Status
#include 'stdapi.sqc' !Process Scheduler API
#define max 100
!***************************************************************************!
BEGIN-SETUP
create-array
name=header size={max}
field=pin:number:10
create-array
name=data size={max}
field=pin:number:10 field=amount:number:30
END-SETUP
!***************************************************************************!
BEGIN-PROGRAM
do Init-DateTime
do Init-Number
do Get-Current-DateTime
do Stdapi-Init
do Process-Main
Do Reset-Variables
do Stdapi-Term
END-PROGRAM
!***************************************************************************!
! Main Process for Procedure Calls
!***************************************************************************!
BEGIN-PROCEDURE Process-Main
Do Get-Input-Values
Let $RunDate = datenow()
Let $Execution_date = EDIT($rundate,'ddmmyyyy')
Show 'RunDate: ' $RunDate
Do Open-file
Do Reset-Variables
Do Print-Header
Do User_Accnt_Loc
if $input_acc_loc<>''
Do Check_Access
else
let #user_access=2
end-if
IF #user_access=1 or #user_access=2
Do Fetch_Employees
else
SHOW 'No Access to Accounting Location selected'
end-if
Do Reset-Variables
Close 1
END-PROCEDURE !Process-Main
!***************************************************************************!
! Open File
!***************************************************************************!
BEGIN-PROCEDURE Open-File
BEGIN-SELECT
PRCSOUTPUTDIR &prcsoutputdir
LET $prcsoutputdir = &prcsoutputdir
let $prcsoutputdir = LTRIM(RTRIM($prcsoutputdir,' '),' ')
show 'Output Directory Path:' $prcsoutputdir
from PSPRCSPARMS
where PRCSINSTANCE= $prcs_process_instance
END-SELECT
!***************************************************************************!
! Run Control Input Values Fetch
!***************************************************************************!
BEGIN-PROCEDURE Get-Input-Values
BEGIN-SELECT
LTRIM(RTRIM(INPUT.FROMDATE)) &period_bgn_dt
Let $period_bgn_dt = &period_bgn_dt
LTRIM(RTRIM(INPUT.DATE)) &period_end_dt
Let $period_end_dt = &period_end_dt
INPUT.DATE &check_dt
LTRIM(RTRIM(INPUT.GRADE)) &input_grade
Let $input_grade = &input_grade
SHOW 'Input Grade:'$input_grade
LTRIM(RTRIM(INPUT.BD_ACC_LOC)) &input_acc_loc
Let $input_acc_loc = &input_acc_loc
SHOW 'Input Accounting Location:'$input_acc_loc
END-PROCEDURE !Get-Input-Values
!************************************************************************!
! Print Header Row !
!************************************************************************!
BEGIN-PROCEDURE Print-Header
BEGIN-SELECT
LTRIM(RTRIM(INPUT.FROMDATE)) &perid_bgin_dt
Let $perid_bgin_dt = &perid_bgin_dt
!Let
#Month_Check=TO_NUMBER(DATETOSTR(STRTODATE(EDIT($period_bgn_dt,'mmddyyyy')),'MMM'))
Let $Month_Check = substr($perid_bgin_dt,0,3)
Let $Year_Check = substr($perid_bgin_dt,7,12)
Let $Run_Year = substr($Year_Check,0,5)
Let $header = 'Payroll Salary Register for the month of ' || $Month_Check || ',' ||
$Run_Year
Let $header1 = 'Report run date time ' || $RunDate
Let $header_str = 'Employee Code' || ',' || 'Last Name'|| ',' || 'First Name'|| ','
|| 'Grade'|| ',' || 'Accounting Location'|| ','|| 'Location'|| ',' || 'State'||
','|| 'Region'|| ','|| 'Paygroup'|| ','|| 'Department'|| ',' || 'PF No'|| ','
||'UAN No'|| ','|| 'ESIC No'|| ','||'PAN'||',' || 'Bank Account Number'|| ',' ||
'Account Name'|| ',' || 'IFSC CODE'|| ',' ||'Hire Date'|| ',' || 'Termination Date'
Let #a = 1
let #headerrows=0
BEGIN-SELECT
distinct (RST.PIN_NUM) &headerpin
PIN.PIN_CODE &headerpincode ! added on 01-SEP-09-start-do
not process for management inc.
Let $headerpincode = &headerpincode
!SHOW 'headerpincode: ' $headerpincode
IF $headerpincode <> 'MGMT INC IND'
Let #headerpin = &headerpin
Let header.pin(#a) = #headerpin
Let #a = #a +1
Let #headerrows=#a -1
LTRIM(RTRIM(PIN.DESCR )) &headerdescr
DTL.SEQ_NUM5 &seqnum
END-SELECT
Let $header_str = $header_str || ',' || 'Net'|| ',' || 'Gross'
write 1 from $header_str
END-PROCEDURE !Print-Header
!************************************************************************!
! Compare Input Accounting Location and !
!************************************************************************!
BEGIN-PROCEDURE Check_Access
Let #user_access=0
BEGIN-SELECT DISTINCT
ACC.BD_ACC_LOC &acc_loc_access
let #user_access=1
END-PROCEDURE !Check_Access
!************************************************************************!
! Fetch User Accounting Location to Apply Accounting Location Security !
!************************************************************************!
BEGIN-PROCEDURE User_Accnt_Loc
let $useraccnt = '('
BEGIN-SELECT DISTINCT
ACC.BD_ACC_LOC &acc_loc
let $acc_loc=&acc_loc
Let $useraccnt = $useraccnt||''''||&acc_loc||''''||','
Let $useraccnt=rtrim($useraccnt,',')
Let $useraccnt=$useraccnt||')'
show 'User has access to Accounting Locations= ' $useraccnt
END-PROCEDURE !User_Accnt_Loc
!************************************************************************!
! Fetch Employees Resolved for the Calendar Group !
!************************************************************************!
BEGIN-PROCEDURE Fetch_Employees
let #count = 0
if #user_access=2
let $whereaccnting =''
Let $whereaccnting=$whereaccnting||'AND ACC.BD_ACC_LOC IN' || $useraccnt
else
let $whereaccnting =''
let $whereaccnting ='AND ACC.BD_ACC_LOC=''' ||$input_acc_loc||''''
end-if
IF $input_grade<>''
Let $whereinputgrd=''
Let $whereinputgrd='AND JOB.GRADE=''' ||$input_grade||''''
ELSE
Let $whereinputgrd=''
END-IF
SHOW $whereinputgrd
BEGIN-SELECT DISTINCT
LTRIM(RTRIM(STAT.EMPLID)) &emplid_main
let $emplid_main=&emplid_main
LTRIM(RTRIM(STAT.EMPL_RCD)) &empl_rcd_main
let $empl_rcd_main=&empl_rcd_main
LTRIM(RTRIM(STAT.GP_PAYGROUP)) &paygroup_main
let $paygroup_main=&paygroup_main
FROM
PS_GP_PYE_PRC_STAT STAT, PS_GP_PYE_SEG_STAT SEG,PS_JOB JOB,PS_BD_JOB ACC,
PSROLEUSER R,PSOPRDEFN OPR
WHERE STAT.PRD_END_DT BETWEEN $period_bgn_dt AND $period_end_dt
AND STAT.CALC_TYPE='P'
and STAT.CAL_ID=SEG.CAL_ID
AND SEG.CAL_RUN_ID=STAT.CAL_RUN_ID
AND SEG.EMPLID=STAT.EMPLID
AND SEG.EMPL_RCD=STAT.EMPL_RCD
AND SEG.GP_PAYGROUP=STAT.GP_PAYGROUP
and JOB.EFFDT = (SELECT MAX(B_ED.EFFDT) FROM PS_JOB B_ED
WHERE JOB.EMPLID = B_ED.EMPLID
AND JOB.EMPL_RCD = B_ED.EMPL_RCD
AND B_ED.EFFDT <= $period_end_dt)
AND JOB.EFFSEQ =
(SELECT MAX(B_ES.EFFSEQ) FROM PS_JOB B_ES
WHERE JOB.EMPLID = B_ES.EMPLID
AND JOB.EMPL_RCD = B_ES.EMPL_RCD
AND JOB.EFFDT = B_ES.EFFDT)
AND ACC.EMPLID=JOB.EMPLID
AND ACC.EMPL_RCD=JOB.EMPL_RCD
AND ACC.EFFSEQ=JOB.EFFSEQ
AND ACC.EFFDT=JOB.EFFDT
and STAT.EMPLID=JOB.EMPLID
AND STAT.EMPL_RCD=JOB.EMPL_RCD
!AND STAT.GP_PAYGROUP=JOB.GP_PAYGROUP
AND SEG.RSLT_VER_NUM=1
AND SEG.RSLT_REV_NUM=1
AND OPR.OPRID=R.ROLEUSER
AND (CASE WHEN R.ROLEUSER = $prcs_oprid AND R.ROLENAME = 'BD_PAYROLL_USER' THEN 1
WHEN R.ROLEUSER = $prcs_oprid AND R.ROLENAME <> 'BD_PAYROLL_USER' AND
JOB.GRADE NOT IN (SELECT DISTINCT GRADE FROM PS_BD_CONF_GRD_TBL) THEN 1 END) = 1
[$whereinputgrd]
[$whereaccnting]
END-SELECT
!************************************************************************!
! Fetch Job Data !
!************************************************************************!
BEGIN-PROCEDURE Fetch_Employees_Job
BEGIN-SELECT DISTINCT
JOB.EMPLID &jobemplid
Let $jobemplid = &jobemplid
LTRIM(RTRIM(JOB.EMPL_RCD)) &empl_rcd
Let $empl_rcd = &empl_rcd
LTRIM(RTRIM(N.LAST_NAME)) &lname
Let $lname = &lname
LTRIM(RTRIM(N.FIRST_NAME)) &fname
Let $fname = &fname
JOB.BUSINESS_UNIT &bu
Let $bu = &bu
JOB.DEPTID &dept
Let $dept = &dept
LTRIM(RTRIM(DEPT.DESCR)) &deptdescr
Let $deptdescr = &deptdescr
JOB.LOCATION &location
Let $location = &location
LTRIM(RTRIM(LOC.DESCR)) &locdescr
Let $locdescr = &locdescr
LTRIM(RTRIM(JOB.GP_PAYGROUP)) &paygroup
Let $paygroup = &paygroup
LTRIM(RTRIM(JOB.GP_ELIG_GRP)) &eliggrp
Let $eliggrp = &eliggrp
LTRIM(RTRIM(JOB.HIRE_DT)) &hire_dt
Let $hire_dt = &hire_dt
Let $hire_dt = EDIT($hire_dt,'dd-mon-yyyy')
!LTRIM(RTRIM(JOB.TERMINATION_DT)) &term_dt
! Let $term_dt = &term_dt
! Let $term_dt = EDIT($term_dt,'dd-mon-yyyy')
ACC.BD_ACC_LOC &accnt_loc
Let $accnt_loc = &accnt_loc
LTRIM(RTRIM(JOB.GRADE)) &grade
Let $grade = &grade
!************************************************************************!
! Procedure Termination date Description !
!************************************************************************!
BEGIN-PROCEDURE Termination_date
BEGIN-SELECT
LTRIM(RTRIM(MAX(J.TERMINATION_DT))) &term_dt
Let $term_dt = &term_dt
Let $term_dt = EDIT($term_dt,'dd-mon-yyyy')
FROM PS_JOB J
WHERE J.EMPLID=$emplid_main AND J.EMPL_RCD=$empl_rcd_main AND J.EFFDT<=$term_effdt
END-SELECT
END-PROCEDURE !Termination_date
!************************************************************************!
! Procedure Business Unit Description !
!************************************************************************!
BEGIN-PROCEDURE Business_Unit
Let $budescr=''
BEGIN-SELECT
BUS.DESCR &budescr
let $budescr=&budescr
FROM PS_BUS_UNIT_TBL_HR BUS WHERE BUSINESS_UNIT=$bu
END-SELECT
END-PROCEDURE !Business_Unit
!************************************************************************!
! Procedure National ID- Provident Fund !
!************************************************************************!
BEGIN-PROCEDURE PF
Let $pf = ''
!BEGIN-SELECT
!NID.NATIONAL_ID &pf
! Let $pf = &pf
!
!from PS_PERS_NID NID WHERE NID.NATIONAL_ID_TYPE='PF' AND NID.COUNTRY='IND'
!and NID.EMPLID= $emplid_main
!END-SELECT
Begin-Select
ENROLL.GPIN_REG_NBR &pf
Let $pf = &pf
ENROLL.Z_UAN_NO &uan
Let $uan = &uan
FROM PS_GPIN_PF_ENROLL ENROLL
WHERE ENROLL.EMPLID = $emplid_main
End-Select
END-PROCEDURE !PF
!************************************************************************!
! Procedure National ID- ESIC No !
!************************************************************************!
BEGIN-PROCEDURE ESIC
Let $esic=''
BEGIN-SELECT
NID.GPIN_REG_NBR &esic
PAN.BD_PAN_NUMBER &pan
!************************************************************************!
! Procedure STATE !
!************************************************************************!
BEGIN-PROCEDURE STATE
Let $state=''
BEGIN-SELECT
ST.DESCR &state
BEGIN-PROCEDURE Bank_Details
let $accnt_no = ''
Let $bank_cd =''
Let $ifsc =''
BEGIN-SELECT
BANK.ACCOUNT_EC_ID &accnt_no
Let $accnt_no = &accnt_no
BANK.ACCOUNT_NAME &bank_cd
Let $bank_cd = &bank_cd
IFSC.BANK_CD &ifsc
Let $ifsc = &ifsc
!************************************************************************!
! Procedure Payroll Data !
!************************************************************************!
BEGIN-PROCEDURE Fetch_Employees_Payroll
Let #payrollrows=0
Let #resetrows=0
Let #c=1
SHOW $jobemplid
SHOW $empl_rcd
SHOW $period_bgn_dt
SHOW $period_end_dt
SHOW $paygroup_main
BEGIN-SELECT
LTRIM(RTRIM(JOB.EMPLID)) &payemplid
Let $payemplid = &payemplid
LTRIM(RTRIM(JOB.EMPL_RCD)) &payemplrcd
LTRIM(RTRIM(PIN.PIN_TYPE)) &paypintype
Let $paypintype = &paypintype
PIN.PIN_NUM &paypinno
let #paypinno=&paypinno
PIN.PIN_CODE &paypincode ! added on 01-SEP-09
Let $paypincode = &paypincode ! added on 01-SEP-09
SUM(ED.CALC_RSLT_VAL + ED.CALC_ADJ_VAL) &payamount
let #payamount=&payamount
!show 'Employee-Payroll'$payemplid
!show 'Employee-RCD'&payemplrcd
!show 'Pin No-Payroll'#paypinno
!show 'Pay Amount' #payamount
!show 'Pay Pin code '$paypincode
END-PROCEDURE !Fetch_Employees_Payroll
!************************************************************************!
! Get Element Amount !
!************************************************************************!
BEGIN-PROCEDURE Element_Data
let #count = #count + 1
! Remove any commas in the string
LET $locdescr =REPLACE($locdescr,',',' ')
LET $paygroup =REPLACE($paygroup,',',' ')
LET $budescr =REPLACE($budescr,',',' ')
LET $deptdescr =REPLACE($deptdescr,',',' ')
LET $lname =REPLACE($lname,',',' ')
LET $fname =REPLACE($fname,',',' ')
let $accnt_loc = '='||'"'||$accnt_loc||'"'
IF $accnt_no <> ''
let $accnt_no = '''' ||$accnt_no
else
let $accnt_no = ''
END-If
Let $data_str = $jobemplid || ',' || $lname|| ',' || $fname || ',' ||$grade|| ','
|| $accnt_loc || ',' || $location || ',' ||$state|| ',' ||$budescr|| ',' ||
$paygroup || ',' || $deptdescr|| ',' ||$pf|| ',' ||$uan|| ',' ||$esic|| ',' ||
$pan|| ',' ||$accnt_no|| ',' ||$bank_cd|| ',' ||$ifsc|| ',' || $hire_dt|| ',' ||
$term_dt
let #d=1
let #e=1
let #payrollpin=0
let #headerpin=0
let #printdata=''
let $found=''
!show 'Get Elements'
while #d<=#headerrows
let #headerpin=header.pin(#d)
!SHOW 'the header pin :'#headerpin
let #e=1
let $found=''
while #e<=#payrollrows
let #payrollpin=data.pin(#e)
!SHOW 'the payroll pin :'#payrollpin
if #headerpin=#payrollpin
let $found='1'
let $printdata=data.amount(#e)
Let $data_str = $data_str || ',' || $printdata
!show 'when found'$data_str
end-if
let #e=#e+1
end-while
if $found=''
let $blank='0'
Let $data_str = $data_str || ',' || $blank
end-if
let #d=#d+1
end-while
END-PROCEDURE Element_Data
!************************************************************************!
! Print Final String with Net and Gross !
!************************************************************************!
BEGIN-PROCEDURE Get-Net-Gross
Let #netamount=0
Let #grossamount=0
BEGIN-SELECT DISTINCT
SUM(ACC.PIN_NET_VAL ) &net
Let #net = &net
SUM(ACC.PIN_GROSS_VAL ) &gross
Let #gross = &gross
END-SELECT
Let $netamount=round(#netamount,0)
Let $grossamount=#grossamount
Let $data_str = $data_str || ',' || $netamount|| ',' ||$grossamount
write 1 from $data_str
DO Reset-Data-Array
let $data_str = ''
END-PROCEDURE !Get-Net-Gross
!************************************************************************!
! Reset Data Array
!************************************************************************!
BEGIN-PROCEDURE Reset-Data-Array
let #r=1
let #reset=0
while #resetrows>=1
Let data.pin(#r)=#reset
Let data.amount(#r)=#reset
LET #TEST=data.amount(#r)
let #resetrows=#presetrows -1
let #r=#r+1
end-while
END-PROCEDURE !Reset-Data-Array
!************************************************************************!
! Reset Variables !
!************************************************************************!
BEGIN-PROCEDURE Reset-Variables
END-PROCEDURE !Reset-Variables