Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RCXVTSK

RCXVTSK.m

Go to the documentation of this file.
RCXVTSK ;DAOU/ALA-AR Data Extract Nightly Task ;23-JUL-03
 ;;4.5;Accounts Receivable;**201,227,228,232**;Mar 20, 1995
 ;
 ;** Program Description **
 ;  This program is the nightly task program for the
 ;  CBO Data Extract to the Boston Allocation Resource
 ;  Center
 ;
EN ;  Entry point
 ;
 ;  If a test system has 'turned off' extract, quit
 I '$$GET1^DIQ(342,"1,",20.04,"I") Q
 ;
 N $ES,$ET
 S $ET="D ER^RCXVTSK"
 ;
 L +^RCXVTSK:60 E  Q
 ;
 ;  Purge completed batches
 S IEN="",DIK="^RCXV("
 F  S IEN=$O(^RCXV("AC","C",IEN)) Q:IEN=""  D
 . S DA=IEN D ^DIK
 ;
 K ^TMP("RCXVMSG",$J)
 ;
 ;  Find all deposits/receipts
 S RCXVD0="",RCXVRNUM=0,RCXVDT=$$FMADD^XLFDT(DT,-1)
 F  S RCXVD0=$O(^RCY(344,"ASTAT",0,RCXVD0)) Q:RCXVD0=""  D
 . S RCXVEDT=$P($G(^RCY(344,RCXVD0,0)),U,12)\1
 . I RCXVEDT'=RCXVDT Q
 . S RCXVRNUM=RCXVRNUM+1
 . D FIL^RCXVDEQ("R")
 . D UDR^RCXVDEQ
 ;
 K RCXVD0,RCXVRNUM,RCXVDT,RCXVEDT,RCXVDA,RCVXCTY,RCXVBDT
 ;
 S RCXVBTN="",RCXVU="^",RCXVXDT=DT
 ;
 ;  If the CCPC calculation is scheduled to run, don't
 ;  run the nightly task
 ; Patch 228 changes software to allow nightly task on CCPC date
 ;S X1=$$STD^RCCPCFN,X2=-3 D C^%DTC I X=DT L -^RCXVTSK K X Q
 ;K X1,X2
 ;
MONTHLY ;Set up monthly transmission batches
 I $E(DT,6,7)="01" D EN^RCXVDC10
NM ;  Find all new batches to be transmitted
 S RBSQ=0,RBTOT=0
 F  S RCXVBTN=$O(^RCXV("AC","P",RCXVBTN)) Q:RCXVBTN=""  D
 . I $G(^RCXV(RCXVBTN,0))="" Q
 . S RBSQ=RBSQ+1,RBTOT=RBTOT+1
 . I $P(^RCXV(RCXVBTN,0),U,1)'=RCXVBTN S RCXVUP(348.4,RCXVBTN_",",.01)=RCXVBTN
 . S RCXVUP(348.4,RCXVBTN_",",.05)=RBSQ
 F  S RCXVBTN=$O(RCXVUP(348.4,RCXVBTN)) Q:RCXVBTN=""  D
 . S RCXVUP(348.4,RCXVBTN,.06)=RBTOT
 D FILE^DIE("","RCXVUP","RCXVERR")
 K RCXVUP
 ;
 S RCXVBTN=""
