| 1 | RCXVTSK ;DAOU/ALA-AR Data Extract Nightly Task ;23-JUL-03
 | 
|---|
| 2 |  ;;4.5;Accounts Receivable;**201,227,228,232**;Mar 20, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;** Program Description **
 | 
|---|
| 5 |  ;  This program is the nightly task program for the
 | 
|---|
| 6 |  ;  CBO Data Extract to the Boston Allocation Resource
 | 
|---|
| 7 |  ;  Center
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 | EN ;  Entry point
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;  If a test system has 'turned off' extract, quit
 | 
|---|
| 12 |  I '$$GET1^DIQ(342,"1,",20.04,"I") Q
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  N $ES,$ET
 | 
|---|
| 15 |  S $ET="D ER^RCXVTSK"
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  L +^RCXVTSK:60 E  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;  Purge completed batches
 | 
|---|
| 20 |  S IEN="",DIK="^RCXV("
 | 
|---|
| 21 |  F  S IEN=$O(^RCXV("AC","C",IEN)) Q:IEN=""  D
 | 
|---|
| 22 |  . S DA=IEN D ^DIK
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  K ^TMP("RCXVMSG",$J)
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;  Find all deposits/receipts
 | 
|---|
| 27 |  S RCXVD0="",RCXVRNUM=0,RCXVDT=$$FMADD^XLFDT(DT,-1)
 | 
|---|
| 28 |  F  S RCXVD0=$O(^RCY(344,"ASTAT",0,RCXVD0)) Q:RCXVD0=""  D
 | 
|---|
| 29 |  . S RCXVEDT=$P($G(^RCY(344,RCXVD0,0)),U,12)\1
 | 
|---|
| 30 |  . I RCXVEDT'=RCXVDT Q
 | 
|---|
| 31 |  . S RCXVRNUM=RCXVRNUM+1
 | 
|---|
| 32 |  . D FIL^RCXVDEQ("R")
 | 
|---|
| 33 |  . D UDR^RCXVDEQ
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  K RCXVD0,RCXVRNUM,RCXVDT,RCXVEDT,RCXVDA,RCVXCTY,RCXVBDT
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  S RCXVBTN="",RCXVU="^",RCXVXDT=DT
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  ;  If the CCPC calculation is scheduled to run, don't
 | 
|---|
| 40 |  ;  run the nightly task
 | 
|---|
| 41 |  ; Patch 228 changes software to allow nightly task on CCPC date
 | 
|---|
| 42 |  ;S X1=$$STD^RCCPCFN,X2=-3 D C^%DTC I X=DT L -^RCXVTSK K X Q
 | 
|---|
| 43 |  ;K X1,X2
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 | MONTHLY ;Set up monthly transmission batches
 | 
|---|
| 46 |  I $E(DT,6,7)="01" D EN^RCXVDC10
 | 
|---|
| 47 | NM ;  Find all new batches to be transmitted
 | 
|---|
| 48 |  S RBSQ=0,RBTOT=0
 | 
|---|
| 49 |  F  S RCXVBTN=$O(^RCXV("AC","P",RCXVBTN)) Q:RCXVBTN=""  D
 | 
|---|
| 50 |  . I $G(^RCXV(RCXVBTN,0))="" Q
 | 
|---|
| 51 |  . S RBSQ=RBSQ+1,RBTOT=RBTOT+1
 | 
|---|
| 52 |  . I $P(^RCXV(RCXVBTN,0),U,1)'=RCXVBTN S RCXVUP(348.4,RCXVBTN_",",.01)=RCXVBTN
 | 
|---|
| 53 |  . S RCXVUP(348.4,RCXVBTN_",",.05)=RBSQ
 | 
|---|
| 54 |  F  S RCXVBTN=$O(RCXVUP(348.4,RCXVBTN)) Q:RCXVBTN=""  D
 | 
|---|
| 55 |  . S RCXVUP(348.4,RCXVBTN,.06)=RBTOT
 | 
|---|
| 56 |  D FILE^DIE("","RCXVUP","RCXVERR")
 | 
|---|
| 57 |  K RCXVUP
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  S RCXVBTN=""
 | 
|---|
| 60 | STRT ;  Start the build and transmission of batches
 | 
|---|
| 61 |  D ^RCXVCHK
 | 
|---|
| 62 |  F RCSTAT="T","P" F  S RCXVBTN=$O(^RCXV("AC",RCSTAT,RCXVBTN)) Q:RCXVBTN=""  D
 | 
