added CMS folder
This commit is contained in:
270
CMS/BP.CLOCK/AL.MSD.INFO.ACCRUAL
Normal file
270
CMS/BP.CLOCK/AL.MSD.INFO.ACCRUAL
Normal file
@@ -0,0 +1,270 @@
|
||||
* MSD.INFO.ACCRUAL
|
||||
*
|
||||
* AUTHOR: SCOTT REDMOND
|
||||
* PURPOSE: UTILITY TO MAINTAIN VACATION/SICK ACCRUAL FOR EMPLOYEES
|
||||
* DATE: 03/28/95
|
||||
*
|
||||
*-------------------------------------------------------------------*
|
||||
*
|
||||
$INCLUDE GEN.COMMON
|
||||
$INCLUDE USER
|
||||
*
|
||||
*-------------------------------------------------------------------*
|
||||
*
|
||||
OPEN 'USER.BACKUP' TO USER.BACKUP ELSE ABORT 201, 'USER.BACKUP'
|
||||
OPEN 'USER' TO USER.FILE ELSE ABORT 201, 'USER'
|
||||
OPEN 'CUSTOMER.TRANS' TO CUSTOMER.TRANS ELSE ABORT 201, 'CUSTOMER.TRANS'
|
||||
OPEN 'PROJECT' TO PROJECT ELSE ABORT 201, 'PROJECT'
|
||||
OPEN 'INFO.ACCRUAL' TO INFO.ACCRUAL ELSE ABORT 201, 'INFO.ACCRUAL'
|
||||
OPEN 'PT' TO PT.FILE ELSE ABORT 201, 'PT'
|
||||
OPEN 'CLOCKFILE' TO CLOCKFILE ELSE ABORT 201, 'CLOCKFILE'
|
||||
OPEN 'CLOCK.GEN.KEYS' TO CLOCK.GEN.KEYS ELSE ABORT 201, 'CLOCK.GEN.KEYS'
|
||||
OPEN 'CM' TO CM ELSE ABORT 201, 'CM'
|
||||
OPEN 'HP.CONTROL' TO HP.CONTROL ELSE ABORT 201, 'HP.CONTROL'
|
||||
OPEN 'INFO.HIST' TO INFO.HIST ELSE ABORT 201, 'INFO.HIST'
|
||||
OPEN 'INFO.LOG' TO INFO.LOG ELSE ABORT 201, 'INFO.LOG'
|
||||
*
|
||||
*-------------------------------------------------------------------*
|
||||
*
|
||||
USER.ADD='' ; USER.REC='' ; TODAY=DATE()
|
||||
*
|
||||
*-------------------------------------------------------------------*
|
||||
5 *
|
||||
*
|
||||
10 *
|
||||
CRT CS
|
||||
HDG='MICAHTEK & IDM TIME CLOCK ACCRUAL UTILITY'
|
||||
HDL=(80 - LEN(HDG)) / 2
|
||||
CRT @(0,0):CL:RV:STR(' ',80):ERV
|
||||
CRT @(HDL,0):RV:HDG:ERV:
|
||||
*
|
||||
100 *------ opening menu ------------------------------------------*
|
||||
CRT @(20,5):CL:RV:" 1 - QUICK VIEW ACCRUAL TOTALS ":ERV
|
||||
CRT @(20,7):CL:RV:" 2 - RUN CURRENT PAY PERIOD PROCESS ":ERV
|
||||
CRT @(20,9):CL:RV:" 3 - ACCRUAL REPORT BY DEPARTMENT ":ERV
|
||||
CRT @(20,11):CL:RV:" 4 - UPDATE MANAGERS/USERS RECORDS ":ERV
|
||||
CRT @(20,13):CL:RV:" 5 - PRINT DETAIL ACCRUAL REPORT ":ERV
|
||||
CRT @(20,15):CL:RV:" 6 - BILLABLE CLIENT HOURS REPORT ":ERV
|
||||
CRT @(20,17):CL:RV:" 7 - CALCULATE FUTURE VACATION HOURS ":ERV
|
||||
CRT @(20,19):CL:RV:" 8 - RESTORE FILES (PREVIOUS PERIOD) ":ERV
|
||||
PASSWORD=CHAR(73):CHAR(88):CHAR(79):CHAR(89):CHAR(69)
|
||||
*
|
||||
101 *
|
||||
CRT @(0,22):CL:RV:" ENTER SELECTION :":ERV:
|
||||
INPUT SELECTION,15
|
||||
OTITLE=' ':SELECTION
|
||||
BEGIN CASE
|
||||
CASE SELECTION=1 ; OTITLE=' QUICK VIEW'
|
||||
CASE SELECTION=2 ; OTITLE='* RUN PAY PERIOD'
|
||||
CASE SELECTION=3 ; OTITLE=' ACCRUAL DEPT REPORT'
|
||||
CASE SELECTION=4 ; OTITLE='* USER/MGR MAINT'
|
||||
CASE SELECTION=5 ; OTITLE='* DETAIL REPORT'
|
||||
CASE SELECTION=6 ; OTITLE=' BILLABLE REPORT'
|
||||
CASE SELECTION=7 ; OTITLE=' FUTURE VAC CALC'
|
||||
CASE SELECTION=8 ; OTITLE='* RESTORE FILES'
|
||||
* CASE SELECTION='LOG' ; OTITLE=' LOG'
|
||||
END CASE
|
||||
GOSUB 21000
|
||||
IF SELECTION=2 OR SELECTION=5 THEN
|
||||
CRT @(0,22):CL:RV:" ENTER PASSWORD :":ERV:
|
||||
HUSH ON
|
||||
INPUT PASS,15
|
||||
HUSH OFF
|
||||
IF PASS # PASSWORD THEN GO 101
|
||||
END
|
||||
BEGIN CASE
|
||||
CASE SELECTION=PF3 OR SELECTION=''
|
||||
STOP
|
||||
CASE SELECTION='1'
|
||||
GOSUB 1000
|
||||
CASE SELECTION='2'
|
||||
GOSUB 15000 ;* backup current user file
|
||||
CALL MSD.TIME.ACCRUAL
|
||||
CASE SELECTION='3'
|
||||
GOSUB 3000
|
||||
CASE SELECTION='4'
|
||||
CALL MSD.USER.MAINT
|
||||
CASE SELECTION='5'
|
||||
CALL MSD.ACCRUAL.RPT2
|
||||
CASE SELECTION='6'
|
||||
CALL MSD.BILLING.INFO
|
||||
CASE SELECTION='7'
|
||||
GOSUB 2000
|
||||
CASE SELECTION='8'
|
||||
ENTER CLOCK.BACKUP.ONE
|
||||
* CASE SELECTION='LOG'
|
||||
* EXECUTE"EX USER.LOG"
|
||||
CASE 1
|
||||
GO 101
|
||||
END CASE
|
||||
GO 10
|
||||
*
|
||||
9999 *
|
||||
STOP
|
||||
*
|
||||
1000 *--- quick view accrual records ------------------------*
|
||||
EXECUTE "EX CLOCK.INFO"
|
||||
CRT @(0,22):CL:RV:" PROCESS COMPLETE <return> :":ERV:
|
||||
INPUT ANY,2
|
||||
RETURN
|
||||
*
|
||||
2000 *--- calculate future accrual hours by user ------------*
|
||||
NOPE=''
|
||||
CRT @(0,0):CL:RV:STR(' ',80):ERV
|
||||
CRT @(HDL,0):RV:HDG:ERV:
|
||||
CRT @(0,1):CR:
|
||||
CRT @(19,3):CL:RV:" CALCULATE FUTURE ACCRUAL HOURS FOR USER ":ERV:
|
||||
CRT @(0,22):CL:RV:" ENTER USER CODE ":ERV:
|
||||
CRT @(8,5):CL:RV:" USER CODE :":ERV:
|
||||
INPUT REQUEST,10
|
||||
IF REQUEST=PF3 OR REQUEST='' THEN RETURN
|
||||
IF NUM(REQUEST) THEN
|
||||
READ USER.REC FROM USER.FILE,REQUEST THEN
|
||||
CRT @(29,5):CL:USER.REC<UR$FNAME>:" ":USER.REC<UR$LNAME>
|
||||
IF USER.REC<UR$TYPE.CODE>='P' THEN NOPE=1
|
||||
IF USER.REC<UR$STATUS>#'A' THEN NOPE=1
|
||||
IF NOPE THEN
|
||||
CRT @(0,22):CL:BEEP:RV:" USER IS INACTIVE OR PART-TIME! <return> :":ERV:
|
||||
INPUT ANY,4 ; RETURN
|
||||
END
|
||||
CRT @(8,7):CL:RV:" LAST PAY PERIOD DATE :":ERV:" ":OCONV(USER.REC<UR$LAST.PAY.DATE>,'D2/')
|
||||
CRT @(8,9):CL:RV:" VACATION AVAILABLE :":ERV:" ":OCONV(USER.REC<UR$VACATION.AVAIL>,'MR2')'L#7'
|
||||
2009 *
|
||||
CRT @(0,22):CL:RV:" ENTER THE FUTURE VACATION DATE ":ERV:
|
||||
CRT @(8,13):CL:RV:" FUTURE VACATION DATE :":ERV:" ":
|
||||
INPUT FUTURE.DATE,10
|
||||
IF FUTURE.DATE='' OR FUTURE.DATE=PF3 THEN RETURN
|
||||
FUTURE.DATE=ICONV(FUTURE.DATE,'D')
|
||||
IF FUTURE.DATE < USER.REC<UR$LAST.PAY.DATE> THEN GO 2009
|
||||
CRT @(8,13):CL:RV:" FUTURE VACATION DATE :":ERV:" ":OCONV(FUTURE.DATE,'D2/')
|
||||
ACCRUAL.DAYS=0
|
||||
FOR YYZ = USER.REC<UR$LAST.PAY.DATE> TO FUTURE.DATE
|
||||
IF OCONV(YYZ,'DW') < 6 THEN ;* figure days M-F
|
||||
ACCRUAL.DAYS=ACCRUAL.DAYS+1
|
||||
END
|
||||
NEXT YYZ
|
||||
ACCRUAL.HOURS=ACCRUAL.DAYS*8
|
||||
CALC.FACTOR=USER.REC<UR$INTERNAL.CALC>
|
||||
VAC.ACCRUAL=ACCRUAL.HOURS*CALC.FACTOR
|
||||
VAC.ONE=OCONV(VAC.ACCRUAL,'G0.1')
|
||||
VAC.TWO=OCONV(VAC.ACCRUAL,'G1.1')'L%2'
|
||||
FUTURE.VAC=VAC.ONE:VAC.TWO[1,2]
|
||||
TOTAL.VAC=(USER.REC<UR$VACATION.AVAIL>+FUTURE.VAC)'R26'
|
||||
NO.DAYS=TOTAL.VAC/8
|
||||
NO.DAY1=INT(NO.DAYS)
|
||||
NO.DAY2=OCONV(NO.DAYS,'G1.1')[1,1]
|
||||
NO.DAYS=NO.DAY1:".":NO.DAY2
|
||||
CRT @(8,15):CL:RV:" NUMBER WORKING DAYS :":ERV:" ":ACCRUAL.DAYS
|
||||
CRT @(8,17):CL:RV:" FUTURE VACATION AVAIL.:":ERV:" ":OCONV(USER.REC<UR$VACATION.AVAIL>,'MR2'):" + ":FUTURE.VAC'R26':" = ":TOTAL.VAC:" (":NO.DAYS:" days)"
|
||||
CRT @(0,22):CL:RV:" CALCULATE ANOTHER (Y/N) :":ERV:
|
||||
INPUT ANOTHER,3
|
||||
IF ANOTHER='Y' THEN GO 2000
|
||||
END ELSE
|
||||
CRT @(0,22):CL:BEEP:RV:" USER NOT ON FILE <return> :":ERV:
|
||||
INPUT ANY,4
|
||||
GO 2000 ;* return to prompt
|
||||
END
|
||||
END
|
||||
RETURN
|
||||
*
|
||||
3000 *--- print accrual report ------------------------------*
|
||||
CRT @(0,0):CL:RV:STR(' ',80):ERV
|
||||
CRT @(HDL,0):RV:HDG:ERV:
|
||||
DEPT='ALL'
|
||||
READ LAND FROM HP.CONTROL,'LANDSCAPE' ELSE LAND=''
|
||||
READ SMALL FROM HP.CONTROL,'16.PITCH' ELSE SMALL=''
|
||||
CRT @(0,1):CR:
|
||||
CRT @(17,3):CL:RV:" CREATE / PRINT ACCRUAL REPORTS BY DEPARTMENT ":ERV:
|
||||
CRT @(27,5):CL:RV:" 1 - SPECIAL ACCOUNTS ":ERV:
|
||||
CRT @(27,7):CL:RV:" 2 - PERSONNEL ":ERV:
|
||||
CRT @(27,9):CL:RV:" 3 - PROGRAMMING ":ERV:
|
||||
CRT @(27,11):CL:RV:" 4 - PHONE CENTER ":ERV:
|
||||
CRT @(27,13):CL:RV:" 5 - WOF PROCESSING ":ERV:
|
||||
CRT @(27,15):CL:RV:" 6 - FULFILLMENT CENTER":ERV:
|
||||
CRT @(27,17):CL:RV:" 7 - ALL DEPARTMENTS ":ERV:
|
||||
CRT @(0,22):CL:RV:" ENTER DEPARTMENT : ":ERV:
|
||||
INPUT DEPT,9
|
||||
IF DEPT='' OR DEPT=PF3 THEN RETURN
|
||||
IF NUM(DEPT) ELSE GO 3000
|
||||
CRT @(0,22):CL:RV:" SEND REPORT TO PRINTER (Y/N) :":ERV:
|
||||
INPUT PRINTER.ANS,3
|
||||
IF PRINTER.ANS[1,1]='Y' THEN
|
||||
CRT @(0,18):CR:
|
||||
EXECUTE "EX PRINTER"
|
||||
CRT @(0,18):CR:
|
||||
END
|
||||
CMD=''
|
||||
CMD='SORT USER '
|
||||
CMD=CMD:' FNAME LNAME BREAK.ON DEPT STATUS TOTAL VAC TOTAL PERSONAL.AVAIL '
|
||||
CMD=CMD:'BY DEPT BY LNAME BY FNAME'
|
||||
CMD=CMD:' WITH DEPT '
|
||||
BEGIN CASE
|
||||
CASE DEPT='1'
|
||||
CMD=CMD:' \511\ '
|
||||
CASE DEPT='2'
|
||||
CMD=CMD:' \517\ '
|
||||
CASE DEPT='3'
|
||||
CMD=CMD:' \504\\512\ '
|
||||
CASE DEPT='4'
|
||||
CMD=CMD:' \800\ '
|
||||
CASE DEPT='5'
|
||||
CMD=CMD:' \500\\501\\502\\503\\505\\509\\514\\525\ '
|
||||
CASE DEPT='6'
|
||||
CMD=CMD:' \506\\507\ '
|
||||
CASE DEPT='7'
|
||||
CASE DEPT='8'
|
||||
END CASE
|
||||
IF PRINTER.ANS='Y' THEN
|
||||
CMD=CMD:\ HEADING "PAGE 'P' ACCRUAL REPORT BY DEPARTMENT 'D' 'L' 'L'" (P \
|
||||
END ELSE
|
||||
CMD=CMD:\ HEADING "PAGE 'P' ACCRUAL REPORT BY DEPARTMENT 'D' 'L' 'L'" \
|
||||
END
|
||||
*HUSH ON
|
||||
EXECUTE CMD
|
||||
*HUSH OFF
|
||||
CRT @(0,22):CL:RV:" REPORT COMPLETE <return> :":ERV:
|
||||
INPUT ANY,2
|
||||
GO 3000
|
||||
RETURN
|
||||
*
|
||||
*
|
||||
15000 *--- back up current user file to user.backup -----------*
|
||||
CRT @(0,22):CL:RV:" PLEASE WAIT.... ":ERV:
|
||||
CLEARFILE USER.BACKUP
|
||||
EOF=0 ; T=0 ; WT=0
|
||||
SELECT USER.FILE
|
||||
LOOP
|
||||
READNEXT ID ELSE EOF=1
|
||||
UNTIL EOF DO
|
||||
T=T+1
|
||||
READ BAK.REC FROM USER.FILE,ID THEN
|
||||
WRITE BAK.REC ON USER.BACKUP,ID
|
||||
WT=WT+1
|
||||
END
|
||||
REPEAT
|
||||
RETURN
|
||||
*
|
||||
21000 *
|
||||
*
|
||||
IREC='' ; PORT='' ; ADD.OPER='' ; ADD.FNAME='' ; ADD.LNAME=''
|
||||
PORT=FIELD(OCONV(0, "U50BB")," ",1)
|
||||
READ PT.REC FROM PT.FILE,PORT THEN
|
||||
ADD.OPER=PT.REC<1>
|
||||
ADD.FNAME=PT.REC<2>
|
||||
ADD.LNAME=PT.REC<3>
|
||||
END ELSE
|
||||
ADD.OPER='UNKNOWN'
|
||||
ADD.LNAME=''
|
||||
END
|
||||
TIMER=TIMEDATE()
|
||||
IREC<1>=ADD.OPER
|
||||
IREC<2>=OTITLE
|
||||
IREC<3>=ADD.FNAME:" ":ADD.LNAME
|
||||
IREC<4>=TIMER
|
||||
IF OTITLE='' THEN RETURN
|
||||
READ NEXX FROM CLOCK.GEN.KEYS,"NEXT.LOG" THEN
|
||||
NEXX=NEXX+1
|
||||
* WRITE NEXX ON CLOCK.GEN.KEYS,"NEXT.LOG"
|
||||
* WRITE IREC ON INFO.LOG,NEXX
|
||||
END
|
||||
RETURN
|
||||
Reference in New Issue
Block a user