ENTIDD	;WOIFO/SAB - Engineering DD ;2/4/2008
	;;7.0;ENGINEERING;**87**;Aug 17, 1993;Build 16
	;
ITTCHK(ENCMR,ENX)	; IT Tracking Check
	; called by input transform on CMR file IT TRACKING field
	; input
	;   ENCMR - CMR ien
	;   ENX - user input (1 for yes or 0 or no)
	; returns 1 (true) if change should be prevented
	;
	N ENRET
	S ENRET=0
	I ENX'=1,$$AITACMR(ENCMR) D
	. S ENRET=1
	. D EN^DDIOL("CMR has equipment with an active IT assignment. Can't change IT TRACKING.")
	Q ENRET
	;
AITACMR(ENCMR)	; Active IT Assignment CMR
	; input ENCMR = CMR internal entry number
	; returns 1 (if any equipment on CMR has an active assignment) or 0
	N ENEQ,ENRET
	S ENRET=0
	;
	; loop thru equipment on CMR
	S ENEQ=0 F  S ENEQ=$O(^ENG(6914,"AD",ENCMR,ENEQ)) Q:'ENEQ  D  Q:ENRET
	. I $D(^ENG(6916.3,"AEA",ENEQ)) S ENRET=1
	;
	Q ENRET
	;
CMRCHK(ENDA,ENX)	; CMR Check
	; called by EQUIPMENT INV. file CMR field Input Transform
	; input
	;   ENDA - equipment ien
	;   ENX - user input, CMR ien
	; returns 1 (true) if change should be prevented
	N DA,X ; protect variables used by input transform
	N ENA,ENRET,ENY
	S ENRET=0
	;
	D
	. ; perform checks
	. Q:'$D(^ENG(6916.3,"AEA",ENDA))  ; no active assignments for equip
	. S ENY=$G(^ENG(6914.1,ENX,0)) ; CMR zero node
	. Q:$P(ENY,"^",9)  ; IT Tracking of new CMR is Yes
	. Q:$E($P(ENY,"^"),1,2)="99"  ; CMR name starts 99, may be for excess
	. ;
	. ; must be an inappropriate change
	. S ENRET=1
	. S ENA(1)="Equipment has an active IT assignment."
	. S ENA(2)="New CMR must be excess (99x) or have IT TRACKING = YES."
	. D EN^DDIOL(.ENA)
	;
	Q ENRET
	;
CMRUPD(ENEQ,ENCMR1,ENCMR2)	; terminate IT responsibilities when CMR changed
	; called by cross-reference on Equipment Inv. file CMR field
	; input
	;   ENEQ   - equipment ien
	;   ENCMR1 - old CMR ien
	;   ENCMR2 - new CMR ien (or null if value deleted)
	Q:$D(ENDJCMR1)  ; edited by DJ screen, change may be backed out so wait
	Q:'$D(^ENG(6916.3,"AEA",ENEQ))  ; no active assignments for equip
	I ENCMR2,$D(^ENG(6914.1,"AIT",1,ENCMR2)) Q  ; new CMR IT TRACKING = yes
	;
	; equipment with active assignments is no longer on a tracked CMR
	N ENCMR1N,ENCMR2N,ENDA,ENL,ENTX,ENX
	N DIFROM,XMDUZ,XMMG,XMROU,XMSTRIP,XMSUB,XMTEXT,XMY,XMYBLOB,XMZ
	; loop thru assignments
	S ENL=5
	S ENDA=0 F  S ENDA=$O(^ENG(6916.3,"AEA",ENEQ,ENDA)) Q:'ENDA  D
	. ; terminate assignment
	. S ENX=$$TERM^ENTIUTL1(ENDA)
	. ; place on message text
	. S ENL=ENL+1
	. S ENTX(ENL)="Owner: "_$$GET1^DIQ(6916.3,ENDA,1)
	;
	; send message
	S ENCMR1N=$S(ENCMR1:$P($G(^ENG(6914.1,ENCMR1,0)),U),1:ENCMR1)
	S ENCMR2N=$S(ENCMR2:$P($G(^ENG(6914.1,ENCMR2,0)),U),1:"<deleted>")
	S ENTX(1)="The CMR value for Equipment Entry # "_ENEQ_" was changed"
	S ENTX(2)="from "_ENCMR1N_" to "_ENCMR2N_" by "_$$GET1^DIQ(200,DUZ,.01)
	S ENTX(3)="The following IT assignments were automatically terminated"
	S ENTX(4)="since the new CMR value does not have IT TRACKING = Yes."
	S ENTX(5)=" "
	;
	S XMDUZ="AEMS/MERS"
	S XMSUB="IT Assignments Terminated for Entry # "_ENEQ
	S XMY("G.EN IT EQUIPMENT")=""
	S XMTEXT="ENTX("
	D ^XMD
	Q
	;
CMRDJPR	; CMR Label Pre-Action for ENEQ1 DJ Edit Screen 
	I $D(^ENG(6915.2,"B",DA)) S X=$$CHKFA^ENFAUTL(DA) I $P(X,U)=1 D
	. W "Capitalized asset. CMR may only be edited via FAP documents."
	. W !,"Press <RETURN> to continue..."
	. R X:DTIME
	. S DJNX=9
	;
	; if CMR field will be edited save current CMR value
	; note: the existence of this variable will prevent the ACMR x-ref from
	; deleting any active IT assignments
	I $G(DJNX)'=9 S ENDJCMR1=$P($G(^ENG(6914,DA,2)),U,9)
	Q
	;
CMRDJPS	; CMR Label Post-Action for ENEQ1 DJ Edit Screen
	; note that new data has already been filed by this point
	; input ENDJCMR1 - CMR (internal) value prior to the edit
	;                  note: this variable will be killed
	;       DA - equipment ien being edited
	; output
	;   may reset value of CMR field, if value was reset the following
	;   two DJ screen handler variables will also be modified 
	;     V(8) - update to reflect the reset CMR value (external)
	;     DJNX - update to re-edit the CMR field
	;
	Q:'$D(ENDJCMR1)
	N ENFDA,ENOLD,ENNEW,ENX,X
	S ENOLD=ENDJCMR1 ; old CMR value
	S ENNEW=$P($G(^ENG(6914,DA,2)),U,9) ; new CMR value
	I ENNEW'=ENOLD D
	. ; CMR was changed
	. S ENX=$$CMRCHK^ENTIDD(DA,ENNEW) ; may display message
	. I ENX D
	. . ; change was not appropriate - pause after message
	. . W !,"Press <RETURN> to continue..."
	. . R X:DTIME
	. . ; change back to original value
	. . S ENFDA(6914,DA_",",19)=ENOLD
	. . D FILE^DIE("","ENFDA")
	. . ; fix screen
	. . S V(8)=$$GET1^DIQ(6914,DA,19)
	. . S DJNX=8
	. I 'ENX D
	. . ; change was appropriate
	. . ; terminate any active IT assignments
	. . K ENDJCMR1 ; to prevent following call from quitting
	. . D CMRUPD^ENTIDD(DA,ENOLD,ENNEW)
	;
	; clean up symbol table for variable set by the pre-action
	K ENDJCMR1
	Q
	;
	;ENTIDD