STRT ;  Start the build and transmission of batches
 D ^RCXVCHK
 F RCSTAT="T","P" F  S RCXVBTN=$O(^RCXV("AC",RCSTAT,RCXVBTN)) Q:RCXVBTN=""  D
 . S RCXVBLN=0,RQFL=0
 . S RCXVSITE=$P($$SITE^VASITE(),U,3)
 . S RCXVDIR=$P($G(^RC(342,1,20)),U,1)
 . S RCXVBDT=$P($G(^RCXV(RCXVBTN,0)),U,2)
 . S RCXVBTY=$P($G(^RCXV(RCXVBTN,0)),U,4)
 . S RCXVSEQ=$P($G(^RCXV(RCXVBTN,0)),U,5)
 . S RCXVSTOT=$P($G(^RCXV(RCXVBTN,0)),U,6)
 . S RCXVLDOM=$P($G(^RC(342,1,20)),U,8)
 . ;S RCXVLEG=+$P($G(^RC(342,1,20)),U,7)
 . ;
 . I RCSTAT'="T" D  Q:RQFL
 .. I $G(RCXVSEQ)="" S RQFL=1 Q
 .. I $P(^RCXV(RCXVBTN,0),U,3)="C" S RQFL=1 Q
 .. S RCXVUP(348.4,RCXVBTN_",",.03)="T"
 .. D FILE^DIE("I","RCXVUP","RCXVERR")
 .. K RCXVUP
 . ;
 . ; If a file has been transmitted but no acknowledgement
 . ; has been received after 5 days, resend
 . I RCSTAT="T" D  Q:RQFL
 .. S RCXVTRD=$P($G(^RCXV(RCXVBTN,0)),U,8)\1
 .. S RCXVARD=$P($G(^RCXV(RCXVBTN,0)),U,9)\1
 .. I $$FMADD^XLFDT(RCXVTRD,5)>DT S RQFL=1
 .. ;I RCXVARD=0,RCXVLEG,RCXVTRD'=0 S RQFL=1
 . ;
 . Q:RQFL
 . ; FILENAME=SITE_DATE_BATCH# 
 . S RCXVFILE="RCXV"_RCXVSITE_RCXVBDT_RCXVBTN_".TXT"
 . S RCXVSCR="TMP_RCXV"_RCXVSITE_"_"_RCXVBTN
 . D OPEN^%ZISH("RCXVHNDL",RCXVDIR,RCXVFILE,"W")
 . U IO
 . S RCXVDMN=$P($G(^XTV(8989.3,1,0)),U,1)
 . S RCXVDMN=$P($G(^DIC(4.2,RCXVDMN,0)),U,1)
 . S RCXVRN=$P($G(^RCXV(RCXVBTN,1,0)),U,4) ; # OF REC FOR BILLS
 . I RCXVRN="" S RCXVRN=$P($G(^RCXV(RCXVBTN,2,0)),U,4) ; # REC DEP/REC
 . S RCXVRT=$P($G(^RCXV(RCXVBTN,0)),U,4) ; TYPE OF DATA 
 . W "HDR:"_RCXVSITE_RCXVU_RCXVDMN_RCXVU_RCXVRT_RCXVU_RCXVRN_RCXVU_RCXVBDT_RCXVU_RCXVXDT_RCXVU_RCXVSEQ_RCXVU_RCXVSTOT_RCXVU_RCXVLDOM,!
 . F  S RCXVBLN=$O(^RCXV(RCXVBTN,1,RCXVBLN)) Q:'RCXVBLN  D
 .. S DFN=$P(^RCXV(RCXVBTN,1,RCXVBLN,0),U,2)
 .. D EN^RCXVDC
 . ;
 . S RCXVD0=0
 . F  S RCXVD0=$O(^RCXV(RCXVBTN,2,RCXVD0)) Q:'RCXVD0  D
 .. S RCXVEDT=$P($G(^RCY(344,RCXVD0,0)),U,12)\1
 .. D D344^RCXVDC8
 . ;
 . S RCXVD0=0
 . F  S RCXVD0=$O(^RCXV(RCXVBTN,3,RCXVD0)) Q:'RCXVD0  D
 .. S DFN=RCXVD0
 .. D D3547^RCXVDC10
 . ;
 . I $D(^RCXV(RCXVBTN,4)) S RCXVMO=$G(^(4)) D PREREG^RCXVDC10
 . ;
 . I $D(^RCXV(RCXVBTN,5)) S RCXVMO=$G(^(5)) D BUFFER^RCXVDC10
 . ;
 . D CLOSE^%ZISH("RCXVHNDL")
 . ;
 . S $P(^RC(342,1,20),U,9)=$$NOW^XLFDT()
 . ;
 . ;  FTP directly to ARC
 . D EN^RCXVFTP(RCXVFILE,RCXVDIR)
 ;
 ;  Check on FTP transfer messages
 D ^RCXVFTR
 ;
 L -^RCXVTSK
