vhMAIL ;Mail [ 10/16/2001 4:09 PM ] ; Do INIT Quit:'CUserId Do REFRESH If $$ULOCK(CUserId) Do Set AlsPast=1 Goto CHKMAIL .Do COMMAND,CLEAN,UULOCK(CUserId) Quit ; ; Opdrachten lus COMMAND For Quit:Input="-"!(Input=".") Do .Set MailId=$G(^HULP(%J,MAIL("SELECT"))) .Do REFRESH .Set R=$$AUTOREAD() .If $L(R) .Else Set R=$$SCROLL^vhLIST(.MAIL,"",60),MailId=$G(^HULP(%J,MAIL("SELECT"))) .If R="",$D(^vhMAIL("IN",CUserId)) Do WAKEUSER^vhMAIL3(CUserId,1) If $$UNSLEEP^vhMAIL3(CUserId,"",1) Set R="O" .Set Input=R .Do CHKMENU(MailId,MailTyp) .If Input="COM" Do MENU .If Input="SPEC" Do SPEC .If Input="S" Do SCREEN .Do EXEC^vhMenu("MAIL",.Input) .If $P(Input,";")="A" Quit:Input="A" Set ArchTyp=$P(Input,";",2),Input="A" .If "AOV"[Input,$L(Input) Do MAILTYP(CUserId,Input) .If "\SG\SB\SO\SD\SZ\"[(D_Input_D) Do SORTED(Input) .If Input="LN" Do LNIEUW^vhMAIL5 .If Input="LK" Do LKOPIE^vhMAIL5(MailId) .If MailTyp="A" Do ..If "\ENTER\"[(D_Input_D) Do LREAD^vhMAIL5(MailId,Input) .If MailTyp="O" Do ..If "\ENTER\LR\"[(D_Input_D) Do LREAD^vhMAIL5(MailId,Input) .If MailTyp="V" Do ..If Input="ENTER" Do LSEND^vhMAIL4(MailId) ..If Input="LG" Do LVIEW^vhMAIL4(MailId) .If Input="HELP" Do HELP .If Input="PRINT" Do PRINT(MailId,MailTyp) .If Input="LPRINT" Do LPRINT(MailTyp) .If Input="FAX" Do FAX(MailId) .If Input="PY" Do PROXY(CUserId) Quit ; ; Wegschrijven van een mail SAVE(MailId,TekstLoc,RefLoc,FUserId,TUserId,Type,Urgentie,Respons,Onderw,Kreatie,BetrTyp,Betreft,ReplyId,Later,ArchTyp,Param) Set Type=$G(Type),Urgentie=$G(Urgentie),Respons=$G(Respons),Onderw=$G(Onderw),Kreatie=$G(Kreatie) Set BetrTyp=$G(BetrTyp),Betreft=$G(Betreft),ReplyId=$G(ReplyId),Later=$G(Later),ArchTyp=$G(ArchTyp) Set Param=$G(Param) Set MailId=$$SAVE^vhMAIL5(MailId,.TekstLoc,.RefLoc,FUserId,TUserId,Type,Urgentie,Respons,Onderw,Kreatie,BetrTyp,Betreft,ReplyId,Later,ArchTyp,Param) Quit MailId ; ; Verwijderen van een mail DELOBJ(MailId) Do DELOBJ^vhMAIL5(MailId) Quit ; ; Verwijderen van de referenties van een mail DELREF(MailId) Do DELREF^vhMAIL5(MailId) Quit ; ; Verwijderen van bepaalde gebruikers van een mail DELUSERS(MailId,UserId) Do DELUSERS^vhMAIL5(MailId,UserId) Quit ; ; copieren van een mail COPY(MailId) Do COPY^vhMAIL5(MailId) Quit ; ; Volmacht PROXY(CUserId) New Proxy,OwnPKey,NoUserId,OUserId Set OUserId=CUserId Do Quit:NoUserId .Set OwnPKey=$P(^vhUSER("D",CUserId,"M"),D,10) .New CUserId .Set CUserId=$$USELECT(OUserId,"Volmacht van","","","",1,0,"",1,"1;10;30",0,1) .Set NoUserId='CUserId Quit:NoUserId .Set Proxy=1,^vhMAIL("P",OUserId,CUserId,$H)="" .Do LOCALS^vhPROGRAM("CUserId,Proxy,OwnPKey,OUserId") .Do DO^vhPROGRAM("^vhMAIL",1) Do ADD^vhScherm(1,24),FMAIL(CUserId,MailTyp) Xecute FLO Quit ; ; Selekteer gebruikers USELECT(CUserId,Titel,Device,Groep,QValue,All,Multiple,TUserId,Sorted,Display,Modified,Proxy,Other,CB) Set Titel=$G(Titel),Device=$G(Device),Groep=$G(Groep),QValue=$G(QValue),All=$G(All) Set Multiple=$G(Multiple),TUserId=$G(TUserId),Modified=$G(Modified),Proxy=$G(Proxy),Other=$G(Other) Set:Other Other="" ; Andere (via E-mail) afgesloten Set:'$D(Sorted) Sorted=1 Set:'$D(Display) Display="1;10;30" Quit $$USELECT^vhUSER(CUserId,Titel,Device,Groep,QValue,All,Multiple,TUserId,Sorted,Display,Modified,Proxy,.Other,.CB) ; SELUSER(CUserId,OUserId,Titel,MultSel) New CB Merge CB("X","TUSERID")=TUserId New I,Display,UExtern Kill TUserId Set CB("X")="D`CBSUSER^vhMAIL" Set Titel=$G(Titel,$S($G(LineTyp)="D":"Doorgeven",1:"Verzenden")_" naar"),MultSel=$G(MultSel,1) Set Display="1;10;"_($P(sFR,"`",6)-5),TUserId=$$USELECT(CUserId,"","","",Q,"","","","",0),UExtern="" If "F"'[OUserId For I=1:1:$L(OUserId,";") If (";"_TUserId_";")'[(";"_$P(OUserId,";",I)_";") Set UExtern=1 Quit If 'UExtern Do .New Other .Set Other=1,Other(1)="F\Archief" .Set OUserId=$$USELECT(CUserId,Titel,"","",Q,"",$S($G(LineTyp)="D":0,1:MultSel),OUserId,1,Display,1,"",.Other,.CB) .Set:OUserId["?" UExtern=1 If UExtern Do .New Other .Set Other(1)="F\Archief" .Set OUserId=$TR(OUserId,"?","") .Set OUserId=$$USELECT(CUserId,Titel,"","","",1,$S($G(LineTyp)="D":0,1:1),OUserId,1,Display,1,"",.Other,.CB) Kill TUserId Merge TUserId=CB("X","TUSERID") Do REPAINT^vhScherm($S($P(sFR,"`",15)="CC":"NAAR",1:"CC")) If OUserId="F" Do .If "G"'[Respons Set Respons="G" Do REPAINT^vhScherm("ANTWOORD") .If Urgentie'="F" Do ..If Urgentie="" Set Urgentie="F" Quit ..Set Urgentie="F" ..Do REPAINT^vhScherm("DRINGEND") Else Do .If Urgentie="F" Set Urgentie="" Do REPAINT^vhScherm("DRINGEND") Quit OUserId ; CBSUSER(Select,Old,New,Rec) New I,R,TUserId,Check,Param,zb If $G(ToDo),(";"_ToDo("RPUserId")_";")[(";"_$P(Rec,"`")_";") Do Quit .Set Param(1)=$P(Rec,"`",2) .If $P(sFR,"`",15)'="NAAR" Set R=$$^vhTXTPOP("MAIL","CBSUSERRP","",Param(1)) Do DESEL^vhPOPUP(Select) Quit .Set R=$$^vhTXTPOP("MAIL","CBSUSERRP","",Param(1)) .Do SEL^vhPOPUP(Select,1) Quit:'New For I=1:1 Quit:'$D(sY(I)) Do .Quit:$P(Rec,"`")=$P(sY(I),"`") Quit:$P(Rec,"`")'="F"&($P(sY(I),"`")'="F") .Kill sX(I) If $P(Rec,"`")="F" Set CB("X","TUSERID","CC")="" Set sOptie=$TR(sOptie,"M","") Quit Merge TUserId=CB("X","TUSERID") If $P(sFR,"`",15)="CC" Set TUserId("CC")="" Else If $P(sFR,"`",15)="EM" Set TUserId("EM")="" Else If $P(sFR,"`",15)="RP" Set TUserId("RP")="" Else Set TUserId="" Set R=$G(TUserId) Do Set R=$G(TUserId("CC")) Do Set R=$G(TUserId("EM")) Do .For I=1:1:$L(R,";") If $P(R,";",I) Set Check($P(R,";",I))=$G(Check($P(R,";",I)))+1 Set I="" For Set I=$O(sX(I)) Quit:I="" Set Check($P(sY(I),"`"))=$G(Check($P(sY(I),"`")))+1 If Check($P(Rec,"`"))>1 Do .Set Param(1)=$P(Rec,"`",2) .Set Param(2)=$S($P(sFR,"`",15)="CC":"ontvangende",1:"cc") .Set Param(3)=$S($P(sFR,"`",15)'="CC":"ontvangende",1:"cc") .Set R=$$^vhTXTPOP("MAIL","CBSUSER","",Param(1),Param(2),Param(3)) .If R'="O" Do DESEL^vhPOPUP(Select) Quit .Set R=$S($P(sFR,"`",15)="CC":$G(CB("X","TUSERID")),1:$G(CB("X","TUSERID","CC"))) .Quit:R="" .Set R=";"_R_";" .For I=$L(R,";"):-1:1 If $P(R,";",I)=$P(Rec,"`") Set $P(R,";",I,I+1)=$P(R,";",I+1) Quit .Set $E(R)="",$E(R,$L(R))="" .If $P(sFR,"`",15)="CC" Set CB("X","TUSERID")=R .Else Set CB("X","TUSERID","CC")=R Quit ; SORTED(Input) New Sort Set Sort=$E(Input,2),Input=MailTyp Kill MailTyp Do MAILTYP(CUserId,Input,Sort) Quit ; ; Initialiseer ontvangen-, Verzonden- of filed mail MAILTYP(CUserId,R,Sort) Set Sort=$G(Sort) If R="O",$G(MailTyp)=R Do Quit .Quit:'$D(^vhMAIL("IN",CUserId)) .Do MAILLIST(MailTyp),FMAIL(CUserId,MailTyp,Sort),ADD^vhScherm(5,24) If $G(MailTyp)'="A",$G(MailTyp)=R Quit Set MailTyp=R Do MAILLIST(MailTyp),FMAIL(CUserId,MailTyp,Sort),ADD^vhScherm(1,24) Quit ; DISPTYP() New R Set R="Mail\" Set R=R_$S(MailTyp="V":"Verzonden",MailTyp="O":"Ontvangen",MailTyp="A":"Archief"_$S($G(ArchTyp)="":"",1:" - "_ArchTyp),1:"") Set R=R_$S("G"[$G(SortTyp):"",1:" ("_$S(SortTyp="B":"Betreft",SortTyp="O":"Onderwerp",SortTyp="Z":"Zender",1:"Datum")_")") Quit R ; ; Initialisatie MAIL MAILLIST(MailTyp) If MailTyp="A" Do INIT^vhLIST("MAIL","FLD",.MAIL) If MailTyp="O" Do INIT^vhLIST("MAIL","RCV",.MAIL) If MailTyp="V" Do INIT^vhLIST("MAIL","SND",.MAIL) Quit ; ; Ophalen ontvangen-, Verzonden- of filed mail FMAIL(CUserId,MailTyp,Sort) New I,R,MailId,Count,Dir,FArchTyp,LArchTyp,IndexTyp Set Sort=$G(Sort) If '$L(Sort) Do .Set IndexTyp=$S(MailTyp="V":"Z",MailTyp="O":"N",MailTyp="A":"F",1:"") .Set Sort=$G(@("^vhMAIL(""I"_IndexTyp_""",CUserId)")) .If '$L(Sort),IndexTyp="N" Set Sort=$G(@("^vhMAIL(""IR"",CUserId)")) Set SortTyp=Sort Set IndexTyp=$S(MailTyp="V":"Z",MailTyp="O":"NTR",MailTyp="A":"F",1:"") For I=$L(IndexTyp):-1:1 If '$D(@("^vhMAIL(""I"_$E(IndexTyp,I)_""",CUserId)")) Set $E(IndexTyp,I)="" If $L(Sort),$L(IndexTyp) For I=1:1:$L(IndexTyp) Set @("^vhMAIL(""I"_$E(IndexTyp,I)_""",CUserId)")=$S(Sort="G":"",1:Sort) Do CLEAN Set MailTyp=$S(MailTyp="V":"Z",MailTyp="O":"NTR",MailTyp="A":"F",1:MailTyp),Count=0 For Do Set MailTyp=$E(MailTyp,2,9) Quit:MailTyp="" .Set Dir=$S($E(MailTyp)="N":1,1:-1) .If $E(MailTyp)="F" Do Quit ..New:'$D(ArchTyp) ArchTyp ..Set ArchTyp=$G(ArchTyp) ..If ArchTyp="" Set FArchTyp=$O(^vhMAIL("IF",CUserId,"")),LArchTyp=$O(^vhMAIL("IF",CUserId,""),-1) ..Else Set (FArchTyp,LArchTyp)=ArchTyp ..For Do Quit:FArchTyp=LArchTyp Set FArchTyp=$O(^vhMAIL("IF",CUserId,FArchTyp)) ...Quit:FArchTyp="" ...If ArchTyp="" Set Count=Count+1,^HULP(%J,Count)="S\ "_FArchTyp_" " ...Set MailId="" ...For Set MailId=$O(^vhMAIL("IF",CUserId,FArchTyp,MailId),Dir) Quit:MailId="" Set Count=Count+1,^HULP(%J,Count)=MailId .If $E(MailTyp)="T" Do ..New ArchTyp,AArchTyp ..Set AArchTyp=$P(^vhUSER("D",CUserId,"M"),D,15) ..For Do Quit:AArchTyp="" ...Set ArchTyp=$P(AArchTyp,";"),AArchTyp=$P(AArchTyp,";",2,99) ...Quit:ArchTyp="" Quit:'$D(^vhMAIL("IF",CUserId,ArchTyp)) ...Set Count=Count+1,^HULP(%J,Count)="S\ Archief "_ArchTyp_" " ...Set MailId="" ...For Set MailId=$O(^vhMAIL("IF",CUserId,ArchTyp,MailId),Dir) Quit:MailId="" Set Count=Count+1,^HULP(%J,Count)=MailId .Set MailId="" .If $D(^HULP(%J)),$O(^vhMAIL("I"_$E(MailTyp),CUserId,MailId))'="" Set Count=Count+1,^HULP(%J,Count)="S\ Gelezen " .For Set MailId=$O(^vhMAIL("I"_$E(MailTyp),CUserId,MailId),Dir) Quit:MailId="" Do ..If $E(MailTyp)="N",'$D(^vhMAIL("D",MailId,"N",CUserId)) Quit ..If $E(MailTyp)="R",'$D(^vhMAIL("D",MailId,"N",CUserId)) Quit ..If $E(MailTyp)="N",$P(^vhMAIL("D",MailId,"N",CUserId),D,3)="S" Quit ..Set Count=Count+1,^HULP(%J,Count)=MailId Do:"G"'[Sort SORT(Sort) Do ADD^vhScherm(5,24) Quit ; SORT(Sort) New R,Count,MailId,SortId,Next,Label Kill ^HULP(%J,"S") Set Next=1 For Count=1:1 Do Quit:MailId="" .Set MailId=$G(^HULP(%J,Count)) .Kill ^HULP(%J,Count) .If 'MailId Do Quit ..If $P(MailId,D)="S" Set Label=$P(MailId,D,2) ..Set Next=Next+1 .If Sort'="B" Do ..Set R=^vhMAIL("D",MailId) ..Set:Sort="Z" SortId=$$USERNAME^vhUSER($P(R,D,6)) Set:Sort="O" SortId=$P(R,D,4) ..Set:Sort="D" SortId=$P($P(R,D,5),",")_$TR($J($P($P(R,D,5),",",2),5)," ",0) .Else Set SortId=$$FBETREFT^vhMAIL4("","",MailId,1) .Set SortId=$$UPTRIMAN^vhRtn1(SortId) Set:Sort="D" SortId=-SortId .If $D(Label) Set ^HULP(%J,"S",Next,-9999999999)=Label .Set:SortId="" SortId=" " Set ^HULP(%J,"S",Next,SortId,MailId)="" Set (Count,Next)=0 For Set Next=$O(^HULP(%J,"S",Next)) Quit:Next="" Do .Set SortId="" .For Set SortId=$O(^HULP(%J,"S",Next,SortId)) Quit:SortId="" Do ..If SortId=-9999999999 Set Label=^HULP(%J,"S",Next,SortId),Count=Count+1,^HULP(%J,Count)="S\"_Label ..Set MailId="" ..For Set MailId=$O(^HULP(%J,"S",Next,SortId,MailId)) Quit:MailId="" Do ...Set Count=Count+1,^HULP(%J,Count)=MailId Kill ^HULP(%J,"S") Quit ; ; Nieuw MailId NEXTID() Quit $$NEXTID^vhMAIL5() ; ; Ontvangende gebruikers SENDTO(MailId,Read,MaxLen) New I,TUserId,RUserId,EMUserId,UserId,TUser Set Read=$G(Read),MaxLen=$G(MaxLen,20) Set:MaxLen=1 MaxLen=999 Set:Read RUserId=$$RUSERID(MailId) Set RUserId=$G(RUserId) Set TUserId=$$TUSERID(MailId),EMUserId=$$TUSERID(MailId,"","",2) Set:$L(TUserId)&$L(EMUserId) TUserId=TUserId_";" Set TUserId=TUserId_EMUserId Set TUser=$$TUSER(TUserId,1) For I=1:1 Set UserId=$P(TUserId,";",I) Quit:UserId="" Do .Quit:(";"_RUserId_";")'[(";"_UserId_";") .Set $P(TUser,";",I)=$P(TUser,";",I)_"*" If $L($P(TUser,";",1,2))>MaxLen Set MaxLen=$L($P(TUser,";",1,2)) If $L(TUser)>MaxLen Do .For Set TUser=$P(TUser,";",1,$L(TUser,";")-1) Quit:$L(TUser)<(MaxLen-2) .Set TUser=TUser_"..." Quit TUser ; ; Ontvangende gebruikers (ID) ; UserTyp "" = normale + lotus gebruikers ; 0 = normale gebruikers ; 1 = cc gebruikers ; 2 = e-mail gebruikers ; 3 = lotus notes gebruikers TUSERID(MailId,Read,Later,UserTyp) New I,R,FUserId,TUserId,RUserId,LUserId,UserId,UserMail Set Read=$G(Read) Set:Read RUserId=$$RUSERID(MailId) Set RUserId=$G(RUserId) Set Later=$G(Later) Set:Later LUserId=$$LUSERID(MailId) Set LUserId=$G(LUserId) Set UserTyp=$G(UserTyp) Set R=^vhMAIL("D",MailId),FUserId=$P(R,D,6),(I,TUserId)="" For Set I=$O(^vhMAIL("D",MailId,"N",I)) Quit:I="" Do .Set UserMail=$G(^vhUSER("D",I,"M")) .If FUserId=0,$P(UserMail,D,16)=2 Set $P(UserMail,D,16)="" .If UserTyp'=2,I["@" Quit .If UserTyp=2,I'["@" Quit .If UserTyp=0,$P(UserMail,D,16) Quit .If UserTyp=3,'$P(UserMail,D,16) Quit .Set R=^vhMAIL("D",MailId,"N",I) .If $P(R,D,4)="C" Quit:UserTyp'=1 .Else Quit:UserTyp=1 .Set TUserId=TUserId_";"_I Set $E(TUserId)="" For I=1:1 Set UserId=$P(TUserId,";",I) Quit:UserId="" Do .If (";"_RUserId_";")'[(";"_UserId_";"),(";"_LUserId_";")'[(";"_UserId_";") Quit .Set $P(TUserId,";",I)=$P(TUserId,";",I)_"*" Quit TUserId ; ; Ontvangende gebruikers (vertaald) TUSER(TUserId,MaxLen) New R,TUser Set MaxLen=$G(MaxLen,20) Set:MaxLen=1 MaxLen=999 If $L(TUserId,";")=1 Do .If TUserId["@" Set TUser=TUserId .Else If $L(TUserId) Set TUser=$S(TUserId="F":"Archief",TUserId'?.N:TUserId,1:$P(^vhUSER("D",TUserId),D,2)) .Else Set TUser="" Else For R=1:1:$L(TUserId,";") Do .Quit:$P(TUserId,";",R)="" .If $P(TUserId,";",R)["@" Set $P(TUser,";",R)=$P(TUserId,";",R) .Else Set $P(TUser,";",R)=$S($P(TUserId,";",R)="F":"Archief",$P(TUserId,";",R)'?.N:$P(TUserId,";",R),1:$P(^vhUSER("D",$P(TUserId,";",R)),D,4)) If $L($P(TUser,";",1,2))>MaxLen Set MaxLen=$L($P(TUser,";",1,2)) If $L(TUser)>MaxLen Do .For Set TUser=$P(TUser,";",1,$L(TUser,";")-1) Quit:$L(TUser)<(MaxLen-2) .Set TUser=TUser_"..." Quit TUser ; ; Versturende gebruiker SENDFROM(MailId) Quit $$FUSER($$FUSERID(MailId)) ; ; Versturende gebruiker (ID) FUSERID(MailId) Quit $P(^vhMAIL("D",MailId),D,6) ; ; Versturende gebruiker (vertaald) FUSER(FUserId) Quit $$USERNAME^vhUSER(FUserId) ; ; Vertegenwoordiger ? ISVTW(UserId) Set IsVtw=$G(sScr("VTW")) Set:'IsVtw IsVtw=(";"_$$USERID^vhUSER("REMOTE")_";")[(";"_UserId_";") Quit IsVtw ; ; Vertegenwoordiger mag niet wijzigen indien host NOMODHST(MailId,UserId) New NoMod Set:MailId NoMod=$$ISVTW(UserId) Quit $G(NoMod) ; ; Vertegenwoordiger mag niet wijzigen indien MailId>999999 NOMODREM(MailId,UserId) New R,NoMod Set:MailId NoMod=MailId>999999&$$ISVTW(UserId) Quit $G(NoMod) ; ; Mail mag niet gewijzigd worden NOMOD(MailId,UserId) New NoMod,IsRemote Set IsRemote=$G(sScr("VTW")) Xecute "Set NoMod=$$NOMOD"_$P("HST\REM",D,IsRemote+1)_"(MailId,UserId)" Quit ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("vhMAIL.MAC_MagMailWijzigen") && NoMod ; ; Reeds gelezen door gebruikers (ID) RUSERID(MailId,CUserId) New RUserId,UserId Set (RUserId,UserId)="",CUserId=$G(CUserId) For Set UserId=$O(^vhMAIL("D",MailId,"N",UserId)) Quit:UserId="" Do .Quit:UserId=CUserId!'$L($P(^vhMAIL("D",MailId,"N",UserId),D)) .Set RUserId=RUserId_";"_UserId Set $E(RUserId)="" Quit RUserId ; ; Later te lezen door gebruikers (ID) LUSERID(MailId,CUserId) New RUserId,UserId Set (RUserId,UserId)="",CUserId=$G(CUserId) For Set UserId=$O(^vhMAIL("D",MailId,"N",UserId)) Quit:UserId="" Do .Quit:UserId=CUserId!($$DIFFTIME^vhDTyp($P(^vhMAIL("D",MailId,"N",UserId),D,5),$H)>0) .Set RUserId=RUserId_";"_UserId Set $E(RUserId)="" Quit RUserId ; REFRESH ; Herstellen scherm If sRT<5 Do DISPLAY^vhScherm("MAIL","","","H") If sRB>4 Do .If $G(MAIL("SELECT")) For MAIL("SELECT")=MAIL("SELECT"):1 Quit:$P($G(^HULP(%J,MAIL("SELECT"))),D)'="S" .Do WRITE^vhLIST(.MAIL) Do RESET^vhScherm Quit ; CLEAN Kill ^HULP(%J) Quit ; ; Lock user ULOCK(CUserId,NoDisp) Do ADD^vhLock("^vhMAIL(""IZ"",CUserId)") If '%TC,'$G(NoDisp) Do LDISP^vhLock("^vhMAIL(""IZ"",CUserId)","Mail voor "_$P(^vhUSER("D",CUserId),D,2)) Quit %TC ; UULOCK(CUserId) Do REMOVE^vhLock("^vhMAIL(""IZ"",CUserId)") Quit ; ; Lock mail MLOCK(MailId,UserId,NoDisp) New Ref Set UserId=$G(UserId),NoDisp=$G(NoDisp) Set Ref="^vhMAIL(""D"","_MailId Set:UserId Ref=Ref_",""N"","_UserId Set Ref=Ref_")" Do ADD^vhLock(Ref) If '%TC,'NoDisp Do LDISP^vhLock(Ref,"Mail") Quit %TC ; MUNLOCK(MailId,UserId) New Ref Set UserId=$G(UserId) Set Ref="^vhMAIL(""D"","_MailId Set:UserId Ref=Ref_",""N"","_UserId Set Ref=Ref_")" Do REMOVE^vhLock(Ref) Quit ; ; Verzenden van mail door het systeem SYSTEM(BetrTyp,Betreft,Onderw,TUserId,Tekst,Refer,Urgentie,DelKode,Optie) New MailId Set Tekst=$G(Tekst),Refer=$G(Refer),Urgentie=$G(Urgentie),DelKode=$G(DelKode) Set:Urgentie Urgentie="U" Set:DelKode DelKode="A" Set MailId=$$SYSTEM^vhMAIL3(BetrTyp,Betreft,Onderw,TUserId,.Tekst,.Refer,Urgentie,DelKode,.Optie) Quit MailId ; ; Verzenden van een externe mail ; Optie oproepen via .Local ; Optie("URG") = Urgentie ; Optie("DEL") = DelKode ; Optie("RESP") = Respons ; Optie("EDIT") = EditScrn ("" of 0 = nieuw, 1 = edit, -1 = niet editeerbaar) ; Optie("DATE") = Kreatiedatum ($H formaat) ; Optie("VOL") = Volume (UCI,VOL) ; Optie("NOII") = -1 (Zeker geen II index opzetten) ; Optie("TYPE") = het type mail indien verschillend van I. ; Optie("DLN") = deadline ; Optie("INITEXEC")= Uit te voeren INITEXEC i.p.v. INITEXEC^vhMAIL4 EXTERN(BetrTyp,Betreft,Onderw,TUserId,Tekst,Refer,Optie) New ZATemp,MailId,%J,EditScrn Set ZATemp=$ZA Set EditScrn=$G(Optie("EDIT")) Do INIT Set BetrTyp=$G(BetrTyp),Betreft=$G(Betreft),Onderw=$G(Onderw),TUserId=$G(TUserId) If EditScrn'=-1 Do .Xecute FLO .Do STORE^vhTERMINA() If $L(CUserId) Set MailId=$$LEXTERN^vhMAIL5(BetrTyp,Betreft,Onderw,.TUserId,.Tekst,.Refer,.Optie) If EditScrn'=-1 Do REFRESH^vhTERMINA() Use 0:(::::ZATemp:64) Quit $G(MailId) ; ; Automatisch openvallan van niet gelezen wakkere mail AUTOREAD() New %TC,I,R,Input,Quit Set Input="" If $D(^vhMAIL("IN",CUserId)) Do .Do WAKEUSER^vhMAIL3(CUserId,1) .If $$USLEEP^vhMAIL3(CUserId,"",1) Kill AutoLoop Quit .If MailTyp'="O" Do MAILTYP(CUserId,"O"),REFRESH .If '$G(AutoLoop),MAIL("SELECT")'=1 Do MOVE^vhLIST(.MAIL,"HO",1) .Set AutoLoop=1 .For Do Quit:$O(^HULP(%J,MAIL("SELECT")))=""!$L(Input)!$G(Quit) ..If '$D(^HULP(%J,MAIL("SELECT"))) Set Quit=1 Quit ..Set MailId=^HULP(%J,MAIL("SELECT")) ..If '$D(^vhMAIL("IN",CUserId,MailId)) Set Quit=1 Quit ..For Do Quit:%TC!$G(Quit) ...Set %TC=$$MLOCK(MailId,CUserId,1) ...If %TC Do MUNLOCK(MailId,CUserId) Quit ...Do MOVE^vhLIST(.MAIL,"DO",1) ...If MailId=$G(^HULP(%J,MAIL("SELECT"))) Set Quit=1 ...Else Set MailId=$G(^HULP(%J,MAIL("SELECT"))) ..Quit:'%TC ..Set R=^vhMAIL("D",MailId,"N",CUserId) ..If R="" Set Input="LR" Quit ..If $P(R,D,3,4)="\C",$$MNSLEEP^vhMAIL3(MailId,CUserId) Set Input="LR" Quit ..Do MOVE^vhLIST(.MAIL,"DO",1) Quit Input ; ; Nazicht of er mail is voor een gebruiker (opgeroepen vanuit vhINITML (MENU)) CHKMAIL Do CHKMAIL^vhMAIL3($G(AlsPast)) Quit ; ; Nazicht of er berichten zijn voor mail CHKMESS(System) Do CHKMESS^vhMAIL3(System) Quit ; ; Opkuisen van het mailbestand CLEANUP Goto CLEANUP^vhMAIL3 ; CHKTODO Goto CHKTODO^vhMAIL3 ; ; Nazicht van het mailbestand CHKFILE Goto CHKFILE^vhMAIL2 ; ;Initialisatie INIT New XUserId,XTekst,XRefer,XOptie Merge XUserId=TUserId,XTekst=Tekst,XRefer=Refer,XOptie=Optie If '$D(Q) Do .New CUserId,EditScrn,BetrTyp,Betreft,Onderw,XUserId,XTekst,XRefer,XOptie,ZATemp .Do INIT^vhTERMINA Merge TUserId=XUserId,Tekst=XTekst,Refer=XRefer,Optie=XOptie Set %J=$$%J^vhRtn1() Kill ^HULP(%J),MailTyp If '$G(CUserId),$P($G(sUser),D) Set CUserId=$P($G(sUser),D) If '$G(CUserId),$G(EditScrn)'=-1 Do ADD^vhScherm(1,1),REFRESH,INIT^vhUSER() Set CUserId=$P($G(sUser),D) If 'CUserId,$G(EditScrn)'=-1 Quit:$$USELECT("","",$$IO^cQ5,"","","","","","",0) Do Quit .Do ADD^vhScherm(1,1),REFRESH .Set R="R",R(1)="Dit scherm heeft geen toegang tot het mail programma",R=$$WILD^vhTXTPOP("","",R) If $G(EditScrn)'=-1 Do WAKEUSER^vhMAIL3(CUserId,1),MAILTYP(CUserId,"O") Set Input="" Set sS("N")="" Do ADD^vhScherm(1,24) Set (Input,sS("MOD"),sS("CALC"))="" Set sRR="REFRESH^vhMAIL" Quit ; PRINT(MailId,MailTyp,Titel) Set MailId=$G(MailId),MailTyp=$G(MailTyp),Titel=$G(Titel) Do PRINT^vhMAIL4(MailId,MailTyp,Titel) Quit ; LPRINT(MailTyp) Set MailTyp=$G(MailTyp) Do LPRINT^vhMAIL4(MailTyp) Quit ; FAX(MailId) Set MailId=$G(MailId) Do MAIL^DCFAX(MailId) Quit ; CHKMENU(MailId,MailTyp) New R,MenuItem,UserId,Type,ArchTyp,Urgentie Set MenuItem="" Set:MailId MenuItem="P" If '$G(Proxy),$L($P($G(^vhUSER("D",CUserId,"M")),D,10)) Set MenuItem=MenuItem_";X" Do SET^vhMenu("MAILFILE",MenuItem) Set MenuItem="" If MailId Do .Set R=^vhMAIL("D",MailId),Type=$P(R,D),Urgentie=$P(R,D,2),UserId=$P(R,D,6),ArchTyp=$P($P(R,D,11),";") .If MailTyp="O",$L(ArchTyp),$D(^vhMAIL("IF",CUserId,ArchTyp,MailId)) New MailTyp Set MailTyp="A" .If MailTyp'="A",Urgentie="F" Set MailTyp="A" .If MailTyp="A" Do ..If UserId=CUserId,Type'="V" Set MenuItem=MenuItem_";LW" ..Else If ArchTyp="Te doen" Set MenuItem=MenuItem_";LW" ..Set MenuItem=MenuItem_";LP" .If MailTyp="O" Do ..Set MenuItem="LF" ..If UserId'=CUserId Do ...If UserId'["@",'$L($P($G(^vhUSER("D",UserId,"M")),D)) Quit ...Set MenuItem=MenuItem_";LB" ..If $L($P($G(^vhMAIL("D",MailId,"N",CUserId)),D)) Set MenuItem=MenuItem_";LL" ..Set MenuItem=MenuItem_";LP" .If MailTyp="V" Do ..Set MenuItem="LG;LZ" ..If Type'="V" Set MenuItem=MenuItem_";LW" ..Set MenuItem=MenuItem_";LP" .Set:$E(MenuItem)=";" $E(MenuItem)="" Set MenuItem="ENTER;LK;LV;"_MenuItem Set MenuItem="LN;"_MenuItem Do SET^vhMenu("MAILEDIT",MenuItem) Quit ; SUBARCH ;Vervolledigen van het menu MAILVENSTR met de subarchieven New SubArch If MailTyp="A",$O(^($O(^vhMAIL("IF",CUserId,""))))="",$O(^vhMAIL("IF",CUserId,""))=$G(ArchTyp) Quit Set SubArch="" For Set SubArch=$O(^vhMAIL("IF",CUserId,SubArch)) Quit:SubArch="" Do .Set S=S+1,Y(S)=SubArch_"`",$P(sR,"`",3,4)="K`A;"_SubArch,Z(ZI,S)=sR Quit MENU Set Input="" Do CALL^vhMenu("MAIL","F*") Quit ; SPEC Set Input="" Do CALLSPEC^vhMenu($P($P(MAIL("POS"),"`",2),";")+MAIL("SELECT")_";80","MAILEDIT","") Quit ; SCREEN Set Input="" Do CALLSPEC^vhMenu("","MAILVENSTR","") Quit ; MINCLUDE(Menu,Item,MailTyp) New Incl,Operand Set Incl=1,Operand=$P(^MN("D",Menu,"F",Item),"`",4) If Menu="MAILSORT" Do .Set Operand=$E(Operand,2) Set:Operand="G" Operand="" .If MailTyp="V" Set:Operand="Z" Incl=0 Set:Operand=$G(^vhMAIL("IZ",CUserId)) Incl=0 .If MailTyp="O" Do ..If $D(^vhMAIL("IN",CUserId)) Set:Operand=$G(^vhMAIL("IN",CUserId)) Incl=0 Quit ..Set:Operand=$G(^vhMAIL("IR",CUserId)) Incl=0 .If MailTyp="A" Set:Operand=$G(^vhMAIL("IF",CUserId)) Incl=0 Quit Incl ; ; Oproep van Menu en HELP HELP W *7 Quit Set R="" Do POP^MN("TLLEVWK") Set Input=R If Input'="HELP" Do REFRESH Quit New HLP Set HLP(1)="TLLEVWK" Set HLP(3)=9 Do ^HELP Do ADD^vhScherm(9,24) Quit ;