|---|
| 63 |  . S RCXVBLN=0,RQFL=0
 | 
|---|
| 64 |  . S RCXVSITE=$P($$SITE^VASITE(),U,3)
 | 
|---|
| 65 |  . S RCXVDIR=$P($G(^RC(342,1,20)),U,1)
 | 
|---|
| 66 |  . S RCXVBDT=$P($G(^RCXV(RCXVBTN,0)),U,2)
 | 
|---|
| 67 |  . S RCXVBTY=$P($G(^RCXV(RCXVBTN,0)),U,4)
 | 
|---|
| 68 |  . S RCXVSEQ=$P($G(^RCXV(RCXVBTN,0)),U,5)
 | 
|---|
| 69 |  . S RCXVSTOT=$P($G(^RCXV(RCXVBTN,0)),U,6)
 | 
|---|
| 70 |  . S RCXVLDOM=$P($G(^RC(342,1,20)),U,8)
 | 
|---|
| 71 |  . ;S RCXVLEG=+$P($G(^RC(342,1,20)),U,7)
 | 
|---|
| 72 |  . ;
 | 
|---|
| 73 |  . I RCSTAT'="T" D  Q:RQFL
 | 
|---|
| 74 |  .. I $G(RCXVSEQ)="" S RQFL=1 Q
 | 
|---|
| 75 |  .. I $P(^RCXV(RCXVBTN,0),U,3)="C" S RQFL=1 Q
 | 
|---|
| 76 |  .. S RCXVUP(348.4,RCXVBTN_",",.03)="T"
 | 
|---|
| 77 |  .. D FILE^DIE("I","RCXVUP","RCXVERR")
 | 
|---|
| 78 |  .. K RCXVUP
 | 
|---|
| 79 |  . ;
 | 
|---|
| 80 |  . ; If a file has been transmitted but no acknowledgement
 | 
|---|
| 81 |  . ; has been received after 5 days, resend
 | 
|---|
| 82 |  . I RCSTAT="T" D  Q:RQFL
 | 
|---|
| 83 |  .. S RCXVTRD=$P($G(^RCXV(RCXVBTN,0)),U,8)\1
 | 
|---|
| 84 |  .. S RCXVARD=$P($G(^RCXV(RCXVBTN,0)),U,9)\1
 | 
|---|
| 85 |  .. I $$FMADD^XLFDT(RCXVTRD,5)>DT S RQFL=1
 | 
|---|
| 86 |  .. ;I RCXVARD=0,RCXVLEG,RCXVTRD'=0 S RQFL=1
 | 
|---|
| 87 |  . ;
 | 
|---|
| 88 |  . Q:RQFL
 | 
|---|
| 89 |  . ; FILENAME=SITE_DATE_BATCH# 
 | 
|---|
| 90 |  . S RCXVFILE="RCXV"_RCXVSITE_RCXVBDT_RCXVBTN_".TXT"
 | 
|---|
| 91 |  . S RCXVSCR="TMP_RCXV"_RCXVSITE_"_"_RCXVBTN
 | 
|---|
| 92 |  . D OPEN^%ZISH("RCXVHNDL",RCXVDIR,RCXVFILE,"W")
 | 
|---|
| 93 |  . U IO
 | 
|---|
| 94 |  . S RCXVDMN=$P($G(^XTV(8989.3,1,0)),U,1)
 | 
|---|
| 95 |  . S RCXVDMN=$P($G(^DIC(4.2,RCXVDMN,0)),U,1)
 | 
|---|
| 96 |  . S RCXVRN=$P($G(^RCXV(RCXVBTN,1,0)),U,4) ; # OF REC FOR BILLS
 | 
|---|
| 97 |  . I RCXVRN="" S RCXVRN=$P($G(^RCXV(RCXVBTN,2,0)),U,4) ; # REC DEP/REC
 | 
|---|
| 98 |  . S RCXVRT=$P($G(^RCXV(RCXVBTN,0)),U,4) ; TYPE OF DATA 
 | 
|---|
| 99 |  . W "HDR:"_RCXVSITE_RCXVU_RCXVDMN_RCXVU_RCXVRT_RCXVU_RCXVRN_RCXVU_RCXVBDT_RCXVU_RCXVXDT_RCXVU_RCXVSEQ_RCXVU_RCXVSTOT_RCXVU_RCXVLDOM,!
 | 
|---|
| 100 |  . F  S RCXVBLN=$O(^RCXV(RCXVBTN,1,RCXVBLN)) Q:'RCXVBLN  D
 | 
