1 | PRSPEAX ;WOIFO/SAB - CANCEL EXTENDED ABSENCE ;1/4/2005
|
---|
2 | ;;4.0;PAID;**93**;Sep 21, 1995;Build 7
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; Cancel Existing Extended Absence
|
---|
6 | ;
|
---|
7 | N DIR,DIROUT,DIRUT,DTOUT,DUOUT,EAIEN,EALIST,EAY0,ESRU
|
---|
8 | N PERSTR,PEREND,PRSFDA,PRSIEN,PRSLCK,PRSLCKE,X,X1,Y
|
---|
9 | ;
|
---|
10 | ; determine Employee IEN
|
---|
11 | S PRSIEN=$$PRSIEN^PRSPUT2(1)
|
---|
12 | I 'PRSIEN G EXIT
|
---|
13 | ;
|
---|
14 | ; verify that user has electronic signature code
|
---|
15 | I '$$ESIGC^PRSPUT2(1) G EXIT
|
---|
16 | ;
|
---|
17 | SEL ; select extended absence
|
---|
18 | W @IOF W !?26,"VA TIME & ATTENDANCE SYSTEM"
|
---|
19 | W !?28,"CANCEL EXTENDED ABSENCE",!
|
---|
20 | ;
|
---|
21 | ; build list in EALIST( array
|
---|
22 | D BLDLST^PRSPEAU(PRSIEN,DT,"^A^")
|
---|
23 | ;
|
---|
24 | ; display list (exit if ^ or time-out during list display)
|
---|
25 | G:$$DISLST^PRSPEAU() EXIT
|
---|
26 | ;
|
---|
27 | I EALIST(0)=0 G EXIT ; nothing to select
|
---|
28 | ;
|
---|
29 | ; select item from list
|
---|
30 | W !
|
---|
31 | S DIR(0)="NO^1:"_EALIST(0)
|
---|
32 | S DIR("A")="Cancel which extended absence #?"
|
---|
33 | D ^DIR K DIR G:Y'>0!$D(DIRUT) EXIT
|
---|
34 | S EAIEN=EALIST(+Y)
|
---|
35 | S EAY0=$G(^PRST(458.4,EAIEN,0))
|
---|
36 | ;
|
---|
37 | ; Lock EA
|
---|
38 | L +^PRST(458.4,EAIEN):2
|
---|
39 | I '$T D G AGAIN
|
---|
40 | . W $C(7),!,"Another user is editing this extended absence!"
|
---|
41 | ;
|
---|
42 | ; Display EA
|
---|
43 | W @IOF D DISEA^PRSPEAU(EAIEN) W !
|
---|
44 | ;
|
---|
45 | ; set ESRU to indicate any restruction for ESR updates upon EA cancel.
|
---|
46 | ; if absence includes prior days then they will not be updated on ESR
|
---|
47 | ; if absence includes Today and RG posted then Today can't be updated
|
---|
48 | ; restruction: 0 = none, 1 = prior to Today, 2 = Today and prior
|
---|
49 | S ESRU=0 ; init with no restriction
|
---|
50 | ; check if EA includes Today and if RG already posted to Today
|
---|
51 | I $P(EAY0,U)'>DT,$$CHKRG^PRSPEAU(PRSIEN) S ESRU=2
|
---|
52 | ; if Today OK then check if EA includes any prior days
|
---|
53 | I 'ESRU,$P(EAY0,U)<DT S ESRU=1
|
---|
54 | ;
|
---|
55 | ; Determine ESR period to update
|
---|
56 | S PERSTR=$S(ESRU=2:$$FMADD^XLFDT(DT,1),ESRU=1:DT,1:$P(EAY0,U))
|
---|
57 | S PEREND=$P(EAY0,U,2)
|
---|
58 | ;
|
---|
59 | ; Warn User if any restrictions
|
---|
60 | I ESRU D
|
---|
61 | . W !!,"This extended absence includes some ESR days that can't be"
|
---|
62 | . W !,"automatically updated if the absence is cancelled. Note that"
|
---|
63 | . W !,"ESR days before "_$$FMTE^XLFDT(PERSTR)_" won't be automatically modified."
|
---|
64 | . W !,"If appropriate, please manually update those earlier ESR days.",!
|
---|
65 | ;
|
---|
66 | ; Confirm Cancel
|
---|
67 | S DIR(0)="Y",DIR("A")="Do you want to cancel this extended absence" D ^DIR K DIR I 'Y L -^PRST(458.4,EAIEN) G:$D(DIRUT) EXIT G:'Y SEL
|
---|
68 | ;
|
---|
69 | ; e-sig
|
---|
70 | D SIG^XUSESIG
|
---|
71 | I X1="" L -^PRST(458.4,EAIEN) G AGAIN
|
---|
72 | ;
|
---|
73 | ; lock timecards for applicable opened pay periods
|
---|
74 | D LCK^PRSPAPU(PRSIEN,PERSTR,PEREND,.PRSLCK,.PRSLCKE)
|
---|
75 | ;
|
---|
76 | ; if some time cards couldn't be locked then report error and quit
|
---|
77 | I $D(PRSLCKE) D G AGAIN
|
---|
78 | . D TCULCK^PRSPAPU(PRSIEN,.PRSLCK) ; remove any TC locks
|
---|
79 | . D RLCKE^PRSPAPU(.PRSLCKE,1) ; report failed locks
|
---|
80 | . K PRSLCKE
|
---|
81 | ;
|
---|
82 | ; Update EA
|
---|
83 | S PRSFDA(458.4,EAIEN_",",4)=$$NOW^XLFDT() ; d/t updated
|
---|
84 | S PRSFDA(458.4,EAIEN_",",5)="X" ; status = cancelled
|
---|
85 | D FILE^DIE("","PRSFDA") D MSG^DIALOG()
|
---|
86 | ;
|
---|
87 | ; Update ESRs
|
---|
88 | D UEA^PRSPEAA(PRSIEN,PERSTR,PEREND)
|
---|
89 | ;
|
---|
90 | W !,"The extended absence has been cancelled."
|
---|
91 | ;
|
---|
92 | ; Unlock time cards
|
---|
93 | D TCULCK^PRSPAPU(PRSIEN,.PRSLCK)
|
---|
94 | ;
|
---|
95 | ; unlock EA
|
---|
96 | L -^PRST(458.4,EAIEN)
|
---|
97 | ;
|
---|
98 | ; Pause and repeat
|
---|
99 | AGAIN S DIR(0)="E" D ^DIR K DIR G:$D(DIRUT) EXIT
|
---|
100 | G SEL
|
---|
101 | ;
|
---|
102 | EXIT ; exit point
|
---|
103 | Q
|
---|
104 | ;
|
---|
105 | ;PRSPEAX
|
---|