vhWACHTW ;WACHTWOORDEN [ 12/01/2003 2:50 PM ] ; ; Opvragen en kontrole van het wachtwoord en opzetten van de tijd indien ok ASK(Groep,Position,TimeOut,Time,TimeTyp,ExtraTekst) New T Set T=$$CHECK(Groep,$G(Position),$G(TimeOut),$G(Time),$G(TimeTyp),$G(ExtraTekst)) Do:T SET(Groep) Quit T ; ; Opvragen en kontrole van het wachtwoord CHECK(Groep,Position,TimeOut,Time,TimeTyp,ExtraTekst) New I,R,T,Kode,PassW,TimeTyp,Line,Kolom,UserGrp If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("vhWACHTW.MAC_CheckAltijdOk") Quit 1 Set ExtraTekst=$G(ExtraTekst) If '$G(CUserId) New CUserId Set CUserId=$$DEVUSER^vhUSER($$IO^cQ5) If 'CUserId Set UserGrp="" Else Set UserGrp=$G(^cLOG("WACHTW","W",CUserId,"W")) Set:$L(UserGrp) UserGrp=";"_UserGrp_";" If $L(UserGrp) Do Quit:'T T .If $E(UserGrp,1,3)=";-;" Set T=UserGrp'[(";"_Groep_";") .Else Set T=UserGrp[(";"_Groep_";") .Set:'T R=$$^vhTXTPOP("vhWACHTW","NOACCESWW","",Groep) Set Position=$G(Position),TimeOut=$G(TimeOut),Time=$G(Time),TimeTyp=$G(TimeTyp) Set T=$P($G(^cLOG("WACHTW","T","U",$$IO^cQ5,Groep)),D) Set:T<0 Time=T ;Wachtwoord afsluiten If '$L(Time),$D(^cLOG("WACHTW","U",$$IO^cQ5,Groep)) Do Set Time=$P(T,D),TimeTyp=$P(T,D,2) .Set T=$G(^cLOG("WACHTW","T","U",$$IO^cQ5,Groep)) Quit:$L(T) .Set T=$G(^cLOG("WACHTW","T","G",Groep)) Quit:$L(T) .Set T=$G(^cLOG("WACHTW","T","U",$$IO^cQ5)) Quit:$L(T) .Set T=$G(^cLOG("WACHTW","T","G")) Quit:$L(T) .Set T="30\M" If Time Quit:Time<0 0 If $$TIME(Groep,Time,TimeTyp) Quit 1 Set PassW=$$UPTRIMAN^vhRtn1($G(^cLOG("WACHTW","G",Groep),Groep)) Set Line=Position\100,Kolom=Position#100 Set:'Line Line=Kolom,Kolom="" Set:'Line Line=21 Set:'Kolom Kolom=2 Set FP=Line*100+Kolom Set:$L(ExtraTekst) FP=FP-($L(ExtraTekst,"~")*100) Do:$G(QW) ZWINT^vhRtn2(1,Line,Kolom) Do STORE^vhTERMINA() If $G(QW) Do .If Position Do O^cA612(FP\100,FP#100,1,$S(PassW'[Groep:$L(Groep),1:0)+15,"","","","") .Else Do O^cA612(FP-100\100,1,26-(FP\100),$G(sScr("KOL"),80),"","","","") Set FP=200+(FP#100) Else If 'Position Write @F,@F1 If $L(ExtraTekst) For I=1:1:$L(ExtraTekst,"~") Write @F,@F2," ",$P(ExtraTekst,"~",I) Set FP=FP+100 Write @F,@F2,$J("",13),@F93,@F,@F92," CODE " Write:PassW'[Groep Groep," " Write @F93,": ",*7 Use 0:(:"+S") Kill ^vhWACHTW($J) Set ^vhWACHTW($J)=Groep_D_PassW_D_$G(%ZM) Read @("Kode"_$S($L(TimeOut):":"_TimeOut,1:"")) Kill ^vhWACHTW($J) Set Kode=$$UPTRIMAN^vhRtn1(Kode) Write @F,@F2 Use 0:(:"-S") Do:$G(QW) C^cA612 Xecute F71 Do REFRESH^vhTERMINA() Do:$G(QW) .New Kode .Do ZWINT^vhRtn2(0) If Kode="" Do Quit T .Set T=$G(^cLOG("WACHTW","U",$$IO^cQ5,Groep))=1 .Do KILL(Groep) Quit Kode[PassW&$L(PassW) ; ; Opzetten van de tijd SET(Groep) Set Groep=$G(Groep) Quit:Groep="" Set ^cLOG("WACHTW","U",$$IO^cQ5,Groep)=$H Quit ; ; Kontrole van de verstreken tijd TIME(Groep,Time,TimeTyp) New H Set TimeTyp=$G(TimeTyp) Set:TimeTyp="" TimeTyp="S" Set Time=Time*$S(TimeTyp="S":1,TimeTyp="M":60,TimeTyp="H":3600,TimeTyp="D":86400,1:1) Set H=$G(^cLOG("WACHTW","U",$$IO^cQ5,Groep)) Quit $H*86400+$P($H,",",2)'>(H*86400+$P(H,",",2)+Time) ; KILL(Groep) If $L($G(Groep)) Kill ^cLOG("WACHTW","U",$$IO^cQ5,Groep) Else Kill ^cLOG("WACHTW","U",$$IO^cQ5) Quit ; ; User = "" -> oproep door manager ; User = 1 -> oproep door gebruiker REMOTE(User) New (User) Do .New User .Do INIT^vhTERMINA Set User=$G(User),Manager='User Do:Manager STORE^vhTERMINA() If '$G(CUserId) New CUserId Set CUserId=$$DEVUSER^vhUSER($$IO^cQ5) Set WachtW=$G(^cLOG("WACHTW","W",CUserId)) If $L(WachtW)!Manager Do .Do DISPLAY^vhScherm("REMWACHTW") .Quit:Manager .Do FIELD^vhScherm("REMWACHTW","WACHTW") .Quit:'WachtW .Set UserGrp=$G(^cLOG("WACHTW","W",CUserId,"R")) Else Do .Do DISPLAY^vhScherm("REMWACHTW") .Set R=$$^vhTXTPOP("vhWACHTW","NOACCES") If WachtW!Manager Do .Set UserGrp=$G(UserGrp) .If 'Manager,$L(UserGrp) Set UserGrp=";"_UserGrp_";" .Set InUse=$$INUSE^cS(,,"J"),JobNrs="" .For I=1:1:$L(InUse,",") If $$ROUTINE^cS("",$P(InUse,",",I))=$ZN Set JobNrs=JobNrs_","_$P(InUse,",",I) .Set $E(JobNrs)="" .If $L(JobNrs) Do ..Do INIT^vhLIST("vhWACHTW","LIST",.sLD) ..For I=1:1:$L(JobNrs,",") Do ...Set UserId=$P($$DEVUSER^vhUSER($$IO^cQ5($$DEVICE^cS($P(JobNrs,",",I)))),";") ...Set User=$S(UserId:$P(^vhUSER("D",UserId),D,2),1:"JobNrs "_$P(JobNrs,",",I)) ...Set R=$$LOCALS($P(JobNrs,",",I)),Groep=$P(R,D),PassW=$P(R,D,2),Menu=$P(R,D,3) ...If 'Manager,$L(UserGrp),UserGrp'[(";"_Groep_";") Quit ...Set JobNrs(I)=I_D_User_D_Groep_D_PassW_D_Menu ..If $O(JobNrs(""))="" Set R=$$^vhTXTPOP("vhWACHTW","NOWACHTW") Quit ..Set DispWW=0,Input="",TimeOut="" ..Do WRITE^vhLIST(.sLD) ..For Do Quit:Input="O" ...Set:$P(sLD("B"),"`",5)=4 $P(sLD("B"),"`",5)=1 ...Set Input=$$SCROLL^vhLIST(.sLD,,TimeOut) ...Quit:Input="O" ...If Input="W" Do ....Set DispWW=1,TimeOut=3 ....Do LINE^vhLIST(.sLD,sLD("SELECT")) ...Else Do ....Set DispWW=0,TimeOut="" ....Set:$P(sLD("B"),"`",5)=4 $P(sLD("B"),"`",5)=1 ....Do WRITE^vhLIST(.sLD) ...If Input="V" Do ....Quit:$L($P(JobNrs(sLD("SELECT")),D,6)) ....Set R=sLD("SELECT"),Free=1 ....Set R=JobNrs(R),K=$P(R,D,2),Groep=$P(R,D,3),PassW=$P(R,D,4),R=$P(R,D) ....Set JobNr=$P(JobNrs,",",R),Device=$$DEVICE^cS(JobNr) ....If $$ROUTINE^cS("",Device)'=$ZN Do .....Do STORE^vhTERMINA() .....Set Free=0,FP=2101 .....Write @F,@F1 .....Set R=$$ASK^vhINP("Timeout verstreken : ",1,""," [] = ok","",2) .....Do REFRESH^vhTERMINA() ....Else Do .....Set ^cLOG("WACHTW","U",$$IO^cQ5(Device),Groep)=1 .....Xecute "Set R=$zutil(94,JobNr,""Enter"")" .....Use 0 ....Set $P(JobNrs(sLD("SELECT")),D,6)=Free ....Do LINE^vhLIST(.sLD,sLD("SELECT")) .Else Set R=$$^vhTXTPOP("vhWACHTW","NOWACHTW") Do:Manager REFRESH^vhTERMINA() Quit ; LOCALS(JobNr) New R,Groep,PassW,Menu Set R=$G(^vhWACHTW(JobNr)),Groep=$P(R,D),PassW=$P(R,D,2),Menu=$P(R,D,3) If $L(Menu) Set Menu=$P(@Menu,D),Menu=$$UPCASE^vhRtn1($E(Menu))_$$LOCASE^vhRtn1($E(Menu,2,99)) Quit Groep_D_PassW_D_Menu ;