vhMAIL3 ;Mail [ 03/31/2003 11:44 AM ] ; ; Stuur een bericht naar de grbruikers MESSAGE(CUserId,TUserId,Tekst) Quit ; Kan niet meer worden gebruikt in Cache i.v.m. ZBCS New UserId,Device,System Set Tekst=$G(Tekst) Set:Tekst="" Tekst="Mail" For I=1:1 Quit:$P(TUserId,";",I)="" Do .Set UserId=$P(TUserId,";",I) .Quit:UserId=CUserId .Set Device="" .For Set Device=$O(^vhUSER("D",UserId,"D",Device)) Quit:Device="" Do ..If Device?.N,Device=$$IO^cQ5 Quit ..Set System=$S(Device?.N:$P($ZU(1,0),",",2),1:$P(Device,":")) ..Set Device(System,$S(Device?.N:Device,1:$P(Device,":",2)))="" Set System="" For Set System=$O(Device(System)) Quit:System="" Do .Set (I,Device)="" .For Set I=$O(Device(System,I)) Quit:I="" Set Device=Device_","_I .Set $E(Device)="" .If System'=$P($ZU(1,0),",",2) Do ..Set:Tekst="Mail" Tekst="Mail ("_$P($ZU(1,0),",",2)_")" ..Set:Tekst="Mail (r)" Tekst="Mail (r-"_$P($ZU(1,0),",",2)_")" .Do SYSTEM^vhZBCS("MGR",System,Device,Tekst,180-$L(Tekst),"@FMTB,@FMTK"):(10) Quit ; ; Opkuisen van ^vhMESSAGE KILLMESS(MailId) New TUserId,Device,System Set TUserId="" For Set TUserId=$O(^vhMAIL("D",MailId,"N",TUserId)) Quit:TUserId="" Quit:"S"[$P(^(TUserId),D,3) If TUserId="" Do .For Set TUserId=$O(^vhMAIL("D",MailId,"N",TUserId)) Quit:TUserId="" Do ..Quit:TUserId["@" ..Set Device=$P($G(^vhUSER("D",TUserId,"D")),D) Quit:Device="" ..Set System=$S(Device?.N:$P($ZU(1,0),",",2),1:$P(Device,":")) Quit:System="" ..Kill ^vhMESSAGE(System,"MAIL",MailId) Quit ; ; Verzenden van mail door het systeem SYSTEM(BetrTyp,Betreft,Onderw,TUserId,Tekst,Refer,Urgentie,DelKode,Optie) New MailId,CUserId,TekstLoc,RefLoc,Type Set Tekst=$G(Tekst),Refer=$G(Refer),Urgentie=$G(Urgentie),DelKode=$G(DelKode) Set:Urgentie Urgentie="U" Set:DelKode DelKode="A" Merge TekstLoc=Tekst,RefLoc=Refer If '$D(Q) Do .New BetrTyp,Betreft,Onderw,TUserId,TekstLoc,RefLoc,Urgentie,DelKode,Optie .Set Q="SYS" Do ^cA604 If $L($G(TekstLoc)),$D(TekstLoc)=1 Set TekstLoc(1)=TekstLoc If $L($G(RefLoc)),$D(RefLoc)=1 Set RefLoc(1)=RefLoc Set Type=$G(Optie("TYPE")),CUserId=0 Set:Type="" Type="I" Set MailId=$$SAVE^vhMAIL5("",.TekstLoc,.RefLoc,CUserId,TUserId,Type,Urgentie_DelKode,"G",Onderw,"",BetrTyp,Betreft,"","","","",.Optie) Set TUserId=$$MERGEGRP^vhUSER(CUserId,TUserId,,1) If Urgentie'["U" Set TUserId=$$OVUSER^vhUSER(CUserId,TUserId) If $L(TUserId) Do MESSAGE(CUserId,TUserId) Quit MailId ; ; Nazicht of er mail is voor een gebruiker (opgeroepen vanuit vhINITML (MENU)) CHKMAIL(AlsPast) Quit:$G(Q)'="K" ; Niet indien DATA-M menu New R,UserId,TUserId,MailId,Mail,Buttons,AutoDisp,ButAli,MultUser,DevNum Do INIT^vhTERMINA Set AlsPast=$G(AlsPast) Set UserId=$G(CUserId),MultUser=1,DevNum=$$IO^cQ5 If UserId Quit:'$$ULOCK^vhMAIL(UserId,1) Do UULOCK^vhMAIL(UserId) If $O(^($O(^vhUSER("ID",DevNum,""))))="" Set MultUser=0 If 'UserId Do .If $D(^vhUSER("ID",DevNum)),$O(^($O(^vhUSER("ID",DevNum,""))))="" Set (UserId,CUserId)=$O(^vhUSER("ID",DevNum,"")) .If $D(sUser) Set (UserId,CUserId)=$P(sUser,D) Set:$G(CUserId) $P(sUser,D)=CUserId If UserId Do .Do WAKEUSER(UserId,AlsPast) .If $$UNSLEEP(UserId,1,AlsPast) Set UserId(UserId)="" Else For Set UserId=$O(^vhUSER("ID",DevNum,UserId)) Quit:UserId="" Do .Do WAKEUSER(UserId,AlsPast) .If $$UNSLEEP(UserId,1,AlsPast) Set UserId(UserId)="" Set UserId="" For Set UserId=$O(UserId(UserId)) Quit:UserId="" Do .Set MailId="" .For Set MailId=$O(^vhMAIL("IN",UserId,MailId)) Quit:MailId="" Do Quit:UserId(UserId)["U" ..If $P(^vhMAIL("D",MailId,"N",UserId),D,4)="C" Quit:+$P(^vhMAIL("D",MailId),D,5)=+$H Quit:$$MSLEEP(MailId,UserId) ..Set UserId(UserId)=$TR($P(^vhMAIL("D",MailId),D,2),"ADP","") ..If $P(^vhMAIL("D",MailId,"N",UserId),D,4)="C" Set UserId(UserId)=$TR(UserId(UserId),"U","") For Set UserId=$O(UserId(UserId)) Quit:UserId="" Do .Set R=^vhUSER("D",UserId,"M"),AutoDisp=$P(R,D,7),$P(UserId(UserId),D,2)=AutoDisp Set Mail="" If $D(CUserId),$D(UserId(CUserId)),"#\#U\U#U\#"[("#"_UserId(CUserId)_"#") Set Mail="R" If $G(AutoDisp)="D" Set Mail="A" Else If '$L(Mail),$O(UserId(""))'="" Do .Write @F11,@F1 .Set Buttons="Buttons" .Set UserId=$O(UserId("")) Set:$O(UserId(UserId)) UserId="" .If 'MultUser Do ..Set UserId=$O(UserId("")),R=UserId(UserId) ..Set Mail(1)="Er is "_$S($P(R,D)["U":"dringende ",1:"")_"mail !" ..Set Buttons(1)="Lezen&R",Buttons(2)="Annuleer&A*",ButAli=2 .Else Do ..Set UserId="" ..Set Mail(1)="Er is mail voor :" ..For I=1:1 Set UserId=$O(UserId(UserId)) Quit:UserId="" Do ...Set R=UserId(UserId) ...Set Buttons(I)=$$TUSER^vhMAIL(UserId) ...Set:$P(R,D)["U" Buttons(I)=Buttons(I)_$J("",15-$L(Buttons(I)))_"(dringend)" ...Set Buttons(I)=Buttons(I)_"&"_UserId ..Set Buttons(I)="&S",Buttons(I+1)="Annuleer&A*",ButAli=1 .If 'MultUser Quit:'$$ULOCK^vhMAIL(CUserId,1) Do UULOCK^vhMAIL(CUserId) .Set Mail=$$WILD^vhTXTPOP("","","Mail",Buttons,ButAli) If Mail Set CUserId=Mail,Mail="R" If Mail="R",$$ULOCK^vhMAIL(CUserId,1) Do UULOCK^vhMAIL(CUserId) Goto ^vhMAIL Quit ; ; Nazicht van de wektijden van de mail van een gebruiker WAKEUSER(UserId,AlsPast) New MailId Set AlsPast=$G(AlsPast) Set MailId="" For Set MailId=$O(^vhMAIL("IN",UserId,MailId)) Quit:MailId="" Do WAKEMAIL(UserId,MailId,AlsPast) Quit ; ; Nazicht van de wektijd en eventueel wakker maken van een mail van een gebruiker WAKEMAIL(UserId,MailId,AlsPast) New R,TimeRead,CCUserId,CircMail Set AlsPast=$G(AlsPast),CCUserId="" If 'AlsPast Set R=^vhMAIL("D",MailId) If $P(R,D,2)="P",+$H'>+$P(R,D,5) Quit Set R=^vhMAIL("D",MailId,"N",UserId) Quit:"S"'[$P(R,D,3) Set:$P(R,D,4)="C" CCUserId=1 Set TimeRead=$P(R,D,5) If $$DIFFTIME^vhDTyp(TimeRead,$H)<0 Quit Set R=^vhMAIL("D",MailId),Urgentie=$P(R,D,2),CircMail=Urgentie["C" If CircMail Quit:'$$MLOCK^vhMAIL(MailId,,1) Do MUNLOCK^vhMAIL(MailId) Set ^vhMAIL("D",MailId,"N",UserId)=$S(CCUserId:"\\\C",1:"") Quit ; ; Aktief maken van een verborgen slapende mail AKTMAIL(MailId) New UserId Set UserId="" For Set UserId=$O(^vhMAIL("D",MailId,"N",UserId)) Quit:UserId="" Do WAKEMAIL(UserId,MailId) Quit ; ; Vergelijk van de wektijd van een mail met de ingstelde tijden van een gebruiker MAXDIFF(UserId,Urgentie) New R,TSleep,Type Set R=^vhUSER("D",UserId,"M"),TSleep=$P(R,D,$S(Urgentie["U":8,1:9)) Set:TSleep="" TSleep=$S(Urgentie["U":"15M",1:"30M") Set Time=+TSleep,Type=$P(TSleep,Time,2) Set:Type="" Type="S" Quit Time*$S(Type="S":1,Type="M":60,Type="U":3600,Type="D":86400,1:1) ; ; Nazicht of er mail van een gebruiker wakker is UNSLEEP(UserId,CcUser,AlsPast) New %TC,R,MailId,Quit,Date Set AlsPast=$G(AlsPast) Set MailId="",CcUser=$G(CcUser),Quit=0 For Do Quit:MailId="" Quit:Quit .Set MailId=$O(^vhMAIL("IN",UserId,MailId)) .Quit:MailId="" .Set %TC=$$MLOCK^vhMAIL(MailId,UserId,1) .Quit:'%TC .Do MUNLOCK^vhMAIL(MailId,UserId) .Set R=^vhMAIL("D",MailId),Date=$P(R,D,5) .If 'AlsPast,$P(R,D,2)="P",+$H'>+Date Quit .If ^vhMAIL("D",MailId,"N",UserId)="" Set Quit=1 Quit .If $P(^vhMAIL("D",MailId,"N",UserId),D,4)="C" Do ..Quit:$$MSLEEP(MailId,UserId) ..Set:'CcUser Quit=1 ..If CcUser,+$H>+Date Set Quit=1 Quit MailId ; ; Nazicht of alle mail van een gebruiker slaapt USLEEP(UserId,CcUser,AlsPast) Quit '$$UNSLEEP(UserId,$G(CcUser),$G(AlsPast)) ; ; Nazicht of een mail van een gebruiker wakker is MNSLEEP(MailId,UserId) Quit '$$MSLEEP(MailId,UserId) ; ; Nazicht of een mail van een gebruiker slaapt MSLEEP(MailId,UserId) Quit $$TSLEEP(MailId,UserId)>0 ; ; Geeft de nog te slapen tijd van een mail van een gebruiker TSLEEP(MailId,UserId) New R,Later,MaxDiff Set R=$G(^vhMAIL("D",MailId,"N",UserId)),Later=$P(R,D,5) Quit $$DIFFTIME^vhDTyp($H,Later) ; ; Nazicht of een mail van een gebruiker geanuleerd is MANUL(MailId,UserId) New R,Urgentie Set R=^vhMAIL("D",MailId),Urgentie=$P(R,D,2) Quit $$TSLEEP(MailId,UserId)'>$$MAXDIFF(UserId,Urgentie) ; ; Nazicht of er berichten zijn voor mail CHKMESS(System) New I,MailId,TUserId,UserId,Urgentie Set (MailId,UserId)="" For Set MailId=$O(^vhMESSAGE(System,"MAIL",MailId)) Quit:MailId="" Do .Do AKTMAIL(MailId) .Set Urgentie=$P(^vhMAIL("D",MailId),D,2) Quit:Urgentie'["U" .Set TUserId=$$TUSERID^vhMAIL(MailId,1,1) .For I=1:1:$L(TUserId,";") Do ..Quit:$P(TUserId,";",I)["*" Quit:(";"_UserId_";")[(";"_$P(TUserId,";",I)_";") ..Set UserId=UserId_";"_$P(TUserId,";",I) Set $E(UserId)="" Do MESSAGE("",UserId,"Mail (r)") Quit ; ; Opkuisen van het mailbestand CLEANUP If '$D(Q) Set Q="SYS" Do ^cA604 New R,UserId,MailId,LinkSend,EffSend,Read,NotRead,Filed,Delete,Urgentie,Kreatie,Quit,ArchTyp,Type Set UserId="" For Set UserId=$O(^vhUSER("D",UserId)) Quit:UserId="" Do .Set R=$G(^vhUSER("D",UserId,"M")),LinkSend=$P(R,D,2),EffSend=$P(R,D,3),Read=$P(R,D,4),NotRead=$P(R,D,5),Filed=$P(R,D,6) .If $L(LinkSend)!$L(EffSend) Do ; Verwijder link met- en effectief verzonden mail ..Set MailId="" ..For Set MailId=$O(^vhMAIL("IZ",UserId,MailId)) Quit:MailId="" Do ...If $L(EffSend),$$CHKDEL(MailId,EffSend) Do DELOBJ^vhMAIL5(MailId) Quit ...Quit:'$$CHKDEL(MailId,LinkSend) ...Kill ^vhMAIL("IZ",UserId,MailId) .If $L(Read) Do ; Verwijder gelezen mail ..Set MailId="" ..For Set MailId=$O(^vhMAIL("IR",UserId,MailId)) Quit:MailId="" Do ...Quit:'$$CHKDEL(MailId,Read) ...Kill ^vhMAIL("IR",UserId,MailId) .If $L(NotRead) Do ; Verwijder niet gelezen mail ..Set MailId="" ..For Set MailId=$O(^vhMAIL("IN",UserId,MailId)) Quit:MailId="" Do ...Quit:'$$CHKDEL(MailId,NotRead) ...Kill ^vhMAIL("IN",UserId,MailId) .If $L(Filed) Do ; Verwijder filed mail ..Set ArchTyp="" ..For Set ArchTyp=$O(^vhMAIL("IF",UserId,ArchTyp)) Quit:ArchTyp="" Do ...Set MailId="" ...For Set MailId=$O(^vhMAIL("IF",UserId,ArchTyp,MailId)) Quit:MailId="" Do ....Quit:'$$CHKDEL(MailId,Filed) ....Kill ^vhMAIL("IF",UserId,ArchTyp,MailId) Set MailId="" ; Dead mail For Set MailId=$O(^vhMAIL("D",MailId)) Quit:MailId="" Do .Set R=^vhMAIL("D",MailId),Type=$P(R,D) .Quit:Type="S" ; Geen SMS-mail verwijderen .Set Urgentie=$P(R,D,2),Kreatie=$P(R,D,5),UserId=$P(R,D,6),BetrTyp=$P(R,D,7),Betreft=$P(R,D,8) .If UserId'=0,"\KL\LE\"[(D_BetrTyp_D),Betreft,Urgentie'["D",Urgentie'["F" Quit .Set Delete=0 .If Urgentie'["A",Urgentie'["D" Do ..If UserId Do Quit:Quit ...Set Quit=1 ...Quit:$D(^vhMAIL("IZ",UserId,MailId)) ...Quit:$D(^vhMAIL("IN",UserId,MailId)) ...Quit:$D(^vhMAIL("IR",UserId,MailId)) ...Quit:$$DATA(UserId,MailId) ...Set Quit=0 ..Set UserId="",Quit=0 ..For Set UserId=$O(^vhMAIL("D",MailId,"N",UserId)) Quit:UserId="" Do Quit:Quit ...Set:$D(^vhMAIL("IN",UserId,MailId))!$D(^vhMAIL("IR",UserId,MailId))!$$DATA(UserId,MailId) Quit=1 ..Set:'UserId Delete=1 .If Urgentie["A",Urgentie'["C" Do ..Set UserId="" ..For Set UserId=$O(^vhMAIL("D",MailId,"N",UserId)) Quit:UserId="" Quit:$D(^vhMAIL("IN",UserId,MailId)) ..Set:'UserId Delete=1 .If Urgentie["D",$$DIFFTIME^vhDTyp(Kreatie,$H)>86400 Set Delete=1 .If Delete Do DELOBJ^vhMAIL5(MailId) Quit ; ; Nazicht voor delete CHKDEL(MailId,Termijn) New Kreatie,Type Set R=^vhMAIL("D",MailId),Type=$P(R,D),Kreatie=$P(R,D,5) Quit $S(Type="S":0,1:($H>$$CALCDATE^vhDTyp(Kreatie,"M",Termijn))) ; ; Nazicht $D index IF voor een mail DATA(UserId,MailId) New ArchTyp,Data Set ArchTyp="",Data=0 For Set ArchTyp=$O(^vhMAIL("IF",UserId,ArchTyp)) Quit:ArchTyp="" Set Data=$D(^vhMAIL("IF",UserId,ArchTyp,MailId)) Quit:Data Quit Data ; CHKTODO If '$D(Q) Set Q="SYS" Do ^cA604 New %J,UserId,ArchTyp,MailId,Respons,Kreatie,FUserId,Param,DeadLine,Dagen,VanAf,Done New TUserId,Tekst,Refer,UserName,Count,Betreft,Onderw Set %J=$$%J^vhRtn1(),UserId=0,ArchTyp="Te doen" Kill ^HULP(%J) For Set UserId=$O(^vhMAIL("IF",UserId)) Quit:'UserId Do .Set MailId=0 .For Set MailId=$O(^vhMAIL("IF",UserId,ArchTyp,MailId)) Quit:'MailId Do ..Set R=^vhMAIL("D",MailId),Respons=$P(R,D,3),Kreatie=$P(R,D,5),FUserId=$P(R,D,6) ..Set Param=$G(^vhMAIL("D",MailId,"P")),DeadLine=$P(Param,D),Dagen=$P(Param,D,3),VanAf=$P(Param,D,4),Done=$P(Param,D,5) ..Quit:Done ..If DeadLine,DeadLine<$H,Respons["E" Set ^HULP(%J,"D",FUserId,UserId,MailId)="" ..If Dagen Do ...Set:'VanAf VanAf=+Kreatie Set:'VanAf VanAf=+$H ...Quit:VanAf>$H Quit:$H-VanAf#Dagen ...Set ^HULP(%J,"R",UserId,MailId)="" Set TUserId=0 For Set TUserId=$O(^HULP(%J,"D",TUserId)) Quit:'TUserId Do .Kill Tekst .Set Count=1,Tekst(Count)="ªU Aan | Betreft | Onderwerp ªu~" .Set UserId=0 .For Set UserId=$O(^HULP(%J,"D",TUserId,UserId)) Quit:'UserId Do ..Set UserName=$$USERNAME^vhUSER(UserId),MailId=0 ..For Set MailId=$O(^HULP(%J,"D",TUserId,UserId,MailId)) Quit:'MailId Do ...Set Betreft=$$FBETREFT^vhMAIL4(,,MailId),Onderw=$$ONDERW^vhMAIL4(MailId) ...Set R=$E(UserName,1,12),$E(R,13)="|",R=R_$E(Betreft,1,18),$E(R,32)="|",R=R_$E(Onderw,1,30) ...Set Count=Count+1,Tekst(Count)=R_"~" .Set Betreft="Mail ""Te doen""",Onderw="Einddatum verstreken" .Set MailId=$$SYSTEM("",Betreft,Onderw,TUserId,.Tekst,.Refer,"U","A") Set TUserId=0 For Set TUserId=$O(^HULP(%J,"R",TUserId)) Quit:'TUserId Do .Kill Tekst .Set Count=1,Tekst(Count)="ªU Van | Betreft | Onderwerp ªu~" .Set MailId=0 .For Set MailId=$O(^HULP(%J,"R",TUserId,MailId)) Quit:'MailId Do ..Set R=^vhMAIL("D",MailId),UserId=$P(R,D,6),UserName=$$USERNAME^vhUSER(UserId) ..Set Betreft=$$FBETREFT^vhMAIL4(,,MailId),Onderw=$$ONDERW^vhMAIL4(MailId) ..Set R=$E(UserName,1,12),$E(R,13)="|",R=R_$E(Betreft,1,18),$E(R,32)="|",R=R_$E(Onderw,1,30) ..Set Count=Count+1,Tekst(Count)=R_"~" .Set Betreft="Mail ""Te doen""",Onderw="Herinnering" .Set MailId=$$SYSTEM("",Betreft,Onderw,TUserId,.Tekst,.Refer,"U","A") Kill ^HULP(%J) Quit ;