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