vhLock ;Verwerking van locks [ 12/03/2003 8:16 AM ] ; LOCKW(BList,T1,T2,T3,T4,T5) ; met waarschuwing New J,N,Y,Ask,GRef LOCKW2 Set %TC=1 For J=1:1:5 Quit:$G(@("T"_J))="" S Y="Lock +"_@("T"_J)_":0" x Y Quit:'$T Quit:$T 1 Set GRef=@("T"_J) For J=1:1:J-1 S Y="Lock -"_@("T"_J)_":0" x Y ; Steeds unlocken Set Ask=$$WARN(GRef,$G(BList)) Goto LOCKW2:Ask="N" ; Nogmaals Set %TC=0 Quit Ask WARN(Ref,BList) ;BList : N = Nogmaals, R = Alleen lezen, X = eXit Set:$G(BList)="" BList="NX" New Dev,UserDev,User,R,Tekst,Button,Ask,GName,Job,Devio Set (User,Dev,UserDev)="" Set (Dev,UserDev)=$$LOCKDEV(Ref),Devio=$$IOcQ5^cS(Dev) Set Job=$$LOCKJOB(Ref) If $L(UserDev) Set User=$P($$USER^vhRtn1(UserDev),D,1) Set GName=$$TRANSREF(Ref) Set Tekst=0 If $L(GName) Do . Set Tekst=Tekst+1,Tekst(Tekst)=$$INITCAP^vhRtn1(GName)_" in gebruik" . Set Tekst=Tekst+1,Tekst(Tekst)="Referentie: "_Ref Else Do . Set Tekst=Tekst+1,Tekst(Tekst)="Referentie: "_Ref_" in gebruik" If 0'[Dev Do .Set Tekst=Tekst+1,Tekst(Tekst)="Door : process "_Job .If $L(User),User'=UserDev Set Tekst(Tekst)=Tekst(Tekst)_" - "_User .Set:Devio Tekst(Tekst)=Tekst(Tekst)_" - "_Devio Set Button=0 Set:BList["N" Button=Button+1,Button(Button)="Nogmaals&N" Set:BList["R" Button=Button+1,Button(Button)="Alleen lezen&R" Set:BList["X" Button=Button+1,Button(Button)="Stoppen&X" Set Ask=$$WILD^vhTXTPOP("C;C","Bestand in gebruik","Tekst","Button",3) Quit Ask TRANSREF(GlobRef) New Ref,Piece,Txt Set Ref=GlobRef Set:$E(Ref)="^" $E(Ref)="" Set:$E(Ref)="[" Ref=$P(Ref,"]",2,99) ; uci Set:$E(Ref)="|" Ref=$P(Ref,"|",3,99) ; uci Set Ref=$P(Ref,"(",1) Set Piece=$P($T(GNAME),";"_Ref_";") Quit:Piece=$T(GNAME) "" Set Txt=$P($T(GOMS),";",$L(Piece,";")+1) Quit Txt GNAME ;KPR;KOD;KKL;ORDW;PRBS;KTO;RCP;KUL;KLE;KlachtD;REMBOURS; GOMS ;product;order;klant;wms-order;bouwsteen;toelevering;receptie;levering;leverancier;klacht;Rembours; ; LDISP(Ref,Text) ; Waarschuwing gebruiker indien lock niet mogelijk New Dev,UserDev,User,R,Job,Devio,Text2,IK,zb Do:$G(QW) ZWINT^vhRtn2(1) Set (User,Dev,UserDev)="" Set (Dev,UserDev)=$$LOCKDEV(Ref),Devio=$$IOcQ5^cS(Dev) Set Job=$$LOCKJOB(Ref) If $L(UserDev) Set User=$P($$USER^vhRtn1(UserDev),D,1) If $G(Text)="" Set Text="Bestand "_Ref Set Text=Text_" in gebruik" Set Text2="" If 0'[Dev Do .Set Text2=" (Process "_Job .If $L(User),User'=UserDev Set Text2=Text2_" - "_User .Set:Devio Text2=Text2_" - "_Devio .Set Text2=Text2_")" If $L(Text_Text2)>69 Do .Set Text2=$E(Text2,3,$L(Text2)-1),IK(2)=2 .For Do Quit:$G(zb)="ENTER" ..Set FP=2401 ..Write @F,@F1,@FMTI," ",Text," [] = ok ",@FMTi ..Do IK^PROC1 ..Quit:$G(zb)="ENTER" ..Set FP=2401 ..Write @F,@F1,@FMTI," ",Text2," [] = ok ",@FMTi ..Do IK^PROC1 Else Do .Set FP=2401 .Write @F,@F1,@FMTI," ",Text,Text2," [] = ok ",@FMTi .Do IK^PROC1 Set FP=2401 Write @F,@F1 Do:$G(QW) ZWINT^vhRtn2(0) Quit ; ADD(T1,T2,T3,T4,T5) New J,N,Y Set %TC=1 For J=1:1:5 Quit:$G(@("T"_J))="" S Y="Lock +"_@("T"_J)_":0" x Y Quit:'$T Quit:$T For J=1:1:J-1 Lock -@("T"_J) Set %TC=0 Quit ; REMOVE(T1) X "Lock -"_T1 Quit ; ADDTAB(TName) New J,Y Set %TC=1 For J=1:1:+$G(@TName) S Y="Lock +"_(@TName@(J))_":0" x Y Quit:'$T Goto:'$T LOCKT2 Quit ; TLOCK(Ref,Dev) Quit $$LOCKDEV(Ref)=Dev ; LOCKT2 For J=J-1:-1:1 Lock -@(Table(J)) Set %TC=0 Quit ; ;Geeft het device welke een bepaalde referentie gelockt heeft LOCKDEV(sT) New Job,LockJob,Dev,LockDev,I,DevTab Set LockJob=$$LOCKJOB(sT) If 'LockJob Quit "" ;Locktable bevat geen lock op sT Set LockDev=$$DEVICE^cS(LockJob) Quit LockDev ; ;Geeft de job welke een bepaalde referentie gelockt heeft LOCKJOB(sT) New LockTab,LockItem,Length,Root,LockRef,Char,UCI,VOL,Job,LockJob,I New DDB,FreeSpace,LockData,Context,Index,ownerflag If $E(sT)'="^",$D(^DD("R",sT)) Set sT=$P(^(sT),"`",1) If $E(sT)="^" Set sT=$D(@sT),sT=$ZR Set sT=$TR(sT,"()""",",") If $$GATHER^%LM(0,1) If $$LIST^%LM(.FreeSpace,.LockData,.Context,.Index,0,1) Set LockJob="" For Index=1:1:Index Do Quit:LockJob .Xecute "Set LockRef=$LI($LI($LI(LockData,Index),2),1)" .Set LockRef=$P(LockRef,"[")_$P(LockRef,"]",2) .Set LockRef=$TR(LockRef,"()""",",") .Xecute:LockRef=$E(sT,1,$L(LockRef)) "Set LockJob=$LI($LI($LI($LI($LI(LockData,Index),2),2)))" .Xecute:$E(LockRef,1,$L(sT))=sT "Set LockJob=$LI($LI($LI($LI($LI(LockData,Index),2),2)))" Set:'LockJob LockJob="" ;Locktable bevat geen lock op sT Quit LockJob ;