source: WorldVistAEHR/trunk/r/PAID-PRS/PRSAENT.m@ 1476

Last change on this file since 1476 was 623, checked in by George Lilly, 15 years ago

revised back to 6/30/08 version

File size: 6.2 KB
Line 
1PRSAENT ;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 ;
740 Q
75 ;
76A ;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
93E Q
94F Q
95G I $E(AC,2)<3 Q
96 S TA=$P(C0,"^",43) S:TA=8 AC=AC_"8" Q
97J Q
98K S:NH=48 AC=AC_"B" Q
99L 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
102M 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
109N 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
118P Q
119Q I $E(AC,2)'=2 Q
120 S PB=$P(C0,"^",20) S:PB=0 AC=AC_"0" Q
121R Q
122S Q
123T I $E(AC,2)'=3 Q
124 S PB=$P(C0,"^",20) S:PB=9 AC=AC_"9" Q
125U S PB=$P(C0,"^",20) I $E(AC,3)="N",PB="P" S AC=AC_"P"
126 Q
127W Q
128X S:'NH AC=AC_"0" Q
129Y Q
130 ;
131 ;= = = = = = = = = = = = = = = = = = = = = = = =
132FND ;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 ;= = = = = = = = = = = = = = = = = = = = = = = =
149NO S ENT=""
150 Q
151 ;
152MLINHRS(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
Note: See TracBrowser for help on using the repository browser.