ENWO1 ;WCIOFO/DLM/DH/SAB-Process Work Order ;1/2/2001
;;7.0;ENGINEERING;**35,51,59,67**;Aug 17, 1993
ENT ;Edit work orders
D WO^ENWOUTL S DA=+Y G:DA'>0 EXIT L +^ENG(6920,DA):5 I '$T W !!,"This work order is being edited by another user. Please try again later.",*7,! G ENT
I $D(^ENG(6920,DA,5)),$P(^(5),U,2)]"" D
. W !,*7,"NOTE: This work order has already been closed out."
. I '$D(^XUSEC("ENEDCLWO",DUZ)) W !,"Security key ENEDCLWO is needed to edit closed work orders." L -^ENG(6920,DA) S DA="" Q
. S DIR(0)="Y",DIR("A")="Are you sure you want to edit this work order",DIR("B")="NO"
. D ^DIR K DIR I Y'>0 L -^ENG(6920,DA) S DA="" Q
. I $P($G(^ENG(6920,DA,3)),U,8)>0 D KILLHS^ENEQHS I $G(R)="^" S DA="" Q
. S ENWOCLOD=$P(^ENG(6920,DA,5),U,2)
. S $P(^ENG(6920,DA,5),U,2)="",$P(^ENG(6920,DA,4),U,3)=""
. D TEST^ENWOCOMP
. ; if PM work order then back out PM hours
. I $E($P($G(^ENG(6920,DA,0)),U),1,3)="PM-" D
. . N ENPMDT,PMTOT,X
. . D PMHRS^ENEQPMR4 Q:'$D(PMTOT)
. . S X=$P($P(^ENG(6920,DA,0),U),"-",2)
. . F I=1:1:$L(X) S:$E(X,I)?1N ENPMDT=$G(ENPMDT)_$E(X,I)
. . S ENPMDT=$E(ENPMDT,1,4)
. . D UNPOST^ENBCPM8
G:DA="" ENT
S DIE="^ENG(6920,",DR=$S($D(^DIE("B","ENZWOEDIT")):"[ENZWOEDIT]",1:"[ENWOEDIT]")
S ENDA=DA
D ^DIE
; if PM work order closed then post PM hours
I $G(DA),$E($P($G(^ENG(6920,DA,0)),U),1,3)="PM-",$P($G(^(5)),U,2)]"" D
. N ENPMDT,PMTOT,X
. D PMHRS^ENEQPMR4 Q:'$D(PMTOT)
. S X=$P($P(^ENG(6920,DA,0),U),"-",2)
. F I=1:1:$L(X) S:$E(X,I)?1N ENPMDT=$G(ENPMDT)_$E(X,I)
. S ENPMDT=$E(ENPMDT,1,4)
. D COUNT^ENBCPM8
L -^ENG(6920,ENDA) K ENDA
G ENT
;
CLSOUT ;Close work order
D WO^ENWOUTL S DA=+Y I DA'>0 G EXIT
I $E(^ENG(6920,DA,0),1,3)="Y2-" W !,*7,"Please use the Y2K Equipment Management Module to close Y2K work orders." G CLSOUT
L +^ENG(6920,DA):5 I '$T W !!,"This work order is being edited by another user. Please try again later.",*7 G CLSOUT
I $D(^ENG(6920,DA,5)),$P(^(5),U,2)]"" D
. W !,*7,"NOTE: This work order has already been closed out."
. I $D(^XUSEC("ENEDCLWO",DUZ)) W !,"You may use the work order EDIT or DISPLAY option to edit this work order."
. L -^ENG(6920,DA) S DA=""
I DA="" G CLSOUT
S DIE="^ENG(6920,",DR=""
; select template
D
. I $E(^ENG(6920,DA,0),1,3)="PM-" S DR=$S($D(^DIE("B","ENZPMCLOSE")):"[ENZPMCLOSE]",1:"[ENPMCLOSE]") Q
. S X=$P($G(^ENG(6920,DA,2)),U)
. I X>0,$P($G(^DIC(6922,X,0)),U,5) S DR=$S($D(^DIE("B","ENZWOBIOCLSE")):"[ENZWOBIOCLSE]",1:"[ENWOBIOCLSE]") Q
. S DR=$S($D(^DIE("B","ENZWOCLOSE")):"[ENZWOCLOSE]",1:"[ENWOCLOSE]")
S ENDA=DA
D ^DIE
; if PM work order closed then post PM hours, update equip file
I $D(DA),$E($P($G(^ENG(6920,DA,0)),U),1,3)="PM-",$P($G(^(5)),U,2)]"" D
. N ENPMDT,PMTOT,X
. D PMHRS^ENEQPMR4,PMINV^ENEQPMR4
. Q:'$D(PMTOT)
. S X=$P($P(^ENG(6920,DA,0),U),"-",2)
. F I=1:1:$L(X) S:$E(X,I)?1N ENPMDT=$G(ENPMDT)_$E(X,I)
. S ENPMDT=$E(ENPMDT,1,4)
. D COUNT^ENBCPM8
L -^ENG(6920,ENDA) K ENDA
W !!
G CLSOUT
;
EQHIV ;EQUIPMENT HIST
Q ;Obsolete entry point
;
EQHI ; Equipment work order history, by entry number
S DIC("S")="I $D(^(3))" D GETEQ^ENUTL G:Y'>0 EXIT S ENDA=+Y
D NOW^%DTC S ENSTMPL="ENWOHIST"_%
W !,"Compiling SORT TEMPLATE ["_ENSTMPL_"]",!
K DD,DO S DIC="^DIBT(",DIC(0)="X",X=ENSTMPL D FILE^DICN S DA=+Y
I DA'>0 W !,"Process ABORTED.",*7 G EXIT
S ENSTMPL(0)=DA
S DIE="^DIBT(",DR="2///^S X=DT;4///^S X=6920;5///^S X=DUZ;15///^S X=""EQUIPMENT ID# EQUALS ""_ENDA" D ^DIE
F I=0:0 S I=$O(^ENG(6920,"G",ENDA,I)) Q:I'>0 S ^DIBT(DA,1,I)="" W "."
I '$D(^DIBT(DA,1)) W !!,"No work orders found. Nothing to report.",*7,! S DIK="^DIBT(" D ^DIK K DIK G EQHI
S DIC="^ENG(6914,",DA=ENDA,DIQ="ENEQ",DIQ(0)="E",DR=".01;1;4;5;53"
D EN^DIQ1 K DA,DIC,DIQ,DR
S I=0,ENCRIT="" F S I=$O(^ENG(6914,ENDA,4,I)) Q:'I D
. S J=$P($G(^ENG(6914,ENDA,4,I,0)),U,4) I J>ENCRIT S ENCRIT=J
D DEV^ENLIB G:POP EXIT
S IOP=ION,L="0",DIC="^ENG(6920,",FLDS=$S($D(^DIPT("B","ENZ EQ HIST")):"[ENZ EQ HIST]",1:"[EN EQ HIST]"),BY="["_ENSTMPL_"]",FR="@"
I $D(IO("Q")) D K ZTSK D HOME^%ZIS G EXIT
. S ZTIO=IOP,ZTRTN="DQHI^ENWO1",ZTDESC="Equipment History from Work Order Module"
. S ZTSAVE("IOP")="",ZTSAVE("EN*")="",ZTSAVE("DIC")=""
. S ZTSAVE("FLDS")="",ZTSAVE("BY")="",ZTSAVE("FR")="",ZTSAVE("L")=""
. D ^%ZTLOAD
S DIOEND="I IOST[""C-"" R !!,""Press <RETURN> to continue"",X:DTIME"
DQHI ;
D EN1^DIP
S DIK="^DIBT(",DA=ENSTMPL(0) D ^DIK K DIK
G:'$D(ZTQUEUED) EQHI
G EXIT
DSY ;Screen display work order
G EDIT^ENWOD
;
DEL ; Delete open work order
W !
K DA
S DIC("S")="I $P($G(^(5)),U,2)=""""" D WO^ENWOUTL K DIC
S DA=+Y G:DA'>0 EXIT
L +^ENG(6920,DA):5 I '$T W !!,"This work order is being edited by another user and can't be deleted.",$C(7),! G DEL
S DIR(0)="Y",DIR("A")="Delete work order "_$P($G(^ENG(6920,DA,0)),U)
D ^DIR K DIR I $D(DIRUT) G EXIT
I 'Y G DEL
S DIK="^ENG(6920," D ^DIK K DIK
W !," The work order has been deleted."
G DEL
;
INIT K DIC("S") S DIC="^DIC(6922,",DIC(0)="AEQM" D ^DIC S ENSHKEY=+Y Q
EXIT K %IS,DIC,DIE,DA,Y,DR,N,I,J,K,O,S,X,Y,Z,ENWO
K ENSTMPL,L,FLDS,BY,FR,TO,ENVANO,IOP,ENDA,ENEQ,ENCRIT
S:$D(ZTQUEUED) ZTREQ="@"
Q
;ENWO1
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HENWO1 5216 printed Oct 16, 2024@17:56:58 Page 2
ENWO1 ;WCIOFO/DLM/DH/SAB-Process Work Order ;1/2/2001
+1 ;;7.0;ENGINEERING;**35,51,59,67**;Aug 17, 1993
ENT ;Edit work orders
+1 DO WO^ENWOUTL
SET DA=+Y
if DA'>0
GOTO EXIT
LOCK +^ENG(6920,DA):5
IF '$TEST
WRITE !!,"This work order is being edited by another user. Please try again later.",*7,!
GOTO ENT
+2 IF $DATA(^ENG(6920,DA,5))
IF $PIECE(^(5),U,2)]""
Begin DoDot:1
+3 WRITE !,*7,"NOTE: This work order has already been closed out."
+4 IF '$DATA(^XUSEC("ENEDCLWO",DUZ))
WRITE !,"Security key ENEDCLWO is needed to edit closed work orders."
LOCK -^ENG(6920,DA)
SET DA=""
QUIT
+5 SET DIR(0)="Y"
SET DIR("A")="Are you sure you want to edit this work order"
SET DIR("B")="NO"
+6 DO ^DIR
KILL DIR
IF Y'>0
LOCK -^ENG(6920,DA)
SET DA=""
QUIT
+7 IF $PIECE($GET(^ENG(6920,DA,3)),U,8)>0
DO KILLHS^ENEQHS
IF $GET(R)="^"
SET DA=""
QUIT
+8 SET ENWOCLOD=$PIECE(^ENG(6920,DA,5),U,2)
+9 SET $PIECE(^ENG(6920,DA,5),U,2)=""
SET $PIECE(^ENG(6920,DA,4),U,3)=""
+10 DO TEST^ENWOCOMP
+11 ; if PM work order then back out PM hours
+12 IF $EXTRACT($PIECE($GET(^ENG(6920,DA,0)),U),1,3)="PM-"
Begin DoDot:2
+13 NEW ENPMDT,PMTOT,X
+14 DO PMHRS^ENEQPMR4
if '$DATA(PMTOT)
QUIT
+15 SET X=$PIECE($PIECE(^ENG(6920,DA,0),U),"-",2)
+16 FOR I=1:1:$LENGTH(X)
if $EXTRACT(X,I)?1N
SET ENPMDT=$GET(ENPMDT)_$EXTRACT(X,I)
+17 SET ENPMDT=$EXTRACT(ENPMDT,1,4)
+18 DO UNPOST^ENBCPM8
End DoDot:2
End DoDot:1
+19 if DA=""
GOTO ENT
+20 SET DIE="^ENG(6920,"
SET DR=$SELECT($DATA(^DIE("B","ENZWOEDIT")):"[ENZWOEDIT]",1:"[ENWOEDIT]")
+21 SET ENDA=DA
+22 DO ^DIE
+23 ; if PM work order closed then post PM hours
+24 IF $GET(DA)
IF $EXTRACT($PIECE($GET(^ENG(6920,DA,0)),U),1,3)="PM-"
IF $PIECE($GET(^(5)),U,2)]""
Begin DoDot:1
+25 NEW ENPMDT,PMTOT,X
+26 DO PMHRS^ENEQPMR4
if '$DATA(PMTOT)
QUIT
+27 SET X=$PIECE($PIECE(^ENG(6920,DA,0),U),"-",2)
+28 FOR I=1:1:$LENGTH(X)
if $EXTRACT(X,I)?1N
SET ENPMDT=$GET(ENPMDT)_$EXTRACT(X,I)
+29 SET ENPMDT=$EXTRACT(ENPMDT,1,4)
+30 DO COUNT^ENBCPM8
End DoDot:1
+31 LOCK -^ENG(6920,ENDA)
KILL ENDA
+32 GOTO ENT
+33 ;
CLSOUT ;Close work order
+1 DO WO^ENWOUTL
SET DA=+Y
IF DA'>0
GOTO EXIT
+2 IF $EXTRACT(^ENG(6920,DA,0),1,3)="Y2-"
WRITE !,*7,"Please use the Y2K Equipment Management Module to close Y2K work orders."
GOTO CLSOUT
+3 LOCK +^ENG(6920,DA):5
IF '$TEST
WRITE !!,"This work order is being edited by another user. Please try again later.",*7
GOTO CLSOUT
+4 IF $DATA(^ENG(6920,DA,5))
IF $PIECE(^(5),U,2)]""
Begin DoDot:1
+5 WRITE !,*7,"NOTE: This work order has already been closed out."
+6 IF $DATA(^XUSEC("ENEDCLWO",DUZ))
WRITE !,"You may use the work order EDIT or DISPLAY option to edit this work order."
+7 LOCK -^ENG(6920,DA)
SET DA=""
End DoDot:1
+8 IF DA=""
GOTO CLSOUT
+9 SET DIE="^ENG(6920,"
SET DR=""
+10 ; select template
+11 Begin DoDot:1
+12 IF $EXTRACT(^ENG(6920,DA,0),1,3)="PM-"
SET DR=$SELECT($DATA(^DIE("B","ENZPMCLOSE")):"[ENZPMCLOSE]",1:"[ENPMCLOSE]")
QUIT
+13 SET X=$PIECE($GET(^ENG(6920,DA,2)),U)
+14 IF X>0
IF $PIECE($GET(^DIC(6922,X,0)),U,5)
SET DR=$SELECT($DATA(^DIE("B","ENZWOBIOCLSE")):"[ENZWOBIOCLSE]",1:"[ENWOBIOCLSE]")
QUIT
+15 SET DR=$SELECT($DATA(^DIE("B","ENZWOCLOSE")):"[ENZWOCLOSE]",1:"[ENWOCLOSE]")
End DoDot:1
+16 SET ENDA=DA
+17 DO ^DIE
+18 ; if PM work order closed then post PM hours, update equip file
+19 IF $DATA(DA)
IF $EXTRACT($PIECE($GET(^ENG(6920,DA,0)),U),1,3)="PM-"
IF $PIECE($GET(^(5)),U,2)]""
Begin DoDot:1
+20 NEW ENPMDT,PMTOT,X
+21 DO PMHRS^ENEQPMR4
DO PMINV^ENEQPMR4
+22 if '$DATA(PMTOT)
QUIT
+23 SET X=$PIECE($PIECE(^ENG(6920,DA,0),U),"-",2)
+24 FOR I=1:1:$LENGTH(X)
if $EXTRACT(X,I)?1N
SET ENPMDT=$GET(ENPMDT)_$EXTRACT(X,I)
+25 SET ENPMDT=$EXTRACT(ENPMDT,1,4)
+26 DO COUNT^ENBCPM8
End DoDot:1
+27 LOCK -^ENG(6920,ENDA)
KILL ENDA
+28 WRITE !!
+29 GOTO CLSOUT
+30 ;
EQHIV ;EQUIPMENT HIST
+1 ;Obsolete entry point
QUIT
+2 ;
EQHI ; Equipment work order history, by entry number
+1 SET DIC("S")="I $D(^(3))"
DO GETEQ^ENUTL
if Y'>0
GOTO EXIT
SET ENDA=+Y
+2 DO NOW^%DTC
SET ENSTMPL="ENWOHIST"_%
+3 WRITE !,"Compiling SORT TEMPLATE ["_ENSTMPL_"]",!
+4 KILL DD,DO
SET DIC="^DIBT("
SET DIC(0)="X"
SET X=ENSTMPL
DO FILE^DICN
SET DA=+Y
+5 IF DA'>0
WRITE !,"Process ABORTED.",*7
GOTO EXIT
+6 SET ENSTMPL(0)=DA
+7 SET DIE="^DIBT("
SET DR="2///^S X=DT;4///^S X=6920;5///^S X=DUZ;15///^S X=""EQUIPMENT ID# EQUALS ""_ENDA"
DO ^DIE
+8 FOR I=0:0
SET I=$ORDER(^ENG(6920,"G",ENDA,I))
if I'>0
QUIT
SET ^DIBT(DA,1,I)=""
WRITE "."
+9 IF '$DATA(^DIBT(DA,1))
WRITE !!,"No work orders found. Nothing to report.",*7,!
SET DIK="^DIBT("
DO ^DIK
KILL DIK
GOTO EQHI
+10 SET DIC="^ENG(6914,"
SET DA=ENDA
SET DIQ="ENEQ"
SET DIQ(0)="E"
SET DR=".01;1;4;5;53"
+11 DO EN^DIQ1
KILL DA,DIC,DIQ,DR
+12 SET I=0
SET ENCRIT=""
FOR
SET I=$ORDER(^ENG(6914,ENDA,4,I))
if 'I
QUIT
Begin DoDot:1
+13 SET J=$PIECE($GET(^ENG(6914,ENDA,4,I,0)),U,4)
IF J>ENCRIT
SET ENCRIT=J
End DoDot:1
+14 DO DEV^ENLIB
if POP
GOTO EXIT
+15 SET IOP=ION
SET L="0"
SET DIC="^ENG(6920,"
SET FLDS=$SELECT($DATA(^DIPT("B","ENZ EQ HIST")):"[ENZ EQ HIST]",1:"[EN EQ HIST]")
SET BY="["_ENSTMPL_"]"
SET FR="@"
+16 IF $DATA(IO("Q"))
Begin DoDot:1
+17 SET ZTIO=IOP
SET ZTRTN="DQHI^ENWO1"
SET ZTDESC="Equipment History from Work Order Module"
+18 SET ZTSAVE("IOP")=""
SET ZTSAVE("EN*")=""
SET ZTSAVE("DIC")=""
+19 SET ZTSAVE("FLDS")=""
SET ZTSAVE("BY")=""
SET ZTSAVE("FR")=""
SET ZTSAVE("L")=""
+20 DO ^%ZTLOAD
End DoDot:1
KILL ZTSK
DO HOME^%ZIS
GOTO EXIT
+21 SET DIOEND="I IOST[""C-"" R !!,""Press <RETURN> to continue"",X:DTIME"
DQHI ;
+1 DO EN1^DIP
+2 SET DIK="^DIBT("
SET DA=ENSTMPL(0)
DO ^DIK
KILL DIK
+3 if '$DATA(ZTQUEUED)
GOTO EQHI
+4 GOTO EXIT
DSY ;Screen display work order
+1 GOTO EDIT^ENWOD
+2 ;
DEL ; Delete open work order
+1 WRITE !
+2 KILL DA
+3 SET DIC("S")="I $P($G(^(5)),U,2)="""""
DO WO^ENWOUTL
KILL DIC
+4 SET DA=+Y
if DA'>0
GOTO EXIT
+5 LOCK +^ENG(6920,DA):5
IF '$TEST
WRITE !!,"This work order is being edited by another user and can't be deleted.",$CHAR(7),!
GOTO DEL
+6 SET DIR(0)="Y"
SET DIR("A")="Delete work order "_$PIECE($GET(^ENG(6920,DA,0)),U)
+7 DO ^DIR
KILL DIR
IF $DATA(DIRUT)
GOTO EXIT
+8 IF 'Y
GOTO DEL
+9 SET DIK="^ENG(6920,"
DO ^DIK
KILL DIK
+10 WRITE !," The work order has been deleted."
+11 GOTO DEL
+12 ;
INIT KILL DIC("S")
SET DIC="^DIC(6922,"
SET DIC(0)="AEQM"
DO ^DIC
SET ENSHKEY=+Y
QUIT
EXIT KILL %IS,DIC,DIE,DA,Y,DR,N,I,J,K,O,S,X,Y,Z,ENWO
+1 KILL ENSTMPL,L,FLDS,BY,FR,TO,ENVANO,IOP,ENDA,ENEQ,ENCRIT
+2 if $DATA(ZTQUEUED)
SET ZTREQ="@"
+3 QUIT
+4 ;ENWO1