| 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 | 
|---|