1 | PRSAENT ;HISC/MGD-Entitlement String ;10/21/04
|
---|
2 | ;;4.0;PAID;**6,21,45,69,75,76,90,96**;Sep 21, 1995
|
---|
3 | ;
|
---|
4 | ;VARS:
|
---|
5 | ; C0=employees 0 node of master record in file 450
|
---|
6 | ; NH= employees 8B normal hours
|
---|
7 | ; FLX= compressed/flextime code (0=none,C=compressed,F=flextime)
|
---|
8 | ; PMP= premium pay indicator
|
---|
9 | ; ( D = entitled Sun., F = entitled Sat./Sun.,
|
---|
10 | ; E = entitled variable Sat./Sun. premium pay,
|
---|
11 | ; G = entitled variable Sun. prem pay
|
---|
12 | ; X = title 5 employees
|
---|
13 | ; R, C, O = 3 types of firefighters )
|
---|
14 | ; AC= 3 single char codes concat. w/o delims + a possible 4th char.
|
---|
15 | ; AC= PP_DutyBasis(full-1,part-2,intermit-3)_FLSA(E=Exempt,N=NonExempt)
|
---|
16 | ; _(*EWXY8BT02S9P)
|
---|
17 | ; PP= employees pay plan (possible chars 0AEFGJKLMNPQRSTUWXY)
|
---|
18 | ; PB= pay basis-code for time condition for computing pay.
|
---|
19 | ; TA= type of appointment (career, career conditional, etc.)
|
---|
20 | ; OCC= 4 digit cost center for fund appropriation accounting
|
---|
21 | ; LVG= one digit code for employees leave group.
|
---|
22 | ; ASS= specialty assignment of physicians,dentists, nurses,
|
---|
23 | ; summer employees,trainees and other special programs.
|
---|
24 | ; ENT= 39 character entitlement string
|
---|
25 | ; PMP = Premium Pay Code
|
---|
26 | ;
|
---|
27 | N PAYPDTMP,PPLOLD,DUTYTEMP,FLSATEMP
|
---|
28 | ;
|
---|
29 | S C0=^PRSPC(DFN,0)
|
---|
30 | ;
|
---|
31 | ; pay plan in master record.
|
---|
32 | S PP=$P(C0,"^",21)
|
---|
33 | ;
|
---|
34 | ;=====================================================================
|
---|
35 | ; duty basis from master record
|
---|
36 | S DUTYTEMP=$P(C0,"^",10)
|
---|
37 | ;
|
---|
38 | ; FLSA indicator from master record
|
---|
39 | S FLSATEMP=$P(C0,"^",12)
|
---|
40 | ;
|
---|
41 | ;Make sure we've called this routine from an entry point that uses
|
---|
42 | ;PY for pay period. A few reports, call PRSAENT from TYPSTF^PRSRUT0
|
---|
43 | ;and the reports aren't concerned about differing pay plans from
|
---|
44 | ;other pay periods.
|
---|
45 | ;
|
---|
46 | I +($G(PY))>0 D
|
---|
47 | .S PAYPDTMP=$P($G(^PRST(458,+PY,0)),"^") ;pay period we're working with.
|
---|
48 | .S PPLOLD=$$OLDPP^PRS8UT(PAYPDTMP,+DFN) ;pay plan from PAYPDTMP.
|
---|
49 | .;if we find an old pay plan and it's different than the master record
|
---|
50 | .;use the old pay plan to determine VCS or FEE.
|
---|
51 | .I PPLOLD'=0,(PP'=PPLOLD) D
|
---|
52 | .. S PP=PPLOLD
|
---|
53 | .. S DUTYTEMP=OLDPP("DUTYBS")
|
---|
54 | ;=====================================================================
|
---|
55 | ;
|
---|
56 | ; Numeric Pay plans are all Wage grade. Set them to 0.
|
---|
57 | S:PP?1N PP=0
|
---|
58 | ;
|
---|
59 | ;
|
---|
60 | S:"BC"[PP PP="A"
|
---|
61 | I "0AEFGJKLMNPQRSTUWXY"'[PP D NO Q
|
---|
62 | S NH=+$P(C0,"^",16)
|
---|
63 | S FLX=$P($G(^PRSPC(DFN,1)),"^",7)
|
---|
64 | S PMP=$P($G(^PRSPC(DFN,"PREMIUM")),"^",6)
|
---|
65 | S AC=PP_DUTYTEMP_FLSATEMP
|
---|
66 | I $L(AC)'=3 D NO Q
|
---|
67 | ;
|
---|
68 | ;
|
---|
69 | D @PP
|
---|
70 | D FND
|
---|
71 | Q
|
---|
72 | ;===========================================================
|
---|
73 | ;
|
---|
74 | 0 Q
|
---|
75 | ;
|
---|
76 | A ;patch 45: firefighters entitlements are based on PMP Codes.
|
---|
77 | ; Code O still uses nh>80 to determine entitlement.
|
---|
78 | I "RC"[PMP S AC=AC_PMP Q
|
---|
79 | ;
|
---|
80 | ;This check does not concern itself with whether or not a code
|
---|
81 | ; O is present. Simply if not a code R or C then an over 80
|
---|
82 | ; must be a code O firefighter under the rules implemented in
|
---|
83 | ; patch 45.
|
---|
84 | ;
|
---|
85 | I "CR"'[PMP,NH>80 S AC=AC_"*" Q
|
---|
86 | ;
|
---|
87 | Q:PMP=""
|
---|
88 | I $E(AC,2)'=3,"WXY"[PMP S AC=AC_PMP Q
|
---|
89 | S:"EF"[PMP AC=AC_"E"
|
---|
90 | ;The following check is for Public Law 108-170
|
---|
91 | S:"STUV"[PMP AC=AC_PMP
|
---|
92 | Q
|
---|
93 | E Q
|
---|
94 | F Q
|
---|
95 | G I $E(AC,2)<3 Q
|
---|
96 | S TA=$P(C0,"^",43) S:TA=8 AC=AC_"8" Q
|
---|
97 | J Q
|
---|
98 | K S:NH=48 AC=AC_"B" Q
|
---|
99 | L I $E(AC,2)=2 S PB=$P(C0,"^",20) S:PB=0 AC=AC_"*" Q
|
---|
100 | I $E(AC,2)=3 S OCC=$P(C0,"^",17),OCC=+$E(OCC,5,6) S:OCC>20&(OCC<38) AC=AC_"*" Q
|
---|
101 | S LVG=$P(C0,"^",15) S:LVG=5 AC=AC_"*" Q
|
---|
102 | M I $E(AC,2)=1,NH=48 S AC=AC_"B" Q
|
---|
103 | I $E(AC,2)=2 S PB=$P(C0,"^",20) I PB=0 S AC=AC_"0" Q
|
---|
104 | I $E(AC,2)=3 S PB=$P(C0,"^",20) I PB=2 S AC=AC_"2" Q
|
---|
105 | S OCC=$P(C0,"^",17) S:OCC="" OCC="*"
|
---|
106 | S:" 061056 061057 "[OCC AC=AC_"T"
|
---|
107 | S:" 061071 061072 061080 061083 061084 "[OCC AC=AC_"T"
|
---|
108 | S:" 060552 060556 "[OCC AC=AC_"T" Q
|
---|
109 | N S ASS=$P(C0,"^",4),PB=$P(C0,"^",20)
|
---|
110 | ;The following check is for Public Law 108-170
|
---|
111 | I "^S^T^U^V^"[("^"_PMP_"^") S AC=AC_PMP Q
|
---|
112 | I AC="N2E",PB=0 S AC=AC_"0" Q
|
---|
113 | I $E(AC,2)=3,PB="S" S AC=AC_"$" Q
|
---|
114 | S OCC=$P(C0,"^",17) S:OCC="" OCC="*"
|
---|
115 | I OCC="069961" S AC=AC_"T" Q ; Student Nurse Technician
|
---|
116 | I OCC="069964" S AC=AC_"T" Q ; Student Nurse Technician
|
---|
117 | S AC=AC_$S(ASS="TR":"T",ASS?1"T"1N:"T",ASS?1"A"1N:"T",1:"") Q
|
---|
118 | P Q
|
---|
119 | Q I $E(AC,2)'=2 Q
|
---|
120 | S PB=$P(C0,"^",20) S:PB=0 AC=AC_"0" Q
|
---|
121 | R Q
|
---|
122 | S Q
|
---|
123 | T I $E(AC,2)'=3 Q
|
---|
124 | S PB=$P(C0,"^",20) S:PB=9 AC=AC_"9" Q
|
---|
125 | U S PB=$P(C0,"^",20) I $E(AC,3)="N",PB="P" S AC=AC_"P"
|
---|
126 | Q
|
---|
127 | W Q
|
---|
128 | X S:'NH AC=AC_"0" Q
|
---|
129 | Y Q
|
---|
130 | ;
|
---|
131 | ;= = = = = = = = = = = = = = = = = = = = = = = =
|
---|
132 | FND ;Look up the 39 character entitlement string in the entitlement table
|
---|
133 | ;The lookup is based on the AC x-ref that matches the AC variable that
|
---|
134 | ;is built in this routine from the three 1 character codes from the
|
---|
135 | ;450 fields (pay plan, duty basis, FLSA).
|
---|
136 | ;
|
---|
137 | S A1=$O(^PRST(457.5,"AC",AC,0))
|
---|
138 | D NO
|
---|
139 | I +A1 S ENT=^PRST(457.5,A1,1)
|
---|
140 | ; The following check was added to address the Hybrid employees
|
---|
141 | ; defined in Public Law 107-135. These Hybrids do not have a
|
---|
142 | ; Premium Pay Indicator but are entitled to Saturday and Sunday
|
---|
143 | ; Premium Pay.
|
---|
144 | I $$HYBRID^PRSAENT1(DFN) D
|
---|
145 | . S $E(ENT,8,9)="11"
|
---|
146 | ;
|
---|
147 | Q
|
---|
148 | ;= = = = = = = = = = = = = = = = = = = = = = = =
|
---|
149 | NO S ENT=""
|
---|
150 | Q
|
---|
151 | ;
|
---|
152 | MLINHRS(IEN) ;
|
---|
153 | ;----------------------------------------------------------------------
|
---|
154 | ; Determine if the employee is entitled to Military Leave in hours.
|
---|
155 | ;
|
---|
156 | ; Input Vars:
|
---|
157 | ; IEN - the ien number of the employee in the PAID EMPLOYEE (#450)
|
---|
158 | ; file.
|
---|
159 | ;
|
---|
160 | ; Local Vars:
|
---|
161 | ; DATA - the 0 node of the employee from the PAID EMPLOYEE (#450)
|
---|
162 | ; file.
|
---|
163 | ; DB - Duty Basis field #9 from the #450 file.
|
---|
164 | ; NH - Normal Hours field # 15 from the #450 file.
|
---|
165 | ; PP - Pay Plan field # 20 from the #450 file.
|
---|
166 | ;
|
---|
167 | ; Output:
|
---|
168 | ; 1 : Entitled to ML in hours.
|
---|
169 | ; 0 : Entitled to ML in days.
|
---|
170 | ; X : Some of the required fields were not defined or the employee
|
---|
171 | ; is not entitled to Military Leave.
|
---|
172 | ;----------------------------------------------------------------------
|
---|
173 | ; Quit if no IEN passed in
|
---|
174 | ;
|
---|
175 | Q:'+IEN "X"
|
---|
176 | ;
|
---|
177 | ; Verify that ENT is defined. If not call PRSAENT to define it.
|
---|
178 | ;
|
---|
179 | I '$D(ENT) D PRSAENT
|
---|
180 | ;
|
---|
181 | ; Quit if the Entitlement string is not defined for the employee
|
---|
182 | ;
|
---|
183 | Q:ENT="" "X"
|
---|
184 | ;
|
---|
185 | ; Quit if the employee is not entitled to Military Leave
|
---|
186 | ;
|
---|
187 | Q:'$E(ENT,34) "X"
|
---|
188 | ;
|
---|
189 | N DATA,PP,DB,NH
|
---|
190 | S DATA=$G(^PRSPC(IEN,0))
|
---|
191 | Q:DATA="" "X"
|
---|
192 | S DB=$P(DATA,U,10),NH=$P(DATA,U,16),PP=$P(DATA,U,21)
|
---|
193 | Q:DB=""!(NH="")!(PP="") "X" ; Quit if DB or NH or PP is not defined.
|
---|
194 | ;
|
---|
195 | ; Check for ML in Days
|
---|
196 | ;
|
---|
197 | I DB=1,NH=0,"^J^L^P^Q^X^"[PP Q 0
|
---|
198 | ;
|
---|
199 | ; Otherwise the employee is entitled to ML in hours.
|
---|
200 | ;
|
---|
201 | Q 1
|
---|