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

ENFACTU.m

Go to the documentation of this file.
ENFACTU ;(WCIOFO)/SAB-FAP CAPITALIZATION THRESHOLD UTILITIES ;5/22/2002
 ;;7.0;ENGINEERING;**63,71**;August 17, 1993
TOPSYS(ENDA) ; Topmost System
 ; input ENDA - equipment entry #
 ; returns
 ;   entry # of topmost equipment in system of which ENDA is a part
 ;   OR 0 if ENDA is not part of a system (parent or component)
 ;   OR ?^message if error detected
 ;
 N ENDAC,ENDAP,ENPL,ENRET
 S ENRET=""
 ;
 ; start with ENDA as component and determine top-most item in system
 S ENPL=U ; init list of parents (used for detection of endless loop)
 S ENDAC=ENDA ; start with ENDA as a component
 ; traverse parent chain
 F  S ENDAP=$P($G(^ENG(6914,ENDAC,0)),U,3) Q:ENDAP=""!(ENPL[(U_ENDAP_U))  S ENDAC=ENDAP,ENPL=ENPL_ENDAP_U
 I ENDAP]"" S ENRET="?^ENDLESS LOOP DETECTED"
 ;
 ; use topmost parent if found
 I ENRET="",ENDAC'=ENDA S ENRET=ENDAC
 ; if not component then is item a parent?
 I ENRET="",$O(^ENG(6914,"AE",ENDA,""))]"" S ENRET=ENDA
 ; must not be part of system
 I ENRET="" S ENRET=0
 ;
 Q ENRET
 ;
SYSVAL(ENDAT,ENSW) ; System Value
 ; input ENDAT - entry # parent for system
 ;       ENSW  - optional switch
 ;               contains "C" if only capitalized values should be
 ;               included in return value
 ; returns sum of asset values for parent and all it's components
 ;
 N ENDA,ENMD,ENNODE,ENSUM,ENDA
 S ENSW=$G(ENSW)
 S ENSUM=0
 ;
 ; build list of all items in the system
 K ^TMP("ENSYS",$J)
 S ENMD=1
 D GETC^ENEQRP6(ENDAT,"","^TMP(""ENSYS"",$J,")
 ;
 ; loop thru all equipment on system list and sum asset values
 S ENNODE="^TMP(""ENSYS"",$J,"""")"
 F  S ENNODE=$Q(@ENNODE) Q:$QS(ENNODE,1)_$QS(ENNODE,2)'=("ENSYS"_$J)  D
 . S ENDA=$QS(ENNODE,$QL(ENNODE))
 . I ENSW["C",$$CHKFA^ENFAUTL(ENDA)'>0 Q  ; if only capitalized $
 . S ENSUM=ENSUM+$P($G(^ENG(6914,ENDA,2)),U,3)
 ;
 K ^TMP("ENSYS",$J)
 Q ENSUM
 ;      
CHKEXP(ENDA) ; Check if capitalized equipment item should be expensed
 ; input ENDA - equipment Entry # if check
 ; returns
 ;    1           (true) if it should be expensed
 ;    0^reason    if it should not be expensed due to system criteria
 ;    U^username  if it should not be expensed due to user edit
 ;
 N ENSYS,ENUSER
 ; must be reported to Fixed Assets/FMS to be an issue
 I $$CHKFA^ENFAUTL(ENDA)'>0 Q "0^NOT CURRENTLY REPORTED TO FAP"
 ;
 ; does item meet any of the system criteria to remain capitalized?
 I $$GET1^DIQ(6914,ENDA,38)="1524" Q "0^SGL 1524 (EXCESS)"
 I $$GET1^DIQ(6914,ENDA,62)="4539" Q "0^FUND 4539 (FRANCHISE)"
 I $$GET1^DIQ(6914,ENDA,12)>99999.99 Q "0^ASSET VALUE > 99999.99"
 S ENSYS=$$TOPSYS(ENDA) ; if part of system then check system value
 I ENSYS,$$SYSVAL(ENSYS,"C")>99999.99 Q "0^SYSTEM VALUE > 99999.99"
 ;
 ; did user specify that item should remain capitalized
 S ENUSER=$$GET1^DIQ(6914,ENDA,99,"E")
 I ENUSER]"" Q "U^"_ENUSER
 ;
 ; item did not meet any of criteria to remain capitalized
 Q 1
 ;
 ;ENFACTU