|---|
| 101 |  .. S DFN=$P(^RCXV(RCXVBTN,1,RCXVBLN,0),U,2)
 | 
|---|
| 102 |  .. D EN^RCXVDC
 | 
|---|
| 103 |  . ;
 | 
|---|
| 104 |  . S RCXVD0=0
 | 
|---|
| 105 |  . F  S RCXVD0=$O(^RCXV(RCXVBTN,2,RCXVD0)) Q:'RCXVD0  D
 | 
|---|
| 106 |  .. S RCXVEDT=$P($G(^RCY(344,RCXVD0,0)),U,12)\1
 | 
|---|
| 107 |  .. D D344^RCXVDC8
 | 
|---|
| 108 |  . ;
 | 
|---|
| 109 |  . S RCXVD0=0
 | 
|---|
| 110 |  . F  S RCXVD0=$O(^RCXV(RCXVBTN,3,RCXVD0)) Q:'RCXVD0  D
 | 
|---|
| 111 |  .. S DFN=RCXVD0
 | 
|---|
| 112 |  .. D D3547^RCXVDC10
 | 
|---|
| 113 |  . ;
 | 
|---|
| 114 |  . I $D(^RCXV(RCXVBTN,4)) S RCXVMO=$G(^(4)) D PREREG^RCXVDC10
 | 
|---|
| 115 |  . ;
 | 
|---|
| 116 |  . I $D(^RCXV(RCXVBTN,5)) S RCXVMO=$G(^(5)) D BUFFER^RCXVDC10
 | 
|---|
| 117 |  . ;
 | 
|---|
| 118 |  . D CLOSE^%ZISH("RCXVHNDL")
 | 
|---|
| 119 |  . ;
 | 
|---|
| 120 |  . S $P(^RC(342,1,20),U,9)=$$NOW^XLFDT()
 | 
|---|
| 121 |  . ;
 | 
|---|
| 122 |  . ;  FTP directly to ARC
 | 
|---|
| 123 |  . D EN^RCXVFTP(RCXVFILE,RCXVDIR)
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  ;  Check on FTP transfer messages
 | 
|---|
| 126 |  D ^RCXVFTR
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 |  L -^RCXVTSK
 | 
|---|
| 129 | EXIT D MSG^RCXVCHK
 | 
|---|
| 130 |  K IEN,DIK,DA,RCXVBLN,RCXVBTN,RCSTAT,RCXVBDT,RCXVDMN,RCXVXDT,RCXVTRD
 | 
|---|
| 131 |  K RCXVSITE,RCXVFILE,RCXVRN,RCXVRT,RCXVDIR,RCXVATP,RCXVU,DTACT,RBSQ,RBTOT
 | 
|---|
| 132 |  K RCFDATE,RCXVCFLG,RCXVDBN,RCXVIDT,RCXVSEQ,RCXVSTOT,RCXVTRD,CCT,DTENT
 | 
|---|
| 133 |  K RCBLN,RCDBTR,RCDEBT,RCTRAN,RCXVTR,RCBCN,RCXVPFDT,RCXVPTDT,RCXRMB
 | 
|---|
| 134 |  K RCXVLDOM,RCXVARD,RCXVSUB,RCXVBTY,RCXVLEG,RCXVSCR,Y,X,RCXVMO
 | 
|---|
| 135 |  K ^TMP("RCXVMSG",$J),^TMP("RCXVA",$J),^TMP("RCXVIN",$J)
 | 
|---|
| 136 |  Q
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 | HIS ;  Historical data extract
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 |  L +^RCXVTSK:60 E  HANG 600 G HIS
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  I $G(DT)="" D DT^DICRW
 | 
|---|
| 143 |  ;
 | 
|---|
| 144 |  I $G(RCXVFFD)="" D
 | 
|---|
| 145 |  . S RCFDATE=$$FYCY^IBCU8(DT)
 | 
|---|
| 146 |  . S RCXVFFD=$P(RCFDATE,U,3),RCXVFTD=$P(RCFDATE,U,4)
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 |  S RCXVDAT=RCXVFFD-.01
 | 
|---|
| 149 |  F  S RCXVDAT=$O(^PRCA(430,"ACTDT",RCXVDAT)) Q:RCXVDAT=""!(RCXVDAT>RCXVFTD)  D
 | 
|---|
| 150 |  . S IEN=""
 | 
|---|
| 151 |  . F  S IEN=$O(^PRCA(430,"ACTDT",RCXVDAT,IEN)) Q:IEN=""  D
 | 
