1 | PRS8WE2 ;WCIOFO/MGD-DECOMPOSITION, WEEKEND PREMIUM PART 2 ;10/22/04
|
---|
2 | ;;4.0;PAID;**90,92,96**;Sep 21, 1995
|
---|
3 | ;
|
---|
4 | COUNT(DAYN,SEG) ; Increase count of premium for tour
|
---|
5 | ; input
|
---|
6 | ; DAYN = day # (0-15) being counted
|
---|
7 | ; SEG = segment # (1-96) in DAYN being counted
|
---|
8 | ; D(DAYN)
|
---|
9 | ; P(DAYN)
|
---|
10 | ; H(DAYN)
|
---|
11 | ; CNT(DAYN,shift) - optional
|
---|
12 | ; output
|
---|
13 | ; CNT(DAYN,shift) = current count for tour being processed
|
---|
14 | ;
|
---|
15 | N DAT,FND,M1,NODE,NOTELG,POST,PREVDAY,RC,SC,SHIFT,TDAY,TOUR,TOURS,TS
|
---|
16 | ; perform final checks
|
---|
17 | I ("EetOscbT"[$E(D(DAYN),SEG)),$E(H(DAYN),SEG)'=2,$E(P(DAYN),SEG) Q
|
---|
18 | I TYP["P","4"[$E(D(DAYN),SEG),$E(H(DAYN),SEG)'=2,$E(P(DAYN),SEG)=0 Q
|
---|
19 | ;
|
---|
20 | ; If Hybrid employee as defined by Public Law P.L. 107-135, check
|
---|
21 | ; to see if the time was on a tour of duty or an exception. Tours
|
---|
22 | ; worked on Sat or Sun qualify for Premium time. If the time was
|
---|
23 | ; an exception, check the Remarks Code to see if the segment can be
|
---|
24 | ; counted as Premium time.
|
---|
25 | ;
|
---|
26 | S (FND,NOTELG)=0
|
---|
27 | ; Quit if Sunday and employee is not entitled to Sun Prem Pay
|
---|
28 | Q:SATNOSUN&("^1^8^15^"[(U_DAY_U))&(TP="SUN")
|
---|
29 | I HYBRID!(PMP'=""&("^S^T^U^V^"[(U_PMP_U))) D Q:NOTELG
|
---|
30 | . ; Check to see if the time was on a tour or an exception
|
---|
31 | . N INC,END
|
---|
32 | . F TOURS=1,4,2 D Q:NOTELG!(FND)
|
---|
33 | . . S TOUR=$G(^TMP($J,"PRS8",DAYN,TOURS))
|
---|
34 | . . Q:TOUR=""
|
---|
35 | . . S INC=$S(TOURS=2:4,1:3)
|
---|
36 | . . S END=$S(TOURS=2:25,1:19)
|
---|
37 | . . F POST=1:INC:END I $P(TOUR,"^",POST)'="" D Q:NOTELG!(FND)
|
---|
38 | . . . ; Quit if SEG is not within the start/stop time
|
---|
39 | . . . Q:SEG<$P(TOUR,"^",POST)!(SEG>$P(TOUR,"^",POST+1))
|
---|
40 | . . . S FND=1
|
---|
41 | . . . Q:TOURS=1!(TOURS=4) ; If on a Tour it counts as Premium
|
---|
42 | . . . S RC=$P(TOUR,"^",POST+3)
|
---|
43 | . . . ; Remarks Code must be OT/CT on Premium (#9), Tour Coverage (#12)
|
---|
44 | . . . ; or CB - Premium T&L (#14) to qualify for Premium pay.
|
---|
45 | . . . I "^9^12^14^"'[("^"_RC_"^") S NOTELG=1
|
---|
46 | . Q:FND
|
---|
47 | . ;
|
---|
48 | . ; If we didn't find SEG in either of the two tours or the
|
---|
49 | . ; exceptions then check to see if it crossed over into this day.
|
---|
50 | . S PREVDAY=DAYN-1
|
---|
51 | . N INC,END
|
---|
52 | . F TOURS=1,4,2 D Q:NOTELG
|
---|
53 | . . S TOUR=$G(^TMP($J,"PRS8",PREVDAY,TOURS))
|
---|
54 | . . Q:TOUR=""
|
---|
55 | . . S INC=$S(TOURS=2:4,1:3)
|
---|
56 | . . S END=$S(TOURS=2:25,1:19)
|
---|
57 | . . F POST=1:4:25 I $P(TOUR,"^",POST)'="" D Q:NOTELG!(FND)
|
---|
58 | . . . ; Quit if SEG is not within the start/stop time
|
---|
59 | . . . Q:(SEG+96)<$P(TOUR,"^",POST)!((SEG+96)>$P(TOUR,"^",POST+1))
|
---|
60 | . . . S FND=1
|
---|
61 | . . . Q:TOURS=1!(TOURS=4) ; If on a Tour it counts as Premium
|
---|
62 | . . . S RC=$P(TOUR,"^",POST+3)
|
---|
63 | . . . ; Remarks Code must be OT/CT on Premium (#9), Tour Coverage (#12)
|
---|
64 | . . . ; or CB - Premium T&L (#14) to qualify for premium pay.
|
---|
65 | . . . I "^9^12^14^"'[("^"_RC_"^") S NOTELG=1
|
---|
66 | ;
|
---|
67 | I $E(H(DAYN),SEG)=1!($E(P(DAYN),SEG)=5) Q
|
---|
68 | ; determine special code
|
---|
69 | S SHIFT=1
|
---|
70 | I TP="SUN",TYP["W" D
|
---|
71 | . ; Check to see if shift 2 or 3 is recorded for the segment worked
|
---|
72 | . I "^2^3^"[(U_$E(D(DAYN),SEG)_U) S SHIFT=$E(D(DAYN),SEG) Q
|
---|
73 | . S FND=0,SC=""
|
---|
74 | . ; Check for Holiday Worked on a Holiday
|
---|
75 | . I $E(D(DAYN),SEG)="O",$E(H(DAYN),SEG)=2 D
|
---|
76 | . . F TDAY=DAYN,DAYN-1 D Q:FND
|
---|
77 | . . . S M1=$S(TDAY=DAYN:SEG,1:SEG+96)
|
---|
78 | . . . ; loop through both tours in day
|
---|
79 | . . . F NODE=1,4 S DAT=$G(^TMP($J,"PRS8",TDAY,NODE)) Q:DAT="" D Q:FND
|
---|
80 | . . . . ; loop through tour segments in tour
|
---|
81 | . . . . F TS=1:1:7 Q:$P(DAT,U,(TS-1)*3+1)="" D Q:FND
|
---|
82 | . . . . . ; check if time is contained in tour segment
|
---|
83 | . . . . . I M1'<$P(DAT,U,(TS-1)*3+1),M1'>$P(DAT,U,(TS-1)*3+2) D
|
---|
84 | . . . . . . S SC=$P(DAT,U,(TS-1)*3+3),SHIFT=$S(SC=6:2,SC=7:3,1:1)
|
---|
85 | . . . . . . I "^2^3^"[(U_SHIFT_U) S FND=1
|
---|
86 | ;
|
---|
87 | ; add to count
|
---|
88 | S CNT(DAYN,SHIFT)=$G(CNT(DAYN,SHIFT))+1
|
---|
89 | Q
|
---|
90 | ;
|
---|
91 | SAVE ; Update WK array with final count for tour
|
---|
92 | ; input
|
---|
93 | ; TP - type of premium (SAT or SUN)
|
---|
94 | ; CNT(day,shift)=amount
|
---|
95 | ;
|
---|
96 | N AMT,DAYN,PC,SHIFT,WEEK
|
---|
97 | S DAYN=0 F S DAYN=$O(CNT(DAYN)) Q:DAYN="" D
|
---|
98 | . Q:DAYN<1!(DAYN>14)
|
---|
99 | . S WEEK=$S(DAYN<8:1,1:2)
|
---|
100 | . S SHIFT="" F S SHIFT=$O(CNT(DAYN,SHIFT)) Q:SHIFT="" D
|
---|
101 | . . S AMT=CNT(DAYN,SHIFT)
|
---|
102 | . . S PC=$S(TP="SAT":0,1:SHIFT)+12
|
---|
103 | . . S $P(WK(WEEK),U,PC)=$P(WK(WEEK),U,PC)+AMT
|
---|
104 | Q
|
---|
105 | ;
|
---|
106 | ;PRS8WE
|
---|