| 1 | XMJMD ;ISC-SF/GMB-Later Messages ;12/04/2002  13:46
 | 
|---|
| 2 |  ;;8.0;MailMan;**10**;Jun 28, 2002
 | 
|---|
| 3 |  ; Replaces ^XMB1 (ISC-WASH/THM/CAP)
 | 
|---|
| 4 |  ; Entry points are:
 | 
|---|
| 5 |  ; EDIT     Change/Delete Later'd messages for a particular user
 | 
|---|
| 6 |  ; REPORT   Report on Later'd messages for a particular user
 | 
|---|
| 7 |  ; LATER    Add/Edit Later'd Dates for a particular user/message
 | 
|---|
| 8 |  ; LTRADD   Add Later'd delivery date for a particular user/message
 | 
|---|
| 9 |  ; DELUSER  Delete all Later'd messages for a particular user
 | 
|---|
| 10 |  ; DELMSG   Delete all Later'd dates for a particular message
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ; Entry points used by MailMan options (not covered by DBIA):
 | 
|---|
| 13 |  ; EDIT     XMLATER-EDIT
 | 
|---|
| 14 |  ; REPORT   XMLATER-REPORT
 | 
|---|
| 15 | REPORT ; Report on later'd messages
 | 
|---|
| 16 |  N ZTSAVE,ZTDESC,ZTRTN,I
 | 
|---|
| 17 |  D CHECK^XMVVITAE
 | 
|---|
| 18 |  S ZTDESC=$$EZBLD^DIALOG(34639) ; MailMan: Report on Later'd Messages
 | 
|---|
| 19 |  S ZTRTN="RPTLATER^XMJMD"
 | 
|---|
| 20 |  F I="XMDUZ","XMV(""NAME"")" S ZTSAVE(I)=""
 | 
|---|
| 21 |  D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE)
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 | RPTLATER ;
 | 
|---|
| 24 |  ; XMDUZ,XMV("NAME") are provided
 | 
|---|
| 25 |  N XMZ,XMABORT,XMWHEN,XMIEN,XMREC,XMZREC,XMPAGE,XMLEN,XMK,XMKN
 | 
|---|
| 26 |  S XMLEN("DATE")=$L($$FMTE^XLFDT($E($$NOW^XLFDT,1,12),"5Z"))
 | 
|---|
| 27 |  S XMLEN("XMZ")=$L($O(^XMB(3.9,":"),-1))
 | 
|---|
| 28 |  S:XMLEN("XMZ")<7 XMLEN("XMZ")=7
 | 
|---|
| 29 |  S XMLEN("BSKT")=10
 | 
|---|
| 30 |  S XMLEN("SUBJ")=79-XMLEN("DATE")-XMLEN("XMZ")-XMLEN("BSKT")-6
 | 
|---|
| 31 |  S (XMPAGE,XMABORT)=0
 | 
|---|
| 32 |  W:$E(IOST,1,2)="C-" @IOF
 | 
|---|
| 33 |  D RPTHDR(.XMLEN,.XMPAGE)
 | 
|---|
| 34 |  S XMIEN=""
 | 
|---|
| 35 |  F  S XMIEN=$O(^XMB(3.73,"C",XMDUZ,XMIEN)) Q:XMIEN=""  D  Q:XMABORT
 | 
|---|
| 36 |  . S XMREC=$G(^XMB(3.73,XMIEN,0)) I XMREC="" K ^XMB(3.73,"C",XMDUZ,XMIEN) Q
 | 
|---|
| 37 |  . S XMZ=+$P(XMREC,U,3)
 | 
|---|
| 38 |  . S XMZREC=$G(^XMB(3.9,XMZ,0)) I XMZREC="" D DELDATE(XMIEN) Q
 | 
|---|
| 39 |  . S XMWHEN=$P(XMREC,U,1)
 | 
|---|
| 40 |  . S XMK=$O(^XMB(3.7,"M",XMZ,XMDUZ,""))
 | 