|---|
| 152 |  .. I $P(^PRCA(430,IEN,0),U,8)=16!($P(^PRCA(430,IEN,0),U,8)=40) Q
 | 
|---|
| 153 |  .. S RCXVBLN=IEN,DFN=$P(^PRCA(430,IEN,0),U,7)
 | 
|---|
| 154 |  .. D FIL^RCXVDEQ("H")
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 |  L -^RCXVTSK
 | 
|---|
| 157 |  ;
 | 
|---|
| 158 |  D EN
 | 
|---|
| 159 |  K RCXVDAT,RCFDATE,RCXVFFD,RCXVFTD,IEN,DFN,RCXVBLN
 | 
|---|
| 160 |  ;
 | 
|---|
| 161 |  Q
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 | CUR ;  Find all current fiscal year bills
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 |  L +^RCXVTSK:60 E  HANG 600 G CUR
 | 
|---|
| 166 |  ;
 | 
|---|
| 167 |  S TTYP=""
 | 
|---|
| 168 |  F  S TTYP=$O(^PRCA(433,"AT",TTYP)) Q:TTYP=""  D
 | 
|---|
| 169 |  . I '+$P(^PRCA(430.3,TTYP,0),U,6) Q
 | 
|---|
| 170 |  . S RDATE=RCXVFFD-.01
 | 
|---|
| 171 |  . F  S RDATE=$O(^PRCA(433,"AT",TTYP,RDATE)) Q:RDATE=""!(RDATE\1>RCXVFTD)  D
 | 
|---|
| 172 |  .. S IEN=""
 | 
|---|
| 173 |  .. F  S IEN=$O(^PRCA(433,"AT",TTYP,RDATE,IEN)) Q:IEN=""  D
 | 
|---|
| 174 |  ... S RCXVBLN=$P(^PRCA(433,IEN,0),U,2)
 | 
|---|
| 175 |  ... I RCXVBLN="" Q
 | 
|---|
| 176 |  ... S X=$P($G(^PRCA(430,RCXVBLN,0)),U,8)
 | 
|---|
| 177 |  ... I X=16!(X=40) Q
 | 
|---|
| 178 |  ... ; Line below changed for patch 228 to do FY05 extract
 | 
|---|
| 179 |  ... D FIL^RCXVDEQ("E")
 | 
|---|
| 180 |  ;
 | 
|---|
| 181 |  L -^RCXVTSK
 | 
|---|
| 182 |  ;
 | 
|---|
| 183 |  D EN
 | 
|---|
| 184 |  K TTYP,RDATE,RCXVFFD,RCXVFTD,RCXVBLN
 | 
|---|
| 185 |  Q
 | 
|---|
| 186 |  ;
 | 
|---|
| 187 | ACT ;  Active data extract
 | 
|---|
| 188 |  ;
 | 
|---|
| 189 |  L +^RCXVTSK:60 E  HANG 600 G ACT
 | 
|---|
| 190 |  ;
 | 
|---|
| 191 |  NEW STAT,CSTAT,QFL
 | 
|---|
| 192 |  ;  Set up the AR Data Queue for all 'Active' and 'Suspended' bills
 | 
|---|
| 193 |  F STAT=16,40 S IEN="" F  S IEN=$O(^PRCA(430,"AC",STAT,IEN)) Q:IEN=""  D
 | 
|---|
| 194 |  . S RCXVBLN=IEN,DFN=$P(^PRCA(430,IEN,0),U,7)
 | 
|---|
| 195 |  . I $P(^PRCA(430,IEN,0),U,2)="" Q
 | 
|---|
| 196 |  . S CSTAT=$P(^PRCA(430,IEN,0),U,8)
 | 
|---|
| 197 |  . I CSTAT'=STAT S QFL=0 D  Q:QFL
 | 
|---|
| 198 |  .. I CSTAT'=16!(CSTAT'=40) S QFL=1
 | 
|---|
| 199 |  . D FIL^RCXVDEQ("A")
 | 
|---|
| 200 |  ;
 | 
|---|
| 201 |  L -^RCXVTSK
 | 
|---|
| 202 |  ;
 | 
|---|
| 203 |  D EN
 | 
|---|
| 204 |  Q
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 | ER ; Unlock and log error
 | 
|---|
| 207 |  L -^RCXVTSK
 | 
|---|
| 208 |  D ^%ZTER
 | 
|---|
| 209 |  D UNWIND^%ZTER
 | 
|---|
| 210 |  Q
 | 
|---|