[613] | 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
|
---|