|---|
| 41 |  . S XMKN=$S('XMK:$$EZBLD^DIALOG(34014),1:$P($G(^XMB(3.7,XMDUZ,2,XMK,0)),U)) ; * N/A *
 | 
|---|
| 42 |  . I $Y+3>IOSL D  Q:XMABORT
 | 
|---|
| 43 |  . . I $E(IOST,1,2)="C-" D PAGE^XMXUTIL(.XMABORT) Q:XMABORT
 | 
|---|
| 44 |  . . W @IOF D RPTHDR(.XMLEN,.XMPAGE)
 | 
|---|
| 45 |  . W !,$$LJ^XLFSTR($$FMTE^XLFDT($E(XMWHEN,1,12),"5Z"),XMLEN("DATE")),"  ",$$LJ^XLFSTR($E(XMKN,1,XMLEN("BSKT")),XMLEN("BSKT")),"  ",$J(XMZ,XMLEN("XMZ")),"  ",$E($$SUBJ^XMXUTIL2(XMZREC),1,XMLEN("SUBJ"))
 | 
|---|
| 46 |  W:$O(^XMB(3.73,"C",XMDUZ,""))="" !,$$EZBLD^DIALOG(34630) ; No Later'd Messages
 | 
|---|
| 47 |  I $E(IOST,1,2)="C-",'XMABORT D WAIT^XMXUTIL
 | 
|---|
| 48 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 | RPTHDR(XMLEN,XMPAGE) ;
 | 
|---|
| 51 |  S XMPAGE=XMPAGE+1
 | 
|---|
| 52 |  W $$EZBLD^DIALOG(34631,XMV("NAME")),?70,$$EZBLD^DIALOG(34542,XMPAGE) ; Later'd Messages Report for: / Page
 | 
|---|
| 53 |  W !,$$LJ^XLFSTR($$EZBLD^DIALOG(34632),XMLEN("DATE")),"  ",$$LJ^XLFSTR($$EZBLD^DIALOG(34011),XMLEN("BSKT")),"  ",$$RJ^XLFSTR($$EZBLD^DIALOG(34633),XMLEN("XMZ")),"  ",$$EZBLD^DIALOG(34002) ; Date / Basket / Msg ID / Subject
 | 
|---|
| 54 |  W !,$$REPEAT^XLFSTR("-",79)
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | DELUSER(XMDUZ) ; Delete all Later'd messages for a particular user
 | 
|---|
| 57 |  N XMIEN
 | 
|---|
| 58 |  S XMIEN=""
 | 
|---|
| 59 |  F  S XMIEN=$O(^XMB(3.73,"C",XMDUZ,XMIEN)) Q:XMIEN=""  D DELDATE(XMIEN)
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 | DELDATE(XMIEN) ; Delete a particular Later'd message date
 | 
|---|
| 62 |  N DIK
 | 
|---|
| 63 |  S DIK="^XMB(3.73,",DA=XMIEN
 | 
|---|
| 64 |  D ^DIK
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 | DELMSG(XMZ) ; Delete all Later'd dates for a particular message
 | 
|---|
| 67 |  N XMDUZ,XMIEN
 | 
|---|
| 68 |  S (XMDUZ,XMIEN)=""
 | 
|---|
| 69 |  F  S XMDUZ=$O(^XMB(3.73,"AC",XMZ,XMDUZ)) Q:XMDUZ=""  D
 | 
|---|
| 70 |  . F  S XMIEN=$O(^XMB(3.73,"AC",XMZ,XMDUZ,XMIEN)) Q:XMIEN=""  D DELDATE(XMIEN)
 | 
|---|
| 71 |  Q
 | 
|---|
| 72 | LATER(XMDUZ,XMZ) ; For a particular message,
 | 
|---|
| 73 |  ; let user edit any existing latered times or add a new one.
 | 
|---|
| 74 |  N XMABORT,XMWHEN
 | 
|---|
| 75 |  S XMABORT=0
 | 
|---|
| 76 |  I $D(^XMB(3.73,"AC",XMZ,XMDUZ)) D
 | 
|---|
| 77 |  . W @IOF
 | 
|---|
| 78 |  . D LATER^XMJMQ1(XMDUZ,XMZ,"","","","",.XMABORT)
 | 
|---|
| 79 |  . S XMABORT=0
 | 
|---|
| 80 |  . N DIR,XMIEN,XMADD,XMCHG,XMDEL
 | 
|---|
| 81 |  . S XMIEN=$O(^XMB(3.73,"AC",XMZ,XMDUZ,0))
 | 
|---|
| 82 |  . I $O(^XMB(3.73,"AC",XMZ,XMDUZ,XMIEN)) S XMIEN=0
 | 
|---|
| 83 |  . S XMADD=$$EZBLD^DIALOG(34634) ; A:Add another date on which this message should appear new
 | 
|---|
| 84 |  . S XMCHG=$$EZBLD^DIALOG($S(XMIEN:34635,1:34635.1)) ; C:Change this / a date
 | 
|---|
| 85 |  . S XMDEL=$$EZBLD^DIALOG($S(XMIEN:34636,1:34636.1)) ; D:Delete this / a date
 | 
|---|
| 86 |  . S DIR(0)="SO^"_XMADD_";"_XMCHG_";"_XMDEL
 | 
|---|
| 87 |  . D ^DIR I $D(DIRUT) S XMABORT=1 Q
 | 
|---|
| 88 |  . I Y=$P(XMADD,":",1) D  Q
 | 
|---|
| 89 |  . . D LTRDATE(.XMWHEN,.XMABORT) Q:XMABORT
 | 
|---|
| 90 |  . . D LTRADD(XMDUZ,XMZ,XMWHEN)
 | 
|---|
| 91 |  . I 'XMIEN D WHICH(XMDUZ,XMZ,.XMIEN,.XMABORT) Q:XMABORT
 | 
|---|
| 92 |  . I Y=$P(XMCHG,":",1) D CHGDATE(XMIEN) Q
 | 
|---|
| 93 |  . D DELDATE(XMIEN) ; Delete this date
 | 
|---|
| 94 |  . W $$EZBLD^DIALOG(34637) ; " ... deleted."
 | 
|---|
| 95 |  E  D
 | 
|---|
| 96 |  . D LTRDATE(.XMWHEN,.XMABORT) Q:XMABORT
 | 
|---|
| 97 |  . D LTRADD(XMDUZ,XMZ,XMWHEN)
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 | EDIT ; Change/delete later'd messages
 | 
|---|
| 100 |  I '$D(^XMB(3.73,"C",XMDUZ)) W !!,$C(7),$$EZBLD^DIALOG(34638) Q  ; You have no Later'd messages.
 | 
|---|
| 101 |  D LTREDIT($G(XMDUZ,DUZ))
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 | LTREDIT(XMDUZ,XMZ) ;
 | 
|---|
| 104 |  N X,Y,XMIEN,XMDEL,DIR,DIE,DR,DA,DIRUT,XMABORT
 | 
|---|
| 105 |  S XMABORT=0
 | 
|---|
| 106 |  D WHICH(XMDUZ,.XMZ,.XMIEN,.XMABORT) Q:XMABORT
 | 
|---|
| 107 |  ; The user has chosen a record to edit (and change the later'd date)
 | 
|---|
| 108 |  S XMDEL=$$EZBLD^DIALOG(34636) ; D:Delete this date
 | 
|---|
| 109 |  S DIR(0)="S^"_$$EZBLD^DIALOG(34635)_";"_XMDEL ; C:Change this date
 | 
|---|
| 110 |  D ^DIR Q:$D(DIRUT)
 | 
|---|
| 111 |  I Y=$P(XMDEL,":",1) D  Q
 | 
|---|
| 112 |  . D DELDATE(XMIEN) ; Delete this date
 | 
|---|
| 113 |  . W $$EZBLD^DIALOG(34637) ; " ... deleted."
 | 
|---|
| 114 |  K DIR,X,Y,DIRUT
 | 
|---|
| 115 |  D CHGDATE(XMIEN) ; Change this date
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 | WHICH(XMDUZ,XMZ,XMIEN,XMABORT) ;
 | 
|---|
| 118 |  N DIC,D,X,Y
 | 
|---|
| 119 |  W !
 | 
|---|
| 120 |  S DIC="^XMB(3.73,"
 | 
|---|
| 121 |  S DIC(0)="NEU"
 | 
|---|
| 122 |  S D="C"
 | 
|---|
| 123 |  I $D(XMZ) S DIC("S")="I $D(^XMB(3.73,""AC"","_XMZ_","_$G(XMDUZ,DUZ)_",Y))"
 | 
|---|
| 124 |  E  S DIC("S")="I $D(^XMB(3.73,""C"","_$G(XMDUZ,DUZ)_",Y))"
 | 
|---|
| 125 |  S X=$G(XMDUZ,DUZ)
 | 
|---|
| 126 |  D IX^DIC I Y=-1 S XMABORT=1 Q
 | 
|---|
| 127 |  S XMIEN=+Y
 | 
|---|
| 128 |  Q
 | 
|---|
| 129 | CHGDATE(DA) ; Change a date
 | 
|---|
| 130 |  N DIE,DR,DIDEL
 | 
|---|
| 131 |  S DIDEL=3.73
 | 
|---|
| 132 |  S DIE=3.73
 | 
|---|
| 133 |  S DR=.01
 | 
|---|
| 134 |  D ^DIE
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 | LTRDATE(Y,XMABORT) ;
 | 
|---|
| 137 |  N DIR
 | 
|---|
| 138 |  S DIR(0)="3.73,.01"
 | 
|---|
| 139 |  S DIR("B")="T+1"
 | 
|---|
| 140 |  D ^DIR I $D(DIRUT) S XMABORT=1 Q
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 | LTRADD(XMDUZ,XMZ,XMWHEN) ;
 | 
|---|
| 143 |  N XMFDA
 | 
|---|
| 144 |  Q:$D(^XMB(3.73,"AB",XMWHEN,XMDUZ,XMZ))  ; Already scheduled?
 | 
|---|
| 145 |  S XMFDA(3.73,"+1,",.01)=XMWHEN
 | 
|---|
| 146 |  ;S XMFDA(3.73,"+1,",1)=XMDUZ  Not needed, because done by trigger
 | 
|---|
| 147 |  S XMFDA(3.73,"+1,",2)=XMZ
 | 
|---|
| 148 |  D UPDATE^DIE("","XMFDA")
 | 
|---|
| 149 |  Q
 | 
|---|