| 1 | PRSA8BNI ;WOIFO/JAH - Tour Hours vs 8B Norm Hrs Report ;3/5/08
 | 
|---|
| 2 |  ;;4.0;PAID;**116**;Sep 21, 1995;Build 23
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | GETPP() ;prompt for pay period
 | 
|---|
| 7 |  N DIC,X,Y,PPI,DTOUT
 | 
|---|
| 8 |  S DIC="^PRST(458,",DIC(0)="AEQM",DIC("A")="Select PAY PERIOD: "
 | 
|---|
| 9 |  W !
 | 
|---|
| 10 |  D ^DIC
 | 
|---|
| 11 |  S PPI=+Y
 | 
|---|
| 12 |  I $D(DTOUT)!(+Y'>0) S PPI=0
 | 
|---|
| 13 |  Q PPI
 | 
|---|
| 14 | NOTOURS() ;return true if user wants to see data from employees with
 | 
|---|
| 15 |  ;        no tour of duty set up yet
 | 
|---|
| 16 |  ;        otherwise return 0 or -1 for abort
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  N DIR,DIRUT,Y
 | 
|---|
| 19 |  S DIR(0)="Y"
 | 
|---|
| 20 |  S DIR("B")="N"
 | 
|---|
| 21 |  S DIR("A")="Include employees with no tour of duty entered"
 | 
|---|
| 22 |  D ^DIR
 | 
|---|
| 23 |  Q:$D(DIRUT) -1
 | 
|---|
| 24 |  Q +Y
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | NOTCARD() ;return true if user wants to see data from employees with
 | 
|---|
| 27 |  ;  no timecard on file, ie no entry for pp in 458
 | 
|---|
| 28 |  ;  otherwise return 0 or -1 for abort
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  N DIR,DIRUT,Y
 | 
|---|
| 31 |  S DIR(0)="Y"
 | 
|---|
| 32 |  S DIR("B")="N"
 | 
|---|
| 33 |  S DIR("A")="Include employees with no timecard on file"
 | 
|---|
| 34 |  D ^DIR
 | 
|---|
| 35 |  Q:$D(DIRUT) -1
 | 
|---|
| 36 |  Q +Y
 | 
|---|
| 37 | DAILYHRS() ;return true if user wants to see tour hours for each day
 | 
|---|
| 38 |  ;  otherwise return 0 or -1 for abort
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  N DIR,DIRUT,Y
 | 
|---|
| 41 |  S DIR(0)="Y"
 | 
|---|
| 42 |  S DIR("B")="N"
 | 
|---|
| 43 |  S DIR("A")="Include employees daily tour hours"
 | 
|---|
| 44 |  D ^DIR
 | 
|---|
| 45 |  Q:$D(DIRUT) -1
 | 
|---|
| 46 |  Q +Y
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | TRHDR ;
 | 
|---|
| 49 |  W !!,?7,"Day",?12,"ToD #*",?19,"Tour Week 1",?34,"Hours*",?47,"ToD #*",?54,"Tour Week 2",?69,"Hours*"
 | 
|---|
| 50 |  W !,?7,"---",?12,"-----",?19,"-----------",?34,"-----",?47,"-----",?54,"-----------",?69,"-----"
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 | EMPINFO(PRSENAME,PRSSN,HRS) ;
 | 
|---|
| 53 |  W !!?2,PRSENAME,?26,PRSSN,?44,$P(HRS,U),?55,$P(HRS,U,2)
 | 
|---|
| 54 |  I $G(DUZ(0))="@" W ?63,PRSIEN
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | HDR(PG,TSTAMP,END,FORWHO,PPE,PPRANGE) ;
 | 
|---|
| 57 |  S PG=PG+1
 | 
|---|
| 58 |  W @IOF
 | 
|---|
| 59 |  N H1,H2,B
 | 
|---|
| 60 |  S H1="VA TIME & ATTENDANCE REPORT "_FORWHO_"--"_TSTAMP
 | 
|---|
| 61 |  S B=$E("               ",1,(IOM-$L(H1))\2-3-$L(PG))
 | 
|---|
| 62 |  S H2="Tour Hrs Don't Match 8B Normal Hrs:  PP "_PPE_" ("_PPRANGE_")"
 | 
|---|
| 63 |  W !,?(IOM-$L(H1)\2),H1,B,"p",PG,!,?(IOM-$L(H2)\2),H2
 | 
|---|
| 64 |  Q:END
 | 
|---|
| 65 |  W !!,?2,"EMPLOYEE NAME",?26,"    SSN",?40,"8B NRM HRS   ToD HRS*"
 | 
|---|
| 66 |  I $G(DUZ(0))="@" W ?63,"IEN 450"
 | 
|---|
| 67 |  W !?2,"======================",?26,"===========",?40,"==========   ======="
 | 
|---|
| 68 |  I $G(DUZ(0))="@" W "   ======="
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | RET(TSTAMP) ;
 | 
|---|
| 72 |  I ($E(IOST,1,2)'="C-")!($D(ZTQUEUED)) D HDR(.PG,TSTAMP,0,FORWHO,PPE,PPRANGE) Q 0
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  N OUT
 | 
|---|
| 75 |  S OUT=$$ASK^PRSLIB00(1)
 | 
|---|
| 76 |  I 'OUT D HDR(.PG,TSTAMP,0,FORWHO,PPE,PPRANGE)
 | 
|---|
| 77 |  Q OUT
 | 
|---|
| 78 | GETHOURS(PPI,PRSIEN) ; Return TOUR HOURS AND NORMAL HOURS
 | 
|---|
| 79 |  N MATCH,HRS,NH,ENT,ENTPTR,DFN,TH
 | 
|---|
| 80 |  I $G(PPI)'>0!($G(PRSIEN)'>0) Q 1
 | 
|---|
| 81 |  S MATCH=1
 | 
|---|
| 82 |  S NH=-1
 | 
|---|
| 83 |  S ENTPTR=$P($G(^PRST(458,PPI,"E",PRSIEN,0)),U,5)
 | 
|---|
| 84 |  I ENTPTR'="" D
 | 
|---|
| 85 |  .  S ENT=$P($G(^PRST(457.5,ENTPTR,1)),U)
 | 
|---|
| 86 |  .  S NH=$E($G(^PRST(458,PPI,"E",PRSIEN,5)),26,27)
 | 
|---|
| 87 |  .  Q:NH="00"
 | 
|---|
| 88 |  .  I +NH'>0 S NH=$P($G(^PRSPC(PRSIEN,0)),U,50)
 | 
|---|
| 89 |  I $G(ENT)="" S DFN=PRSIEN D ^PRSAENT
 | 
|---|
| 90 |  I $G(ENT)'="",$E(ENT)'="D",($E(ENT,1,2)'="0D") D
 | 
|---|
| 91 |  .  D TOURHRS^PRSARC07(.HRS,PPI,PRSIEN)
 | 
|---|
| 92 |  .  S TH=($G(HRS("W1"))+$G(HRS("W2")))
 | 
|---|
| 93 |  Q NH_U_TH
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 | REPDONE(OUT,TLECNT,TSTAMP,DAILYHRS,GRANDTOT) ; report done display page
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  I TLECNT=0 D HDR(.PG,TSTAMP,1,FORWHO,PPE,PPRANGE) W !,"NO T&L UNITS WERE FOUND ASSIGNED TO YOU THAT COULD BE CHECKED." Q
 | 
|---|
| 98 |  I 'OUT,$Y>(IOSL-24) S OUT=$$ASK^PRSLIB00(1) D HDR(.PG,TSTAMP,1,FORWHO,PPE,PPRANGE)
 | 
|---|
| 99 |  I OUT W !!,"********REPORT ABORTED*********"
 | 
|---|
| 100 |  E  W !!,"REPORT COMPLETED.  TOTAL MISMATCHES FOUND:  ",GRANDTOT
 | 
|---|
| 101 |  W !,"================================================================="
 | 
|---|
| 102 |  N TXT,I
 | 
|---|
| 103 |  W !
 | 
|---|
| 104 |  F I=1:1 S TXT=$P($T(ALLFT+I),";",3) Q:TXT=""  W !,TXT
 | 
|---|
| 105 |  I DAILYHRS D
 | 
|---|
| 106 |  .  F I=1:1 S TXT=$P($T(DAILYFT+I),";",3) Q:TXT=""  W !,TXT
 | 
|---|
| 107 |  S OUT=$$ASK^PRSLIB00(1)
 | 
|---|
| 108 |  Q
 | 
|---|
| 109 | ALLFT ;;
 | 
|---|
| 110 |  ;;                   FOOTNOTES TO REPORT HEADINGS
 | 
|---|
| 111 |  ;;                   ============================
 | 
|---|
| 112 |  ;;*ToD HRS (Tour of Duty Hours) The total Tour of Duty hours that fall within the
 | 
|---|
| 113 |  ;;--------  two week pay period, beginning midnight Saturday.  Hours that cross 
 | 
|---|
| 114 |  ;;          midnight from a tour that starts on the last day of a pay period will
 | 
|---|
| 115 |  ;;          appear on the following pay period.
 | 
|---|
| 116 |  ;;.....................................................................
 | 
|---|
| 117 | DAILYFT ;;
 | 
|---|
| 118 |  ;;*Hours   (DAILY TOUR HOURS) This column contains actual tour hours that fall
 | 
|---|
| 119 |  ;;------    on that day from the 24 hour period beginning at midnight.  A two day
 | 
|---|
| 120 |  ;;          tour will contribute hours to each day the tour falls on.  Hours 
 | 
|---|
| 121 |  ;;          that cross midnight from a tour that starts on the last day of a pay
 | 
|---|
| 122 |  ;;          period will appear on the following pay period.
 | 
|---|
| 123 |  ;;.....................................................................
 | 
|---|
| 124 |  ;;*ToD #   (Tour of Duty Number)
 | 
|---|
| 125 |  ;;------
 | 
|---|
| 126 |  ;;.....................................................................
 | 
|---|