| 1 | PRSATP3 ;HISC/MGD-Timekeeper Post Absence ;01/03/06 | 
|---|
| 2 | ;;4.0;PAID;**102**;Sep 21, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | HENCAP(PPI,DFN,WDAY,DBH,HOL,DAH,QUIT) ; | 
|---|
| 5 | ; Check to see if there is a Holiday encapsulated by some form of non-pay. | 
|---|
| 6 | ; Called from Timekeeper Posting routine ^PRSATP | 
|---|
| 7 | ; | 
|---|
| 8 | ; Test #1            | DBH  HOL  DAH | 
|---|
| 9 | ; Test #2        DBH | HOL  DAH | 
|---|
| 10 | ; Test #3   DBH  HOL | DAH | 
|---|
| 11 | ; Test #4  DBH | HOL | DAH | 
|---|
| 12 | ; | 
|---|
| 13 | ;  Input: | 
|---|
| 14 | ;    PPI - IEN of current pay period | 
|---|
| 15 | ;    DFN - IEN of employee | 
|---|
| 16 | ;   WDAY - Day to begin testing | 
|---|
| 17 | ;    DBH - null | 
|---|
| 18 | ;    HOL - null | 
|---|
| 19 | ;    DAH - null | 
|---|
| 20 | ;   QUIT - null | 
|---|
| 21 | ; | 
|---|
| 22 | ; Output: If set these variables will contain the following | 
|---|
| 23 | ;    DAH - PPI^DAY^type of non-pay | 
|---|
| 24 | ;    DBH - PPI^DAY^type of non-pay | 
|---|
| 25 | ;    HOL - PPI^DAY^Status of timecard that contains holiday | 
|---|
| 26 | ;   QUIT - Will be set to 1 when holiday encapsulation test fails | 
|---|
| 27 | ;          and no additional checks need to be made. | 
|---|
| 28 | N BACK,PPIP | 
|---|
| 29 | S PPIP=PPI | 
|---|
| 30 | ; | 
|---|
| 31 | ; Check Day After Holiday | 
|---|
| 32 | D DAH^PRSATP7(PPIP,DFN,WDAY,.DAH,.QUIT) | 
|---|
| 33 | I DAH="" S QUIT=1 | 
|---|
| 34 | Q:QUIT | 
|---|
| 35 | ; | 
|---|
| 36 | ; Find Holiday | 
|---|
| 37 | S BACK=0 | 
|---|
| 38 | F  D  Q:QUIT!(HOL'="")!(HOL=""&BACK=2) | 
|---|
| 39 | . S WDAY=WDAY-1 | 
|---|
| 40 | . I WDAY=0 D GETPPP^PRSATP5(.PPIP,DFN,.WDAY,.BACK,.QUIT) | 
|---|
| 41 | . I BACK=2 S QUIT=1 Q | 
|---|
| 42 | . D FNDHOL^PRSATP8(PPIP,DFN,WDAY,.HOL,.QUIT) | 
|---|
| 43 | Q:QUIT | 
|---|
| 44 | ; | 
|---|
| 45 | ; Find Previous Work Day | 
|---|
| 46 | S PPIP=$P(HOL,U,1),WDAY=$P(HOL,U,2),BACK=0 | 
|---|
| 47 | F  D  Q:QUIT!(DBH'="")!(DBH=""&BACK=2) | 
|---|
| 48 | . S WDAY=WDAY-1 | 
|---|
| 49 | . I WDAY=0 D GETPPP^PRSATP5(.PPIP,DFN,.WDAY,.BACK,.QUIT) | 
|---|
| 50 | . I BACK=2 S QUIT=1 Q | 
|---|
| 51 | . D DBH^PRSATP6(PPIP,DFN,WDAY,.DBH,.QUIT) | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | UPDT(DFN,DBH,HOL,DAH) ; Perform final checks | 
|---|
| 55 | ; Input: | 
|---|
| 56 | ;   DFN - IEN of employee | 
|---|
| 57 | ;   DBH - PPI^DAY^type of non-pay | 
|---|
| 58 | ;   HOL - PPI^DAY^Status of timecard that contains holiday | 
|---|
| 59 | ;   DAH - PPI^DAY^type of non-pay | 
|---|
| 60 | ; | 
|---|
| 61 | ; Output: | 
|---|
| 62 | ;       Displays Holiday encapsulation message to Timekeeper and whether | 
|---|
| 63 | ;       or not it was able to chance the HX postings to the apppriate | 
|---|
| 64 | ;       form of non-pay | 
|---|
| 65 | ; | 
|---|
| 66 | ; Holiday was encapsulated by non-pay.  Perform final checks. | 
|---|
| 67 | N HDAY,HIEN,HPPI,HOLEX,HOLIN,IEN4585,LSTAT,PPI,PRSIEN,SEG,TOT | 
|---|
| 68 | N TSTAT,PRSFDA,SEG,SOH | 
|---|
| 69 | S HPPI=$P(HOL,U,1),HDAY=$P(HOL,U,2),PPI=$P(DAH,U,1) | 
|---|
| 70 | S HOLEX=$P(^PRST(458,HPPI,2),U,HDAY) ; External date | 
|---|
| 71 | S HOLIN=$P(^PRST(458,HPPI,1),U,HDAY) ; Internal date | 
|---|
| 72 | ; | 
|---|
| 73 | ; Compare types of non-pay before and after | 
|---|
| 74 | S TOT=$S($P(DBH,U,3)'=$P(DAH,U,3):"NP",1:$P(DAH,U,3)) | 
|---|
| 75 | ; | 
|---|
| 76 | ; If holiday is in the current PP, employee timecard will already | 
|---|
| 77 | ; be locked.  If holiday is in prior pay period try to lock it. | 
|---|
| 78 | ; LSTAT = 1 - Holiday in current PP and was already locked | 
|---|
| 79 | ;       = 2 - Holiday in prior PP and lock was obtained | 
|---|
| 80 | ;       = 3 - Holiday in prior PP and lock was not obtained | 
|---|
| 81 | ; | 
|---|
| 82 | I PPI=HPPI S LSTAT=1 | 
|---|
| 83 | I PPI'=HPPI D | 
|---|
| 84 | . L +^PRST(458,HPPI,"E",DFN):2 | 
|---|
| 85 | . S LSTAT=$S($T:2,1:3) | 
|---|
| 86 | S SOH=$P(^PRST(458,HPPI,"E",DFN,0),U,2) ; Get current status of holiday | 
|---|
| 87 | ; | 
|---|
| 88 | ; Change HX to appropriate form of non-pay | 
|---|
| 89 | S HIEN=HDAY_","_DFN_","_HPPI_"," | 
|---|
| 90 | F SEG=43:4:67 D | 
|---|
| 91 | . I $$GET1^DIQ(458.02,HIEN,SEG)="HX" D | 
|---|
| 92 | . . S PRSIEN(458.02,HIEN,SEG)=TOT | 
|---|
| 93 | I $D(PRSIEN),LSTAT<3,SOH="T" D UPDATE^DIE("","PRSIEN","HIEN"),MSG^DIALOG() | 
|---|
| 94 | ; | 
|---|
| 95 | ; Display appropriate message based on Lock and timecard status | 
|---|
| 96 | W !!,"Due to the non-pay posting on this day the holiday occurring on ",HOLEX | 
|---|
| 97 | W !,"was encapsulated with non-pay.  " | 
|---|
| 98 | ; | 
|---|
| 99 | ; If we could autopost non-pay | 
|---|
| 100 | I LSTAT<3,SOH="T" D | 
|---|
| 101 | . W "The HX postings were automatically updated to" | 
|---|
| 102 | . W !,"the appropriate form of non-pay." | 
|---|
| 103 | ; | 
|---|
| 104 | ; If we could not autopost non-pay because timecard was in a status other | 
|---|
| 105 | ; than T (Timekeeper) | 
|---|
| 106 | I SOH'="T" D | 
|---|
| 107 | . W "The HX postings could not be automatically" | 
|---|
| 108 | . W !,"updated to the appropriate form of non-pay because the status of the holiday" | 
|---|
| 109 | . W !,"was not TIMEKEEPER.  You will need to manually address this issue." | 
|---|
| 110 | . D SET | 
|---|
| 111 | ; | 
|---|
| 112 | ; If we could not autopost non-pay because the timecard was currently locked | 
|---|
| 113 | ; by another user | 
|---|
| 114 | I LSTAT=3,SOH="T" D | 
|---|
| 115 | . W "The HX postings could not be automatically" | 
|---|
| 116 | . W !,"updated to the appropriate form of non-pay because the timecard was locked" | 
|---|
| 117 | . W !,"by another user.  You will need to manually address this issue." | 
|---|
| 118 | . D SET | 
|---|
| 119 | Q | 
|---|
| 120 | ; | 
|---|
| 121 | SET ; Add entry to #458.5 | 
|---|
| 122 | S PRSFDA(458.5,"+1,",.01)=DFN ;  Employee | 
|---|
| 123 | S PRSFDA(458.5,"+1,",1)=DFN ;  Employee | 
|---|
| 124 | S PRSFDA(458.5,"+1,",2)=HOLIN ; Date of exception | 
|---|
| 125 | S PRSFDA(458.5,"+1,",4)="HX was encapsulated by non-pay" ; Type of Exception | 
|---|
| 126 | D UPDATE^DIE("","PRSFDA","IEN4585"),MSG^DIALOG() | 
|---|
| 127 | ; | 
|---|
| 128 | ; Reset .01 field to sequence number | 
|---|
| 129 | S IEN4585=IEN4585(1)_"," | 
|---|
| 130 | S PRSFDA(458.5,IEN4585,.01)=IEN4585(1) ; Sequence # | 
|---|
| 131 | D UPDATE^DIE("","PRSFDA","IEN4585"),MSG^DIALOG() | 
|---|
| 132 | Q | 
|---|