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
|
---|