[613] | 1 | PRS8HR ;HISC/MRL,WCIOFO/JAH-DECOMPOSITION, HOURS ;06/25/07
|
---|
| 2 | ;;4.0;PAID;**2,22,29,42,52,102,108,112**;Sep 21, 1995;Build 54
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ;This routine is called by ^PRS8PP (premium pay calculator)
|
---|
| 6 | ;=====================================================================
|
---|
| 7 | ; ** indicates incompleted comments
|
---|
| 8 | ;
|
---|
| 9 | ;VARIABLE DEFINITION
|
---|
| 10 | ;
|
---|
| 11 | ; TYP = contains codes representing type of employee.
|
---|
| 12 | ; It's a composite code string w/ characters that
|
---|
| 13 | ; represent pay plan, duty basis, & normal hours.
|
---|
| 14 | ; CODE REPRESENTS CODE REPRESENTS
|
---|
| 15 | ; D daily f firefighter
|
---|
| 16 | ; W wagegrade P part-time
|
---|
| 17 | ; N nurse d doctor
|
---|
| 18 | ; B baylor plan dR doctor/resident or intern
|
---|
| 19 | ; H Nurse Hybrid "" *
|
---|
| 20 | ; I intermittent
|
---|
| 21 | ; VAL = Single char code represents employee's work status for
|
---|
| 22 | ; current 15 min increment.
|
---|
| 23 | ; FLX = Flex tour indicator.
|
---|
| 24 | ; TH(W) = Tour Hours for week 1, TH(1) & week 2, TH(2)
|
---|
| 25 | ; TH = Tour Hours
|
---|
| 26 | ; HTP = PAYABLE hours worked today.
|
---|
| 27 | ; HT = Hours worked today.
|
---|
| 28 | ; AV = String w/ most normal types of time (see bottom of PRS8EX)
|
---|
| 29 | ; does NOT contain premium times or unscheduled time (OoEes4)
|
---|
| 30 | ;====================================================================
|
---|
| 31 | ;
|
---|
| 32 | S AV="1235nHMLSWNARUXYVJFGD"
|
---|
| 33 | ;
|
---|
| 34 | ; Loop thru each quarter hour segment of day.
|
---|
| 35 | ; Check for times in AV array.
|
---|
| 36 | ; Proceed w/ calculation if Overtime worked on Holiday.
|
---|
| 37 | ;
|
---|
| 38 | F M=1:1:96 D
|
---|
| 39 | . S VAL=$E(D,M)
|
---|
| 40 | .;
|
---|
| 41 | .; If non premium type of time or (overtime on holiday)
|
---|
| 42 | .;
|
---|
| 43 | . I AV[VAL!(VAL="O"&($E(DAY(DAY,"HOL"),M)=2)) D CALC
|
---|
| 44 | Q
|
---|
| 45 | ;
|
---|
| 46 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
| 47 | ;
|
---|
| 48 | CALC ; --- Entry point for calculating placement of time
|
---|
| 49 | ;
|
---|
| 50 | ; Set up variables for calculations and comparisons in this routine
|
---|
| 51 | ;
|
---|
| 52 | N HOLWKD,HOLEX,HOLWKEX
|
---|
| 53 | D ^PRS8HRSV
|
---|
| 54 | ;
|
---|
| 55 | ; IF intermittent employee on continuation of pay OR overtime on
|
---|
| 56 | ; holiday THEN increment Pay Period tour hours and current weeks
|
---|
| 57 | ; tour hours.
|
---|
| 58 | ;
|
---|
| 59 | I TYP["I",VAL["V"!(VAL="O"&(HOLWKD)) S TH=TH+1,TH(W)=TH(W)+1
|
---|
| 60 | ;
|
---|
| 61 | ; IF part time doctor & total hours = 80 & type of
|
---|
| 62 | ; time is unscheduled, overtime, comptime THEN quit
|
---|
| 63 | ;
|
---|
| 64 | I TYP["d",TYP["P",TH=320,"4OosEe"[VAL Q
|
---|
| 65 | ;
|
---|
| 66 | ; IF INT doctor & total hours = 80 THEN quit
|
---|
| 67 | ;
|
---|
| 68 | I TYP["I",$E(AC,1)="L",TH=320,"4OosEe"[VAL Q
|
---|
| 69 | ;
|
---|
| 70 | ; IF type of time is anything but Leave Without Pay "W" or Non-Pay "n"
|
---|
| 71 | ; THEN increment total hrs HT & increment HTP. Also update
|
---|
| 72 | ; ^TMP global for reference during the processing of On-Call (PRS8OC).
|
---|
| 73 | ;
|
---|
| 74 | I "Wn"'[VAL S HT=HT+1,HTP=HTP+1,^TMP($J,"PRS8",DAY,"HT")=HT
|
---|
| 75 | ;
|
---|
| 76 | ;---------------------------------------------------------
|
---|
| 77 | ; IF entitled to VCS commission sales & normal time(1) ??(2,3)
|
---|
| 78 | ; & holiday excused set X to type of time=Piece Worker Hol excused.
|
---|
| 79 | ; Then IF part time set X to part time hours code.
|
---|
| 80 | ;
|
---|
| 81 | I $E(ENT,38),"123"[VAL,HOLEX S X=36 D CHK^PRS8HRSV D Q:X
|
---|
| 82 | . I TYP["P" S X=32 D CHK^PRS8HRSV
|
---|
| 83 | ;
|
---|
| 84 | ;---------------------------------------------------------------
|
---|
| 85 | ;
|
---|
| 86 | ; Don't mess w/ fire fighters
|
---|
| 87 | ;
|
---|
| 88 | Q:"Ff"[TYP
|
---|
| 89 | ;
|
---|
| 90 | S GO=0
|
---|
| 91 | ; IF compressed tour & parttime & tour hours are over 80
|
---|
| 92 | ; OR tour hours = 80 & it's overtime, comptime, or unscheduled reg.
|
---|
| 93 | ;
|
---|
| 94 | ; Check for FT Compressed
|
---|
| 95 | I $E(AC,2)=1,NH>319,FLX="C",("OoseE4"[VAL) S GO=1
|
---|
| 96 | ;
|
---|
| 97 | ; Check for week
|
---|
| 98 | I (TH(W)>160&("OoseE4"[VAL))!(TH(W)=160&("OosEe4"[VAL)) S GO=1
|
---|
| 99 | ;
|
---|
| 100 | ; Check for day
|
---|
| 101 | I HT>32,"OoseE4"[VAL S GO=1
|
---|
| 102 | ;
|
---|
| 103 | ; Following segment is concerned w/ variations of part time
|
---|
| 104 | ; employees (TYP["P"), & 1 baylor (TYP["B").
|
---|
| 105 | ;-------------------------------------------------------------------
|
---|
| 106 | ;
|
---|
| 107 | ; Doctor over 8 hours
|
---|
| 108 | ;
|
---|
| 109 | I TYP["Pd",HT>32 S GO=0 ; part-time doctors PT + PH must = NH
|
---|
| 110 | ;
|
---|
| 111 | I TYP["P",HOLWKD S GO=0
|
---|
| 112 | ;
|
---|
| 113 | ; Baylor plan & ct/ot/s
|
---|
| 114 | ;
|
---|
| 115 | I TYP["B","EeOos"[VAL S GO=1
|
---|
| 116 | ;
|
---|
| 117 | ;-------------------------------------------------------------------
|
---|
| 118 | ; GO set in cases where employee maybe eligible for OT
|
---|
| 119 | ; due to over > 8/day OR > 40/week.
|
---|
| 120 | ;
|
---|
| 121 | S X=0 I GO D TH^PRS8HRSV D OVER840^PRS8HROT Q
|
---|
| 122 | ;
|
---|
| 123 | ;-------------------------------------------------------------------
|
---|
| 124 | ;-------------------------------------------------------------------
|
---|
| 125 | ; GO not set for compressed schedule of at least 80 hrs.
|
---|
| 126 | ; GO not set for non compressed schedule of over 40 hrs.
|
---|
| 127 | ; IF GO is set and we are evaluating normal hours or
|
---|
| 128 | ; HOLIDAY OVERTIME use NORMHRS to increment TIME
|
---|
| 129 | ; in week array. THEN QUIT.
|
---|
| 130 | ;
|
---|
| 131 | S GO=1
|
---|
| 132 | I FLX="C",NH>319 S GO=0
|
---|
| 133 | I FLX'="C",NH(WK)>160,TYP'["Pd" S GO=0 ;IF pt-doctor don't set GO=0
|
---|
| 134 | I GO,"1235nHMLSWNARUXYVJFGD"[VAL!(VAL="O"&(HOLWKD)) D NORMHRS^PRS8HROT Q
|
---|
| 135 | ;
|
---|
| 136 | ;--------------------------------------------------------------------
|
---|
| 137 | ; Check employees with Normal hours less than 80. (Baylor NH=320)
|
---|
| 138 | ;
|
---|
| 139 | I NH'>319!(($E(AC,2)=2)&(NH=320)) D TH^PRS8HRSV D Q
|
---|
| 140 | .I FLX="C" D Q:X
|
---|
| 141 | ..;
|
---|
| 142 | ..; For PT employees review hours worked to determine X
|
---|
| 143 | ..I "OosEe4"'[VAL S X=32 ; All tour time = PT/PH
|
---|
| 144 | ..;
|
---|
| 145 | ..; Checks for CT
|
---|
| 146 | ..I "Ee"[VAL D
|
---|
| 147 | ...; <8/DAY & <40/WK = UN/US
|
---|
| 148 | ...I HT'>32,TH(W)'>160 S X=9 Q
|
---|
| 149 | ...S X=7 ; CE/CT
|
---|
| 150 | ..;
|
---|
| 151 | ..; Checks for all other types of time
|
---|
| 152 | ..I "Oos4"[VAL D
|
---|
| 153 | ...I HT>32 S X=TOUR+15 Q ; DA/DE
|
---|
| 154 | ...I TH(W)>160 S X=TOUR+19 Q ; OA/OE
|
---|
| 155 | ...S X=9 ; UN/US
|
---|
| 156 | ..D CHK^PRS8HRSV
|
---|
| 157 | .;
|
---|
| 158 | .; Under 8/day, 40/week, and not coded as overtime or comptime
|
---|
| 159 | .; or overtime on holiday.
|
---|
| 160 | .;
|
---|
| 161 | .; Checks for non-compressed employees
|
---|
| 162 | .I HT'>32,TH(W)'>160,"OoseE"'[VAL!(VAL="O"&(HOLWKD)) S X=0 D Q:X
|
---|
| 163 | ..;
|
---|
| 164 | ..; Not intermittent, normal hours and not unscheduled reg.
|
---|
| 165 | ..; TIME gets parttime hours.
|
---|
| 166 | ..;
|
---|
| 167 | ..I TYP'["I",AV[VAL,VAL'=4 S X=32 D CHK^PRS8HRSV Q
|
---|
| 168 | ..;
|
---|
| 169 | ..; All else fails - TIME gets unscheduled regular.
|
---|
| 170 | ..;
|
---|
| 171 | ..S X=9 D CHK^PRS8HRSV Q
|
---|
| 172 | .;
|
---|
| 173 | .; Part time doctor w/ unscheduled reg. TIME gets unscheduled reg.
|
---|
| 174 | .;
|
---|
| 175 | .I TYP["P",TYP["d",VAL=4 S X=9 D CHK^PRS8HRSV Q
|
---|
| 176 | .;
|
---|
| 177 | .; Over 8/day
|
---|
| 178 | .;
|
---|
| 179 | .I HT>32 D G8^PRS8HRSV Q:X
|
---|
| 180 | .;
|
---|
| 181 | .; For all time left except comptime set TIME to appropriate OT
|
---|
| 182 | .; unless comptime has been worked earlier in the week making
|
---|
| 183 | .; the total hours less than 40, then TIME gets unscheduled reg.
|
---|
| 184 | .; COMPTIME OVER 8/DAY WILL BE CREDITED HERE
|
---|
| 185 | .;
|
---|
| 186 | .S X=$S("Ee"'[VAL:TOUR+19,(TH(W)'>160)&(HT'>32):9,1:7)
|
---|
| 187 | .I TYP["P",VAL[4,TH(W)'>160,HT'>32 S X=9
|
---|
| 188 | .I TYP["P",VAL="O",TH(W)'>160,HT'>32 S X=9
|
---|
| 189 | .D CHK^PRS8HRSV
|
---|
| 190 | Q
|
---|