| 1 | ENWOUTL ;(WCIOFO)/SAB-Work Order Utilities ;10/21/1998
 | 
|---|
| 2 |  ;;7.0;ENGINEERING;**35,42,48,59**;Aug 17, 1993
 | 
|---|
| 3 |  Q
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | ASKCC(ENWODA) ; Ask Condition Code Extrinsic Function
 | 
|---|
| 6 |  ; Input ENWODA - ien of work order
 | 
|---|
| 7 |  ; Output - 0 (don't ask) or 1 (ask) condition code
 | 
|---|
| 8 |  N ENASK,ENEQDA,ENSHKEY,ENSHPAR
 | 
|---|
| 9 |  S ENASK=0
 | 
|---|
| 10 |  I $G(ENWODA) S ENEQDA=$P($G(^ENG(6920,ENWODA,3)),U,8) D:ENEQDA
 | 
|---|
| 11 |  . S ENSHKEY=$P($G(^ENG(6920,ENWODA,2)),U) Q:'ENSHKEY
 | 
|---|
| 12 |  . S ENSHPAR=+$P($G(^DIC(6922,ENSHKEY,0)),U,4)
 | 
|---|
| 13 |  . S ENASK=$S(ENSHPAR=0:0,ENSHPAR=2:1,$P($G(^ENG(6914,ENEQDA,2)),U,3)>4999.99:1,1:0)
 | 
|---|
| 14 |  Q ENASK
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | WO ; select work order entry point
 | 
|---|
| 17 |  ; called from various places where work orders are selected
 | 
|---|
| 18 |  ; Input
 | 
|---|
| 19 |  ;   DIC("S") - (optional and not returned)
 | 
|---|
| 20 |  ; Output
 | 
|---|
| 21 |  ;   Y        - "ien^.01 value" or "-1" if unsuccessful
 | 
|---|
| 22 |  N D,ENX,X
 | 
|---|
| 23 |  S DIC="^ENG(6920,"
 | 
|---|
| 24 | WOA ; ask user
 | 
|---|
| 25 |  R !,"Select WORK ORDER #: ",ENX:DTIME I ENX=""!(ENX["^")!'$T S Y=-1 G WOX
 | 
|---|
| 26 |  I $E(ENX,2,2)="." D  I D]"" S X=$E(ENX,3,99),DIC(0)="QE" D IX^DIC G WOR
 | 
|---|
| 27 |  . S D=""
 | 
|---|
| 28 |  . I $E(ENX)="E" S D="G" Q  ; equipment id#
 | 
|---|
| 29 |  . I $E(ENX)="L" S D="C" Q  ; location
 | 
|---|
| 30 |  I ENX="?" D
 | 
|---|
| 31 |  . W !," Use 'E.value' to list W.O.s whose EQUIPMENT ID# equals 'value'"
 | 
|---|
| 32 |  . W !," Use 'L.value' to list W.O.s whose LOCATION starts with 'value'"
 | 
|---|
| 33 |  S X=ENX,DIC(0)="QEM" D ^DIC
 | 
|---|
| 34 | WOR ; Result of DIC call
 | 
|---|
| 35 |  I Y'>0 G WOA
 | 
|---|
| 36 | WOX ; Exit
 | 
|---|
| 37 |  K DIC
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | CDATE(Y) ; Check on COMPLETION DATE (field 36, file 6920)
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  ;  Expects: Y as COMPLETION DATE (internal format)
 | 
|---|
| 43 |  ;           DA as IEN in Work Order File (returned)
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ;  COMPLETION DATE may not preceed REQUEST DATE for unscheduled w.o.
 | 
|---|
| 46 |  ;  For PM work orders, COMPLETION DATE may not preceed nominal date of
 | 
|---|
| 47 |  ;    PM w.o. - where century is inferred
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ;  Returns X as "^" if no date
 | 
|---|
| 50 |  ;               "^1" NOMINAL DATE > COMPLETE DATE (PM)
 | 
|---|
| 51 |  ;               "^2" REQUEST DATE > COMPLETE DATE (unscheduled)
 | 
|---|
| 52 |  ;               Y if acceptable
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  I Y'>0 S X="^",EN("BAD COMPLETION DATE")="" D EN^DDIOL("Inappropriate COMPLETION DATE.") Q X
 | 
|---|
| 55 |  N REQDATE,X S REQDATE=$P($P(^ENG(6920,DA,0),U,2),".")
 | 
|---|
| 56 |  I REQDATE'>Y S X=Y Q X
 | 
|---|
| 57 |  I $E($P(^ENG(6920,DA,0),U),1,3)="PM-" D  Q X
 | 
|---|
| 58 |  . N DELYR,NOMDATE
 | 
|---|
| 59 |  . S NOMDATE=$E($TR($P(^ENG(6920,DA,0),U),"ABCDEFGHIJKLMNOPQRSTUVWXYZ-",""),1,4)
 | 
|---|
| 60 |  . S DELYR=$E(DT,2,3)-$E(NOMDATE,1,2),NOMDATE=$E(DT)+$S(DELYR>79:1,DELYR<-20:-1,1:0)_NOMDATE_"00"
 | 
|---|
| 61 |  . I NOMDATE'>Y S X=Y,$P(^ENG(6920,DA,0),U,2)=NOMDATE Q
 | 
|---|
| 62 |  . S X="^1",EN("BAD COMPLETION DATE")="" D EN^DDIOL("COMPLETION DATE may not precede nominal PM date.")
 | 
|---|
| 63 |  S X="^2" D EN^DDIOL("COMPLETION DATE may not precede REQUEST DATE (unscheduled).")
 | 
|---|
| 64 |  Q X
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | LBRCST(ENFLAG) ; Calculate work order TOTAL HOURS and the TOTAL LABOR COST
 | 
|---|
| 67 |  ;         based on the TECHNICIANS ASSIGNED multiple in file 6920
 | 
|---|
| 68 |  ; Called by MUMPS X-REFs in file 6920, fields .01 and 1 in multiple
 | 
|---|
| 69 |  ; Input   ENFLAG (1 for SET LOGIC or 2 for KILL LOGIC)
 | 
|---|
| 70 |  ; Expects DA(1) as work order IEN
 | 
|---|
| 71 |  ;         DA as ASSIGNED TECH IEN [within DA(1)]
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  N HOURS,WAGE,COST,X
 | 
|---|
| 74 |  S (HOURS,WAGE,COST,X)=0
 | 
|---|
| 75 |  F  S X=$O(^ENG(6920,DA(1),7,X)) Q:X'>0  D
 | 
|---|
| 76 |  . I ENFLAG=2,X=DA Q  ; don't include hours of the deleted tech
 | 
|---|
| 77 |  . S HOURS(X)=$P(^ENG(6920,DA(1),7,X,0),U,2)
 | 
|---|
| 78 |  . S X(0)=$P(^ENG(6920,DA(1),7,X,0),U)
 | 
|---|
| 79 |  . S WAGE(X)=$P($G(^ENG("EMP",X(0),0)),U,3)
 | 
|---|
| 80 |  . I WAGE(X)'>0,$E(^ENG(6920,DA(1),0),1,3)="PM-" S WAGE(X)=$P($G(^DIC(6910,1,0)),U,4)
 | 
|---|
| 81 |  . S COST(X)=HOURS(X)*WAGE(X)
 | 
|---|
| 82 |  S X=0
 | 
|---|
| 83 |  F  S X=$O(HOURS(X)) Q:X'>0  S HOURS=HOURS+HOURS(X),COST=COST+COST(X)
 | 
|---|
| 84 |  S COST=$J(COST,0,2)
 | 
|---|
| 85 |  S $P(^ENG(6920,DA(1),5),U,3)=HOURS,$P(^(5),U,6)=COST
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 |  ;ENWOUTL
 | 
|---|