1 | GECSTRAN ;WISC/RFJ/KLD-transmit a batch ;01 Nov 93
|
---|
2 | ;;2.0;GCS;**13,15,20**;MAR 14, 1995
|
---|
3 | N %,%X,CODE,D,DOMAIN,DA,GECS,GECSBADA,GECSBATC,GECSCODE,GECSDICS,GECSLINE,GECSMAX,GECSMSG,GECSXMY,GECSSYDA,GECSTOTL,GECSXMZ,PRIORITY,X,Y
|
---|
4 | D ^GECSSITE Q:'$G(GECS("SITE"))
|
---|
5 | D BATNOFMS^GECSUSEL Q:'$G(GECS("BATDA"))
|
---|
6 | S GECS("SITECOM")=GECS("SITE")_GECS("SITE1")
|
---|
7 | S GECSDICS="S %=^(0) I $S($P(%,""-"",1)=GECS(""SITECOM"")&($P(^(0),U,6)=GECS(""BATDA"")):1,1:0)"
|
---|
8 | W ! S GECSBADA=$$BATCHSEL^GECSUSEL(GECSDICS) Q:'GECSBADA
|
---|
9 | S GECSBATC=$P($G(^GECS(2101.3,GECSBADA,0)),"^") I GECSBATC="" W !,"CANNOT FIND BATCH NUMBER IN FILE 2101.3." Q
|
---|
10 | ;
|
---|
11 | ; build receiving users for mail messages
|
---|
12 | K GECSXMY
|
---|
13 | S %=0 F S %=$O(^GECS(2101.1,GECS("BATDA"),2,%)) Q:'% S D=$G(^(%,0)) I $P(D,"^",3)=1 D
|
---|
14 | . S DOMAIN=$P($G(^DIC(4.2,+$P(D,"^",2),0)),"^") I DOMAIN'="" S DOMAIN="@"_DOMAIN
|
---|
15 | . S GECSXMY($P(D,"^")_DOMAIN)=""
|
---|
16 | I '$D(GECSXMY) W !,"RECEIVING USERS FOR THIS BATCH TYPE HAVE NOT BEEN ENTERED." Q
|
---|
17 | W !!,"Transmission will be to the following:"
|
---|
18 | S %="" F S %=$O(GECSXMY(%)) Q:%="" W !?5,%
|
---|
19 | ;
|
---|
20 | ;
|
---|
21 | RETRY ; if locked, come here to retry transmission
|
---|
22 | S XP="ARE YOU READY TO TRANSMIT THE CODE SHEETS",XH="Enter YES to transmit the code sheets, NO or ^ to exit." W ! I $$YN^GECSUTIL(2)'=1 Q
|
---|
23 | ;
|
---|
24 | ; check lock and lock system
|
---|
25 | S GECSSYDA=$$LOCKSYS^GECSULOC(GECS("SITE")_"-"_GECS("SYSID")_"-TRANSMIT")
|
---|
26 | I 'GECSSYDA W !!,"ANOTHER USER IS TRANSMITTING THE CODE SHEETS, TRY AGAIN IN A MINUTE" G RETRY
|
---|
27 | ;
|
---|
28 | ; check to see if batch has been transmitted, if so quit
|
---|
29 | I $P($G(^GECS(2101.3,GECSBADA,0)),"^",3)'="B" D UNLOCK^GECSULOC(GECSSYDA) Q
|
---|
30 | ;
|
---|
31 | ; get maximum number of code sheets per message
|
---|
32 | S GECSMAX=$P($G(^GECS(2101.1,GECS("BATDA"),0)),"^",3) I 'GECSMAX S GECSMAX=999999999
|
---|
33 | ;
|
---|
34 | ; build priority list
|
---|
35 | K ^TMP($J,"GECSTRAN")
|
---|
36 | S DA=0 F S DA=$O(^GECS(2100,"AB",GECSBATC,DA)) Q:'DA I $O(^GECS(2100,DA,"CODE",0)) S D=$G(^GECS(2100,DA,"TRANS")) I D'="" D
|
---|
37 | . S PRIORITY=$P(D,"^",10) S:'PRIORITY PRIORITY=3
|
---|
38 | . S ^TMP($J,"GECSTRAN",PRIORITY,DA)=""
|
---|
39 | ;
|
---|
40 | ; build messages
|
---|
41 | K ^TMP($J,"GECSTRAN MM")
|
---|
42 | S (GECSMSG,GECSLINE)=1
|
---|
43 | S PRIORITY=0 F S PRIORITY=$O(^TMP($J,"GECSTRAN",PRIORITY)) Q:'PRIORITY S (DA,GECSCODE)=0 F S DA=$O(^TMP($J,"GECSTRAN",PRIORITY,DA)) Q:'DA D
|
---|
44 | . ;
|
---|
45 | . ; umark code sheet for transmission
|
---|
46 | . S $P(^GECS(2100,DA,"TRANS"),"^",2)="" K ^GECS(2100,"AE","Y",DA)
|
---|
47 | . ;
|
---|
48 | . S GECSCODE=GECSCODE+1
|
---|
49 | . I GECSCODE>GECSMAX S GECSMSG=GECSMSG+1,(GECSCODE,GECSLINE)=1
|
---|
50 | . ;
|
---|
51 | . ; special code to create calm header for fee code sheets 994.xx
|
---|
52 | . I $P(GECSBATC,"-",2)="FEN",GECSLINE=1 D
|
---|
53 | . . S %=$P(GECSBATC,"-",4)
|
---|
54 | . . N Y,X
|
---|
55 | . . S Y=DT D DD^%DT
|
---|
56 | . . S ^TMP($J,"GECSTRAN MM",GECSMSG,GECSLINE,0)=$E($G(^GECS(2100,DA,"CODE",1,0)),1,3)_"."_$P(GECSBATC,"-")_".999.01."_$E(DT,4,7)_$E(DT,2,3)_".06"_$E("0000",$L(%)+1,4)_%_".$",GECSLINE=GECSLINE+1
|
---|
57 | . S %=0 F S %=$O(^GECS(2100,DA,"CODE",%)) Q:'% S CODE=$G(^(%,0)) I CODE'="" D
|
---|
58 | . . S ^TMP($J,"GECSTRAN MM",GECSMSG,GECSLINE,0)=CODE,GECSLINE=GECSLINE+1
|
---|
59 | ;
|
---|
60 | S GECSTOTL=GECSMSG
|
---|
61 | ; transmit
|
---|
62 | W !
|
---|
63 | S GECSMSG=0 F S GECSMSG=$O(^TMP($J,"GECSTRAN MM",GECSMSG)) Q:'GECSMSG D
|
---|
64 | . ;create mailman message
|
---|
65 | . W !,"MESSAGE NUMBER: "
|
---|
66 | . S GECSXMZ=$$MAILMSG(GECS("BATCH"),GECSBATC,.GECSXMY,GECSMSG,GECSTOTL)
|
---|
67 | . W GECSXMZ
|
---|
68 | . I 'GECSXMZ Q
|
---|
69 | . ;
|
---|
70 | . ; set message number in batch
|
---|
71 | . D SETMSG(GECSBADA,GECSXMZ)
|
---|
72 | ;
|
---|
73 | ; update file 2101.3
|
---|
74 | D UPDATE(GECSBADA)
|
---|
75 | Q
|
---|
76 | ;
|
---|
77 | ;
|
---|
78 | MAILMSG(BATCHNME,BATCHNUM,RECUSERS,MSGNUMBR,TOTALMSG) ; create mailman msg
|
---|
79 | ; batchnme=name of batch
|
---|
80 | ; batchnum=batch number
|
---|
81 | ; recusers()=array of receiving users (same as xmy)
|
---|
82 | ; msgnumbr=this message number
|
---|
83 | ; totalmsg=total number of messages to transmit in all
|
---|
84 | ; returns xmz message number
|
---|
85 | N %,DIC,XCNP,XMDISPI,XMDUZ,XMTEXT,XMY,XMZ
|
---|
86 | ;
|
---|
87 | ; build receiving queue and user array
|
---|
88 | S %="" F S %=$O(RECUSERS(%)) Q:%="" S XMY(%)=""
|
---|
89 | S XMY(DUZ)="",XMDUZ=DUZ
|
---|
90 | ;
|
---|
91 | S XMTEXT="^TMP($J,""GECSTRAN MM"","_MSGNUMBR_",",XMSUB="GECS "_BATCHNME_" # "_BATCHNUM_" (MSG "_MSGNUMBR_" OF "_TOTALMSG_")"
|
---|
92 | K XMZ D ^XMD
|
---|
93 | Q $G(XMZ)
|
---|
94 | ;
|
---|
95 | ;
|
---|
96 | UPDATE(DA) ; update file 2101.3 batch as being transmitted
|
---|
97 | N %DT,D,D0,DI,DIC,DIE,DQ,DR,X,Y
|
---|
98 | S (DIC,DIE)="^GECS(2101.3,",DR=".5///T;4///T;5////"_DUZ D ^DIE
|
---|
99 | Q
|
---|
100 | ;
|
---|
101 | ;
|
---|
102 | SETMSG(DA,XMZ) ; set message number in batch
|
---|
103 | N %,D0,DD,DIC,DLAYGO,X,Y
|
---|
104 | I '$D(^GECS(2101.3,DA,0)) Q
|
---|
105 | S:'$D(^GECS(2101.3,DA,2,0)) ^(0)="^2101.32^^"
|
---|
106 | S DIC="^GECS(2101.3,"_DA_",2,",DIC(0)="L",DLAYGO=2101.3,X=XMZ D FILE^DICN
|
---|
107 | Q
|
---|