| 1 | PRSARC09 ;WOIFO/JAH - automatically load continuous recess;5/31/07 | 
|---|
| 2 | ;;4.0;PAID;**112**;Sep 21, 1995;Build 54 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | AUTOREC(AWSST,AWSEND) ; Ask user: automatically schedule all available | 
|---|
| 7 | ; recess, continuously from a user specified date. | 
|---|
| 8 | W @IOF,!! | 
|---|
| 9 | N DIR,X,Y,DIRUT,I | 
|---|
| 10 | S DIR("A")="Set available recess, continously from a particular date" | 
|---|
| 11 | S DIR("?",1)=" You may now select a recess start date and all available " | 
|---|
| 12 | S DIR("?",2)=" recess will automatically be scheduled fully for each " | 
|---|
| 13 | S DIR("?",3)=" week from the date you pick.  If you answer NO, you may" | 
|---|
| 14 | S DIR("?",4)=" schedule recess by selecting weeks in the recess editor." | 
|---|
| 15 | S DIR("?",5)=" " | 
|---|
| 16 | S DIR("?",6)=" There are "_$P(PRSRWHRS,U,3)_" weeks or "_$P(PRSRWHRS,U,2)_" hours available for recess." | 
|---|
| 17 | S I=0 F  S I=$O(DIR("?",I)) Q:I'>0  W !,DIR("?",I) | 
|---|
| 18 | S DIR("B")="YES" | 
|---|
| 19 | S DIR(0)="Y" | 
|---|
| 20 | D ^DIR | 
|---|
| 21 | S (PRSAUTOR)=+Y | 
|---|
| 22 | Q:'PRSAUTOR 0 | 
|---|
| 23 | ; Find last date recess can start | 
|---|
| 24 | N X,X1,X2,RECSTART | 
|---|
| 25 | S X2=-(7*(($P(PRSRWHRS,U,3)+.9\1)-1)),X1=AWSEND D C^%DTC S AWSEND=X | 
|---|
| 26 | S RECSTART=$$AWSTART^PRSARC03(AWSST,AWSEND,"Enter Recess Start Date") | 
|---|
| 27 | Q:RECSTART'>0 0 | 
|---|
| 28 | ; convert RECESS start to 1st day of week | 
|---|
| 29 | N D1,DAY,PPI,PPE S D1=RECSTART D PP^PRSAPPU | 
|---|
| 30 | N X1,X2,X,%H S X1=D1,X2=-$S(DAY<8:DAY-1,1:DAY-8) D C^%DTC S RECSTART=X | 
|---|
| 31 | Q PRSAUTOR_U_RECSTART | 
|---|
| 32 | ; | 
|---|
| 33 | ; | 
|---|
| 34 | ADDAUTOR(PRSAUTOR) ; auto add recess to listman | 
|---|
| 35 | ; | 
|---|
| 36 | N LSTITEM,CTRH1,CTRH2,LOFHRS,LOFTH1,LOFTH2,WKDY1 | 
|---|
| 37 | N ITEM,Y,RH1,RH2,OUT,HRSLEFT,RDEFAULT,CRH,TOURHRS,D1,PPI,PPE | 
|---|
| 38 | ; | 
|---|
| 39 | ; get tour hours from latest pay period on file | 
|---|
| 40 | N PPI S PPI=$O(^PRST(458,999999),-1) | 
|---|
| 41 | N TH D TOURHRS^PRSARC07(.TH,PPI,+PRSNURSE,"") | 
|---|
| 42 | S LOFTH1=TH("W1"),LOFTH2=TH("W2") | 
|---|
| 43 | ; | 
|---|
| 44 | ; Initialize hours left for recess to 20 since 1 pay period minimum | 
|---|
| 45 | ; is 25% of 80 hours | 
|---|
| 46 | S HRSLEFT=20 | 
|---|
| 47 | S (OUT,ITEM,RDEFAULT)=0 | 
|---|
| 48 | S WKDY1=$P(PRSAUTOR,U,2)-1 | 
|---|
| 49 | F  S WKDY1=$O(FMWKS(WKDY1)) Q:WKDY1'>0!(HRSLEFT'>0)  D | 
|---|
| 50 | .  S HRSLEFT=$$HRSLEFT^PRSARC03() | 
|---|
| 51 | .  Q:HRSLEFT'>0 | 
|---|
| 52 | .  S ITEM=$G(FMWKS(WKDY1)) | 
|---|
| 53 | .  S LSTITEM=$G(^TMP("PRSLI",$J,ITEM)) | 
|---|
| 54 | .  S D1=WKDY1 D PP^PRSAPPU | 
|---|
| 55 | .  N TH D TOURHRS^PRSARC07(.TH,PPI,+PRSNURSE,"") | 
|---|
| 56 | .  S CTRH1=+TH("W1"),CTRH2=+TH("W2") | 
|---|
| 57 | .  S TOURHRS=$S(ITEM#2:CTRH1,1:CTRH2) | 
|---|
| 58 | .  S LOFHRS=$S(ITEM#2:LOFTH1,1:LOFTH2) | 
|---|
| 59 | .  I TOURHRS'>0 S TOURHRS=LOFHRS | 
|---|
| 60 | .  ;get remaining hours to schedule for FY | 
|---|
| 61 | .  I HRSLEFT<TOURHRS D | 
|---|
| 62 | ..    S RDEFAULT=HRSLEFT | 
|---|
| 63 | .  E  D | 
|---|
| 64 | ..   S RDEFAULT=TOURHRS | 
|---|
| 65 | .  I RDEFAULT<0 S RDEFAULT=0 | 
|---|
| 66 | . D FLDTEXT^VALM10(LSTITEM,"RECESS HOURS",$J(RDEFAULT,15,2)) | 
|---|
| 67 | .; | 
|---|
| 68 | .; set hrs for selected weeks, remove from array if zero | 
|---|
| 69 | .; | 
|---|
| 70 | . I RDEFAULT'>0 D | 
|---|
| 71 | ..  K ^TMP("PRSRW",$J,ITEM) | 
|---|
| 72 | . E  D | 
|---|
| 73 | ..  S ^TMP("PRSRW",$J,ITEM)=LSTITEM_U_RDEFAULT_U_WKDY1_U_"0" | 
|---|
| 74 | ; | 
|---|
| 75 | Q | 
|---|
| 76 | ; | 
|---|