| 1 | XMXADDR1 ;ISC-SF/GMB-XMXADDR (cont.) ;05/21/2002  07:00 | 
|---|
| 2 | ;;8.0;MailMan;;Jun 28, 2002 | 
|---|
| 3 | PERSON(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,XMLATER,XMG,XMFULL) ; | 
|---|
| 4 | N XMSCREEN,XMNOTFND | 
|---|
| 5 | S XMADDR=$$UP^XLFSTR(XMADDR) | 
|---|
| 6 | S XMSCREEN="I $L($P(^(0),U,3)),$D(^XMB(3.7,+Y,2))"  ; User must have an access code & mailbox | 
|---|
| 7 | ; "B^BB^C^D" = name^alias^initial^nickname | 
|---|
| 8 | S XMG=$$FIND1^DIC(200,"","O",$S(+XMADDR=XMADDR:"`"_XMADDR,1:XMADDR),"B^BB^C^D",XMSCREEN) | 
|---|
| 9 | I XMG D  Q | 
|---|
| 10 | . S XMFULL=$$NAME^XMXUTIL(XMG) | 
|---|
| 11 | . Q:XMG'=.6 | 
|---|
| 12 | . D CHKSHARE | 
|---|
| 13 | . S:XMLATER XMLATER="?"  ; Can't 'later' to SHARED,MAIL | 
|---|
| 14 | S XMNOTFND=$S($D(DIERR):39018,1:39019) ;Addressee ambiguous. / Addressee not found. | 
|---|
| 15 | I +XMADDR=XMADDR D  Q | 
|---|
| 16 | . D SETERR^XMXADDR4(0,"",XMNOTFND) | 
|---|
| 17 | ; Not found in NEW PERSON file, see if there's a MAIL NAME | 
|---|
| 18 | I $D(^XMB(3.7,"C")) D  Q:XMG | 
|---|
| 19 | . S XMSCREEN="I $L($P(^VA(200,+Y,0),U,3))"  ; User must have an access code | 
|---|
| 20 | . S XMG=$$FIND1^DIC(3.7,"","OQ",XMADDR,"C",XMSCREEN) Q:'XMG | 
|---|
| 21 | . S XMFULL=$$NAME^XMXUTIL(XMG) | 
|---|
| 22 | ; Not a Mail Name, see if it's in the Remote User Directory. | 
|---|
| 23 | N XMINDEX,I,XMG | 
|---|
| 24 | S XMINDEX="" F I="B","F" S:$D(^DIC(4.2997,I)) XMINDEX=XMINDEX_U_I | 
|---|
| 25 | I XMINDEX'="" D  Q:XMG | 
|---|
| 26 | . S XMINDEX=$E(XMINDEX,2,99) | 
|---|
| 27 | . S XMG=$$FIND1^DIC(4.2997,"","OQ",XMADDR,XMINDEX) Q:'XMG | 
|---|
| 28 | . S XMADDR=$P(^XMD(4.2997,XMG,0),U,7) | 
|---|
| 29 | . D CHKREM(XMG,XMADDR) Q:$D(XMERROR) | 
|---|
| 30 | . D REMDT(XMG) | 
|---|
| 31 | . D REMOTE^XMXADDR3(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,XMLATER,.XMFULL) | 
|---|
| 32 | D SETERR^XMXADDR4(0,"",XMNOTFND) | 
|---|
| 33 | Q | 
|---|
| 34 | CHKSHARE ; | 
|---|
| 35 | I $G(XMINSTR("FLAGS"))["X"!($G(XMRESTR("FLAGS"))["X") D  Q | 
|---|
| 36 | . ;Closed messages may not be sent to SHARED,MAIL. | 
|---|
| 37 | . D SETERR^XMXADDR4(0,"",39020) | 
|---|
| 38 | I $G(XMINSTR("FLAGS"))["C"!($G(XMRESTR("FLAGS"))["C") D  Q | 
|---|
| 39 | . ;Confidential messages may not be sent to SHARED,MAIL. | 
|---|
| 40 | . D SETERR^XMXADDR4(0,"",39021) | 
|---|
| 41 | Q | 
|---|
| 42 | REMDT(XMG) ; | 
|---|
| 43 | N XMFDA | 
|---|
| 44 | S XMFDA(4.2997,XMG_",",6)=$E(DT,1,5)  ; Date (YYYMM) remote address last used | 
|---|
| 45 | D FILE^DIE("","XMFDA") | 
|---|
| 46 | Q | 
|---|
| 47 | IPERSON(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,XMLATER,XMG,XMFULL) ; | 
|---|
| 48 | N DIC,D,X,Y,XMINDEX | 
|---|
| 49 | S XMADDR=$$UP^XLFSTR(XMADDR) | 
|---|
| 50 | S DIC("S")="I $L($P(^(0),U,3)),$D(^XMB(3.7,+Y,2))"  ; User must have an access code & mailbox | 
|---|
| 51 | I XMSTRIKE S DIC("S")=DIC("S")_",$D(^TMP(""XMY"",$J,+Y))" ; If '-', must already have been chosen | 
|---|
| 52 | S DIC("W")="I Y'=DUZ D USERINFO^XMXADDR1(Y)" | 
|---|
| 53 | S DIC="^VA(200," | 
|---|
| 54 | S DIC(0)="FEZMN"  ; If user enters a DUZ, ask "OK?" | 
|---|
| 55 | S X=XMADDR | 
|---|
| 56 | ;S DIC(0)="FEZM"  ; If user enters a DUZ, do NOT ask "OK?" | 
|---|
| 57 | ;S X=$S(XMADDR=+XMADDR:"`"_XMADDR,1:XMADDR) | 
|---|
| 58 | S (XMINDEX,D)="B^BB^C^D" ; name^alias^initial^nickname | 
|---|
| 59 | D MIX^DIC1 | 
|---|
| 60 | I Y>0 D  Q | 
|---|
| 61 | . S XMG=+Y | 
|---|
| 62 | . S XMFULL=$$NAME^XMXUTIL(XMG) ; $P(Y,U,2) | 
|---|
| 63 | . Q:XMSTRIKE | 
|---|
| 64 | . ; Sending to yourself, and ask bskt, and not creating a forwarding address | 
|---|
| 65 | . I XMG=XMDUZ,$G(XMINSTR("ADDR FLAGS"))'["X",XMV("ASK BSKT") D | 
|---|
| 66 | . . N XMK,XMDIC | 
|---|
| 67 | . . S XMDIC("B")=$$EZBLD^DIALOG(37005) ;IN | 
|---|
| 68 | . . D SELBSKT^XMJBU(XMDUZ,$$EZBLD^DIALOG(39022),"L",.XMDIC,.XMK) ;Select basket to send to: | 
|---|
| 69 | . . I XMK=U D SETERR^XMXADDR4(0,"",39014) Q  ;No basket selected. | 
|---|
| 70 | . . S XMINSTR("SELF BSKT")=XMK | 
|---|
| 71 | . E  I XMG=.6 D | 
|---|
| 72 | . . D CHKSHARE | 
|---|
| 73 | . . I $D(XMERROR) D WRIERR^XMXADDR4("!") Q | 
|---|
| 74 | . . D ASKSHARE(.XMINSTR) | 
|---|
| 75 | . I $D(XMERROR) W !,XMFULL,$$EZBLD^DIALOG(39015) ;removed from recipient list. | 
|---|
| 76 | I $D(DUOUT)!$D(DTOUT) D  Q  ;up-arrow out. / time out. | 
|---|
| 77 | . D SETERR^XMXADDR4(0,"",$S($D(DUOUT):37000,1:37001)) | 
|---|
| 78 | D NOTFOUND(XMADDR,XMINDEX) | 
|---|
| 79 | I XMADDR=+XMADDR D SETERR^XMXADDR4(0,"",39002) Q  ;Not found. | 
|---|
| 80 | W !,$C(7),$$EZBLD^DIALOG(39026),XMADDR ;Checking for MAIL NAME: | 
|---|
| 81 | S X=XMADDR | 
|---|
| 82 | K DIC("S"),DIC("W") | 
|---|
| 83 | S DIC(0)="FEZ" | 
|---|
| 84 | S D="C" | 
|---|
| 85 | S DIC="^XMB(3.7," | 
|---|
| 86 | D IX^DIC | 
|---|
| 87 | I Y>0 D  Q | 
|---|
| 88 | . S XMG=+Y | 
|---|
| 89 | . S XMFULL=Y(0,0) | 
|---|
| 90 | I $D(DUOUT)!$D(DTOUT) D  Q  ;up-arrow out. / time out. | 
|---|
| 91 | . D SETERR^XMXADDR4(0,"",$S($D(DUOUT):37000,1:37001)) | 
|---|
| 92 | ; Not a Mail Name, see if it's in the Remote User Directory. | 
|---|
| 93 | N XMFIND,DIR,XMG | 
|---|
| 94 | S XMFIND=X | 
|---|
| 95 | W ! | 
|---|
| 96 | D BLD^DIALOG(39025,"","","DIR(""A"")") ; Not a local user; want to check the Remote User Directory? | 
|---|
| 97 | S DIR(0)="Y",DIR("B")=$$EZBLD^DIALOG(39053) ; No | 
|---|
| 98 | D BLD^DIALOG(39025.1,"","","DIR(""?"")") | 
|---|
| 99 | D ^DIR | 
|---|
| 100 | I 'Y W ! | 
|---|
| 101 | E  D  Q:$D(XMG) | 
|---|
| 102 | . S X=XMFIND  ;Not a local user; checking Remote User Directory | 
|---|
| 103 | . W !,$C(7),$$EZBLD^DIALOG(39027),X | 
|---|
| 104 | . S DIC(0)="MFEVZ" | 
|---|
| 105 | . S D="B^F" | 
|---|
| 106 | . S DIC="^XMD(4.2997," | 
|---|
| 107 | . D MIX^DIC1 Q:Y<0 | 
|---|
| 108 | . S XMG=+Y | 
|---|
| 109 | . S XMADDR=$P(Y(0),U,7) | 
|---|
| 110 | . D CHKREM(XMG,XMADDR) Q:$D(XMERROR) | 
|---|
| 111 | . D REMDT(XMG) | 
|---|
| 112 | . W !,$$EZBLD^DIALOG(39028),XMADDR ;Routing to Remote Address: | 
|---|
| 113 | . D REMOTE^XMXADDR3(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,.XMLATER,.XMFULL) ;Q:$D(XMERROR) | 
|---|
| 114 | I $D(DUOUT)!$D(DTOUT) D  Q  ;up-arrow out. / time out. | 
|---|
| 115 | . D SETERR^XMXADDR4(0,"",$S($D(DUOUT):37000,1:37001)) | 
|---|
| 116 | ; Not in Remote User Directory, see if it's a Mail Group | 
|---|
| 117 | S DIC="^XMB(3.8," | 
|---|
| 118 | S D="B" | 
|---|
| 119 | S DIC(0)="O" | 
|---|
| 120 | D IX^DIC | 
|---|
| 121 | I Y>0 D  Q  ;Enter 'G.groupname' to identify a mail group | 
|---|
| 122 | . D SETERR^XMXADDR4(1,"!",39029) | 
|---|
| 123 | D SETERR^XMXADDR4(1,"",39002) ;Not found. | 
|---|
| 124 | Q | 
|---|
| 125 | ASKSHARE(XMINSTR) ; | 
|---|
| 126 | N XMK,XMDIC | 
|---|
| 127 | S XMDIC("B")=$$EZBLD^DIALOG(37005) ;IN | 
|---|
| 128 | D SELBSKT^XMJBU(.6,$$EZBLD^DIALOG(39022),"L",.XMDIC,.XMK) ;Select basket to send to: | 
|---|
| 129 | I XMK=U D SETERR^XMXADDR4(0,"",39014) Q  ;No basket selected. | 
|---|
| 130 | N DIR,X,Y | 
|---|
| 131 | S DIR("A")=$$EZBLD^DIALOG(39023) ;Enter Termination Date | 
|---|
| 132 | S DIR("B")="T+30" | 
|---|
| 133 | S DIR(0)="D^"_DT_"::ENX" | 
|---|
| 134 | ;Messages sent to SHARED,MAIL must have a delete date, so | 
|---|
| 135 | ;they may be automatically removed from SHARED,MAIL's mailbox. | 
|---|
| 136 | D BLD^DIALOG(39024,"","","DIR(""?"")") | 
|---|
| 137 | S DIR("??")="^D HELP^%DTC" | 
|---|
| 138 | D ^DIR | 
|---|
| 139 | I $D(DIRUT) D SETERR^XMXADDR4(0,"",37002) Q  ;up-arrow or time out. | 
|---|
| 140 | S XMINSTR("SHARE BSKT")=XMK | 
|---|
| 141 | S XMINSTR("SHARE DATE")=Y | 
|---|
| 142 | Q | 
|---|
| 143 | CHKREM(DA,XMADDR) ; Is the remote address really local? | 
|---|
| 144 | S XMADDR=$$UP^XLFSTR($P(XMADDR,"@",2)) | 
|---|
| 145 | I $$FIND1^DIC(4.2,"","QO",XMADDR,"B^C")'=^XMB("NUM") Q | 
|---|
| 146 | N DIK | 
|---|
| 147 | S DIK="^XMD(4.2997," | 
|---|
| 148 | D ^DIK | 
|---|
| 149 | I '$G(XMIA) D SETERR^XMXADDR4(0,"",39002) Q  ;Not found. | 
|---|
| 150 | D SETERR^XMXADDR4(1,"!",39028.1) ; Remote address is really local.  Deleting it. | 
|---|
| 151 | Q | 
|---|
| 152 | USERINFO(XMDUZ) ; | 
|---|
| 153 | N % | 
|---|
| 154 | W:XMV("SHOW DUZ") " (DUZ ",XMDUZ,")" | 
|---|
| 155 | S %=$P($G(^VA(200,XMDUZ,5)),U,1)  ; Service/Section | 
|---|
| 156 | I % S %=$P($G(^DIC(49,%,0)),U,1) W:$L(%)+$X+1>79 !,?4 W " ",%," " | 
|---|
| 157 | S %=$P($G(^XMB(3.7,XMDUZ,"L"),$$EZBLD^DIALOG(38002)),U,1) ;Never | 
|---|
| 158 | W:$L(%)+$X+20>79 !,?4 W $$EZBLD^DIALOG(38003),% ;Last used MailMan: | 
|---|
| 159 | S %=$G(^XMB(3.7,XMDUZ,0)) | 
|---|
| 160 | I $L($P(%,U,2)) W !,?5,$$EZBLD^DIALOG(38004),$P(%,U,2),$S($P(%,U,8):$$EZBLD^DIALOG(38005),1:$$EZBLD^DIALOG(38006)) ;Forwarding Address: / Local Delivery is ON / Local Delivery is OFF | 
|---|
| 161 | S %=$G(^XMB(3.7,XMDUZ,"B")) W:%'="" !,?10,% | 
|---|
| 162 | Q | 
|---|
| 163 | NOTFOUND(XMADDR,XMINDEX) ; | 
|---|
| 164 | N XMI,XMREC | 
|---|
| 165 | S XMI=$$FIND1^DIC(200,"","O",$S(+XMADDR=XMADDR:"`"_XMADDR,1:XMADDR),XMINDEX) | 
|---|
| 166 | I 'XMI W $C(7),$$EZBLD^DIALOG(39030) Q  ;Not found in NEW PERSON file. | 
|---|
| 167 | ; found user, but missing access/verify/mailbox | 
|---|
| 168 | S XMREC=^VA(200,XMI,0) | 
|---|
| 169 | I $D(^XMB(3.7,XMI,2)),$P(XMREC,U,3)'="" Q | 
|---|
| 170 | N XMPARM,XMTEXT | 
|---|
| 171 | S XMPARM(1)=$$NAME^XMXUTIL(XMI) | 
|---|
| 172 | S XMPARM(2)=$S($P(XMREC,U,3)'="":$$EZBLD^DIALOG(39034),$D(^XMB(3.7,XMI,2)):$$EZBLD^DIALOG(39032),1:$$EZBLD^DIALOG(39033)) ;a mailbox / an access code or a mailbox / an access code | 
|---|
| 173 | ;If |1| is the person you're trying to address, you can't, | 
|---|
| 174 | ;because |1| doesn't have |2|. | 
|---|
| 175 | D BLD^DIALOG(39031,.XMPARM,"","XMTEXT","F") | 
|---|
| 176 | D MSG^DIALOG("WH","","","","XMTEXT") | 
|---|
| 177 | Q | 
|---|