VistA-WorldVistAEHR/r/ENGINEERING-EN/ENFACTL.m

140 lines
5.7 KiB
Mathematica

ENFACTL ;(WCIOFO)/SAB-FAP CAPITALIZATION THRESHOLD LIST ;10/14/1999
;;7.0;ENGINEERING;**63**;Aug 17, 1993
EN ;
; ask device
S %ZIS="QM" D ^%ZIS G:POP EXIT
I $D(IO("Q")) D G EXIT
. S ZTRTN="QEN^ENFACTL"
. S ZTDESC="ENG List Equip to be Expensed"
. D ^%ZTLOAD,HOME^%ZIS K ZTSK
;
QEN ; queued entry
U IO
;
COLLECT ; collect data
S END=0 ; init flag, =true if user stopped job
K ENT ; totals ENT(station,fund,sgl)
; =capitalized count^$^to be expensed count^$
K ^TMP($J)
;
; loop thru equipment in FA DOCUMENT LOG file
S ENDA=0 F S ENDA=$O(^ENG(6915.2,"B",ENDA)) Q:'ENDA D
. Q:+$$CHKFA^ENFAUTL(ENDA)'>0 ; not currently reported to FAP
. ; get equipment data
. S ENSN=$$GET1^DIQ(6914,ENDA_",",60)_" " S:ENSN=" " ENSN="UNK"
. S ENFUND=$$GET1^DIQ(6914,ENDA_",",62)_" " S:ENFUND=" " ENFUND="UNK"
. S ENSGL=$$GET1^DIQ(6914,ENDA_",",38) S:ENSGL="" ENSGL="UNK"
. S ENVAL=$$GET1^DIQ(6914,ENDA_",",12)
. ; update capitalized count and amount
. S $P(ENT(ENSN,ENFUND,ENSGL),U)=$P($G(ENT(ENSN,ENFUND,ENSGL)),U)+1
. S $P(ENT(ENSN,ENFUND,ENSGL),U,2)=$P(ENT(ENSN,ENFUND,ENSGL),U,2)+ENVAL
. ; quit if item should not be expensed
. Q:$P($$CHKEXP^ENFACTU(ENDA),U)'=1
. ; put on sorted list of items that will be expensed and update counts
. S ENSYS=+$$TOPSYS^ENFACTU(ENDA) ; plus value to treat ? as standalone
. S ENSYSV=+$S(ENSYS>0:$$SYSVAL^ENFACTU(ENSYS,"C"),1:ENVAL)
. S ^TMP($J,ENSN,ENSYSV,ENSYS,ENDA)=""
. S $P(ENT(ENSN,ENFUND,ENSGL),U,3)=$P(ENT(ENSN,ENFUND,ENSGL),U,3)+1
. S $P(ENT(ENSN,ENFUND,ENSGL),U,4)=$P(ENT(ENSN,ENFUND,ENSGL),U,4)+ENVAL
;
PRINT ; print results
S ENPG=0 D NOW^%DTC S Y=% D DD^%DT S ENDT=Y
S ENL="",$P(ENL,"-",IOM)=""
I '$D(ENT) S ENSN="" D HD W !!,"Nothing to report."
; loop thru ENT( by station
S ENSN="" F S ENSN=$O(ENT(ENSN)) Q:ENSN="" D Q:END
. D HD Q:END
. I '$D(^TMP($J,ENSN)) W !!,"NO EQUIPMENT WILL BE EXPENSED BY CT TASK FOR THIS STATION."
. ; loop thru system values in ^TMP(
. S ENSYSV="" F S ENSYSV=$O(^TMP($J,ENSN,ENSYSV)) Q:ENSYSV="" D Q:END
. . ; loop thru system # (will be 0 for standalone items)
. . S ENSYS=""
. . F S ENSYS=$O(^TMP($J,ENSN,ENSYSV,ENSYS)) Q:ENSYS="" D Q:END
. . . ; if system then print parent data and system info
. . . I ENSYS>0 D
. . . . W !!,?2,"TOP PARENT SYSTEM ENTRY #: ",ENSYS
. . . . W ?40,"CMR: ",$E($$GET1^DIQ(6914,ENSYS,19),1,5)
. . . . W ?51,"Parent Value: "
. . . . I +$$CHKFA^ENFAUTL(ENSYS) W $FN($$GET1^DIQ(6914,ENSYS,12),",",2)
. . . . E W "not in FAP"
. . . . S ENCSN=$$GET1^DIQ(6914,ENSYS,18)
. . . . W !,?2,"CATEGORY STOCK NUMBER: ",ENCSN
. . . . I ENCSN]"" W " (",$$GET1^DIQ(6914,ENSYS,"18:2"),")"
. . . . W !,?2,"Sum of Capitalized Values in System: "
. . . . W $FN(ENSYSV,",",2)
. . . ; loop thru equipment
. . . S ENDA=0
. . . F S ENDA=$O(^TMP($J,ENSN,ENSYSV,ENSYS,ENDA)) Q:'ENDA D Q:END
. . . . Q:ENDA=ENSYS ; already displayed as parent of system
. . . . I $Y+4>IOSL D HD Q:END W " (continued)"
. . . . S ENCSN=$$GET1^DIQ(6914,ENDA,18)
. . . . ; print format for component of system
. . . . I ENSYS>0 D
. . . . . W !!,?6,"COMPONENT ENTRY #: ",ENDA
. . . . . W ?36,"CMR: ",$E($$GET1^DIQ(6914,ENDA,19),1,5)
. . . . . W ?47,"Component Value: ",$FN($$GET1^DIQ(6914,ENDA,12),",",2)
. . . . . W !,?6,"CATEGORY STOCK NUMBER: ",ENCSN
. . . . . I ENCSN]"" W " (",$$GET1^DIQ(6914,ENDA,"18:2"),")"
. . . . ; print format for standalone equipment
. . . . I ENSYS=0 D
. . . . . W !!,?2,"ENTRY #: ",ENDA
. . . . . W ?22,"CMR: ",$E($$GET1^DIQ(6914,ENDA,19),1,5)
. . . . . W ?33,"Value: ",$FN($$GET1^DIQ(6914,ENDA,12),",",2)
. . . . . W !,?2,"CATEGORY STOCK NUMBER: ",ENCSN
. . . . . I ENCSN]"" W " (",$$GET1^DIQ(6914,ENDA,"18:2"),")"
. Q:END
. ; print station totals
. I $Y+14>IOSL D HD Q:END W " (continued)"
. D HDST
. S ENFUND="" F S ENFUND=$O(ENT(ENSN,ENFUND)) Q:ENFUND="" D Q:END
. . S ENSGL=""
. . F S ENSGL=$O(ENT(ENSN,ENFUND,ENSGL)) Q:ENSGL="" D Q:END
. . . I $Y+6>IOSL D HD Q:END W " (continued)" D HDST
. . . W !,ENFUND,?7,ENSGL
. . . S ENX=$G(ENT(ENSN,ENFUND,ENSGL))
. . . W ?12,$J($FN($P(ENX,U,1),","),5)
. . . W ?18,$J($FN($P(ENX,U,2),",",2),14)
. . . W ?35,$J($FN($P(ENX,U,3),","),5)
. . . W ?41,$J($FN($P(ENX,U,4),",",2),14)
. . . W ?58,$J($FN($P(ENX,U,1)-$P(ENX,U,3),","),5)
. . . W ?64,$J($FN($P(ENX,U,2)-$P(ENX,U,4),",",2),14)
. . . ; add sgl to subtotals for station
. . . S $P(ENT(ENSN),U,1)=$P($G(ENT(ENSN)),U,1)+$P(ENX,U,1)
. . . S $P(ENT(ENSN),U,2)=$P(ENT(ENSN),U,2)+$P(ENX,U,2)
. . . S $P(ENT(ENSN),U,3)=$P(ENT(ENSN),U,3)+$P(ENX,U,3)
. . . S $P(ENT(ENSN),U,4)=$P(ENT(ENSN),U,4)+$P(ENX,U,4)
. W !," ----- -------------- ----- -------------- ----- --------------"
. W !,"Station Tot"
. W ?12,$J($FN($P(ENT(ENSN),U,1),","),5)
. W ?18,$J($FN($P(ENT(ENSN),U,2),",",2),14)
. W ?35,$J($FN($P(ENT(ENSN),U,3),","),5)
. W ?41,$J($FN($P(ENT(ENSN),U,4),",",2),14)
. W ?58,$J($FN($P(ENT(ENSN),U,1)-$P(ENT(ENSN),U,3),","),5)
. W ?64,$J($FN($P(ENT(ENSN),U,2)-$P(ENT(ENSN),U,4),",",2),14)
I END W !!,"REPORT STOPPED BY USER REQUEST"
I 'END,$E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR K DIR
D ^%ZISC
EXIT I $D(ZTQUEUED) S ZTREQ="@"
K ^TMP($J)
K DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y,END,ENDT,ENL,ENPG
K ENCSN,ENDA,ENFUND,ENSGL,ENSN,ENSYS,ENSYSV,ENT,ENVAL,ENX
Q
;
HD ; header
I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1,END=1 Q
I $E(IOST,1,2)="C-",ENPG S DIR(0)="E" D ^DIR K DIR I 'Y S END=1 Q
I $E(IOST,1,2)="C-"!ENPG W @IOF
S ENPG=ENPG+1
W !,"EQUIPMENT CT TASK WILL EXPENSE sorted by value"
W ?49,ENDT,?72,"page ",ENPG
W !,ENL
I ENSN]"" W !,"STATION ",ENSN
Q
;
HDST ; header for station totals
W !!," Current Capitalized CT Task Will Expense Remain Capitalized"
W !,"Fund SGL Count $ Amount Count $ Amount Count $ Amount"
W !,"------ ---- ----- -------------- ----- -------------- ----- --------------"
Q
;ENFACTL