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