Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PRSRL12

PRSRL12.m

Go to the documentation of this file.
PRSRL12 ;HISC/JH,WCIOFO/SAB-INDIVIDUAL EMPLOYEE LEAVE USED REPORT ;08/27/01
 ;;4.0;PAID;**2,5,19,39,34,69**;Sep 21, 1995
 ; prints leave used report when specific employee selected
 N MLINHRS
 S (PAGE,POUT)=0,DAT2=$$FMTE^XLFDT(DT)
 D HDR3
 D TYPSTF^PRSRUT0 ; returns SW(2): = 77 for daily tour, else = 73
 S MLINHRS=$$MLINHRS^PRSAENT(DFN)
 ; init totals for all leave types
 F I=1:1 S X=$P($P(LVT,";",I+1),":") Q:X=""  S TLEV(X)=""
 ;
 ; Add 2 types of leave to hold break out totals of
 ; comp/credit--credit hours & compensatory.
 ;
 S (TLEV("CUCOMP"),TLEV("CUCRED"))=""
 ; loop thru instances of wrk nodes containing leave
 S INX=0 F  S INX=$O(^TMP($J,"USE",INX)) Q:INX'>0  D  Q:POUT
 . ; loop thru pay periods (nn)
 . S PP="" F  S PP=$O(^TMP($J,"USE",INX,PP)) Q:PP=""  D  Q:POUT
 .. ; loop thru leave date (fileman)
 .. S DATE=0
 .. F  S DATE=$O(^TMP($J,"USE",INX,PP,DATE)) Q:DATE'>0  D  Q:POUT
 ... ; loop thru leave date (external)
 ... S DAY=""
 ... F  S DAY=$O(^TMP($J,"USE",INX,PP,DATE,DAY)) Q:DAY=""  D  Q:POUT
 .... S TOUR=$G(^TMP($J,"USE",INX,PP,DATE,DAY)) Q:TOUR=""
 .... D:$Y+5>IOSL HDR Q:POUT
 .... ; start detail line - only print pp and date when changed
 .... W !,"|"
 .... I PP'=PP(1) W PP S PP(1)=PP
 .... W ?4,"|"
 .... I DAY'=DAY(1) W DAY S DAY(1)=DAY
 .... W ?19,"|"
 .... S SW(3)=0 ; flag, set false to suppress new line when 1st segment
 .... ; loop thru segments in node - data source and format from
 .... ;   node 2 for day, empl. in #458 but ONLY contains leave
 .... F K=1:4 Q:$P(TOUR,"^",K+2)=""  D
 ..... N COMPCRED S LEV=$P(TOUR,"^",K+2) ; leave type (internal code)
 ..... W:SW(3) !,"|",?4,"|",?19,"|" ; new line for subsequent segments
 ..... S %=$F(LVT,";"_LEV_":")
 ..... ;comp/credit (CU) is distinguishable by time remarks code (K+3)
 ..... S:LEV="CU" COMPCRED=$S($P(TOUR,"^",K+3)=16:"Credit Hours",1:"Compensatory")
 ..... ;display leave type
 ..... W:%>0 $S(LEV="CU":COMPCRED,1:$P($E(LVT,%,999),";"))
 ..... W:LEV="LWOP" " - AWOL"
 ..... W ?41,"|",$P(TOUR,"^",K),?49,"|",$P(TOUR,"^",K+1),?57,"|"
 ..... ; call PRSRLL to set TIM (elasped time) and TYL (D day, H hour)
 ..... S Z="^^"_DATE_"^"_$P(TOUR,"^",K)_"^"_DATE_"^"_$P(TOUR,"^",K+1)
 ..... I LEV="ML" D  ; For Military Leave - PRS*4.0*69
 ...... I MLINHRS D H^PRSRLL Q
 ...... D D^PRSRLL
 ..... D D^PRSRLL:LEV'="ML"&(SW(2)=77) ; daily tour
 ..... D H^PRSRLL:LEV'="ML"&(SW(2)=73) ; else hour
 ..... W ?57,$S(SW(2)=77:$J(TIM,4),1:$J(TIM,7,2))
 ..... W " ",$S(TYL="H":"Hour",1:"Day")_$S(TIM="":"",TIM'=1:"s",1:"")
 ..... W ?79,"|"
 ..... S TLEV(LEV)=TLEV(LEV)+TIM ; add to total for type of leave
 ..... I LEV="CU" S TLEV($S($P(TOUR,"^",K+3)=16:"CUCRED",1:"CUCOMP"))=TLEV($S($P(TOUR,"^",K+3)=16:"CUCRED",1:"CUCOMP"))+TIM
 ..... S SW(3)=1 ; set flag true so next segment (if any) on new line
 ;
 I 'CNT D
 . D VLIN0
 . W !,"|",?10,"No Leave Usage on File within this Date Range.",?79,"|"
 ;
 ; report totals
 I CNT,'POUT D
 . D HDR:$Y+7>IOSL
 . D VLIN0
 . W !,"|",?4,"|",?19,"|",?27,"TOTALS:"
 . S SW(3)=0 ; set false so 1st type of leave printed on same line
 . ; loop thru leave type totals
 . S LEV="" F  S LEV=$O(TLEV(LEV)) Q:LEV=""  D  Q:POUT
 .. Q:TLEV(LEV)=""  ; none of this type of leave found
 .. D:$Y+5>IOSL HDR Q:POUT
 .. W:SW(3) !,"|",?4,"|",?19,"|",?39 ; new line when not first leave type
 .. S %=$F(LVT,";"_LEV_":") W:%>0 ?39,$P($E(LVT,%,999),";") ; leave type
 .. ;write out subtotals for comp/credit
 .. I LEV="CUCOMP" W ?42,"Compensatory"
 .. I LEV="CUCRED" W ?42,"Credit Hours"
 .. W ?58,$S(SW(2)=77:$J($G(TLEV(LEV)),4),1:$J($G(TLEV(LEV)),7,2))
 .. W " "
 .. I LEV="ML" W $S(MLINHRS:"Hour",1:"Day")
 .. I LEV'="ML" W $S(SW(2)=77:"Day",1:"Hour")
 .. W $S(TLEV(LEV)'=1:"s",1:""),?79,"|"
 .. S:'SW(3) SW(3)=1 ; set true so next leave type on new line
 ;
 ; report footer
 I 'POUT D
 . I IOSL<66 F I=$Y:1:IOSL-6 D VLIN0
 . D VLIDSH0
 . S CODE="L003",FOOT="VA TIME & ATTENDANCE SYSTEM" D FOOT2^PRSRUT0
 . I $E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR K DIR
 ;
 Q
 ;
HDR ; page break
 I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1,POUT=1 Q
 D VLIDSH0
 S CODE="L003",FOOT="VA TIME & ATTENDANCE SYSTEM" D FOOT2^PRSRUT0
 I $E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR K DIR I 'Y S POUT=1 Q
HDR3 ; page header
 I $E(IOST,1,2)="C-"!PAGE W @IOF
 S PAGE=PAGE+1
 W !?31,^TMP($J,"USE"),?60,"DATE: ",DAT2
 W !?22,"from: ",XX," to: ",YY
 W !?24,"for: ",NAM," - T&L: ",TLE,!
 D VLIDSH0
 W !,"|","PP",?4,"|","DATE",?19,"|","TYPE",?41,"|","FROM",?49,"|","TO",?57,"|","LENGTH",?79,"|"
 D VLIDSH0
 S (PP(1),DAY(1))="" ; forces pp and leave date to print on new page
 Q
 ;
VLIDSH0 ; dashed line (with columns)
 W !,"|---|--------------|---------------------|-------|-------|---------------------|"
 Q
 ;
VLIN0 ; blank line (with columns)
 W !,"|",?4,"|",?19,"|",?41,"|",?49,"|",?57,"|",?79,"|"
 Q