EXIT D MSG^RCXVCHK
 K IEN,DIK,DA,RCXVBLN,RCXVBTN,RCSTAT,RCXVBDT,RCXVDMN,RCXVXDT,RCXVTRD
 K RCXVSITE,RCXVFILE,RCXVRN,RCXVRT,RCXVDIR,RCXVATP,RCXVU,DTACT,RBSQ,RBTOT
 K RCFDATE,RCXVCFLG,RCXVDBN,RCXVIDT,RCXVSEQ,RCXVSTOT,RCXVTRD,CCT,DTENT
 K RCBLN,RCDBTR,RCDEBT,RCTRAN,RCXVTR,RCBCN,RCXVPFDT,RCXVPTDT,RCXRMB
 K RCXVLDOM,RCXVARD,RCXVSUB,RCXVBTY,RCXVLEG,RCXVSCR,Y,X,RCXVMO
 K ^TMP("RCXVMSG",$J),^TMP("RCXVA",$J),^TMP("RCXVIN",$J)
 Q
 ;
HIS ;  Historical data extract
 ;
 L +^RCXVTSK:60 E  HANG 600 G HIS
 ;
 I $G(DT)="" D DT^DICRW
 ;
 I $G(RCXVFFD)="" D
 . S RCFDATE=$$FYCY^IBCU8(DT)
 . S RCXVFFD=$P(RCFDATE,U,3),RCXVFTD=$P(RCFDATE,U,4)
 ;
 S RCXVDAT=RCXVFFD-.01
 F  S RCXVDAT=$O(^PRCA(430,"ACTDT",RCXVDAT)) Q:RCXVDAT=""!(RCXVDAT>RCXVFTD)  D
 . S IEN=""
 . F  S IEN=$O(^PRCA(430,"ACTDT",RCXVDAT,IEN)) Q:IEN=""  D
 .. I $P(^PRCA(430,IEN,0),U,8)=16!($P(^PRCA(430,IEN,0),U,8)=40) Q
 .. S RCXVBLN=IEN,DFN=$P(^PRCA(430,IEN,0),U,7)
 .. D FIL^RCXVDEQ("H")
 ;
 L -^RCXVTSK
 ;
 D EN
 K RCXVDAT,RCFDATE,RCXVFFD,RCXVFTD,IEN,DFN,RCXVBLN
 ;
 Q
 ;
CUR ;  Find all current fiscal year bills
 ;
 L +^RCXVTSK:60 E  HANG 600 G CUR
 ;
 S TTYP=""
 F  S TTYP=$O(^PRCA(433,"AT",TTYP)) Q:TTYP=""  D
 . I '+$P(^PRCA(430.3,TTYP,0),U,6) Q
 . S RDATE=RCXVFFD-.01
 . F  S RDATE=$O(^PRCA(433,"AT",TTYP,RDATE)) Q:RDATE=""!(RDATE\1>RCXVFTD)  D
 .. S IEN=""
 .. F  S IEN=$O(^PRCA(433,"AT",TTYP,RDATE,IEN)) Q:IEN=""  D
 ... S RCXVBLN=$P(^PRCA(433,IEN,0),U,2)
 ... I RCXVBLN="" Q
 ... S X=$P($G(^PRCA(430,RCXVBLN,0)),U,8)
 ... I X=16!(X=40) Q
 ... ; Line below changed for patch 228 to do FY05 extract
 ... D FIL^RCXVDEQ("E")
 ;
 L -^RCXVTSK
 ;
 D EN
 K TTYP,RDATE,RCXVFFD,RCXVFTD,RCXVBLN
 Q
 ;
ACT ;  Active data extract
 ;
 L +^RCXVTSK:60 E  HANG 600 G ACT
 ;
 NEW STAT,CSTAT,QFL
 ;  Set up the AR Data Queue for all 'Active' and 'Suspended' bills
 F STAT=16,40 S IEN="" F  S IEN=$O(^PRCA(430,"AC",STAT,IEN)) Q:IEN=""  D
 . S RCXVBLN=IEN,DFN=$P(^PRCA(430,IEN,0),U,7)
 . I $P(^PRCA(430,IEN,0),U,2)="" Q
 . S CSTAT=$P(^PRCA(430,IEN,0),U,8)
 . I CSTAT'=STAT S QFL=0 D  Q:QFL
 .. I CSTAT'=16!(CSTAT'=40) S QFL=1
 . D FIL^RCXVDEQ("A")
 ;
 L -^RCXVTSK
 ;
 D EN
 Q
 ;
ER ; Unlock and log error
 L -^RCXVTSK
 D ^%ZTER
 D UNWIND^%ZTER
 Q