| 1 | RCDPEM1 ;ALB/TMK - ERA MATCH TO EFT (cont) ;05-NOV-02
 | 
|---|
| 2 |  ;;4.5;Accounts Receivable;**173**;Mar 20, 1995
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | BULL(RCFILE,RC0,RCER) ; Add the error to the bulletin text array
 | 
|---|
| 7 |  ; RCFILE = null, 344.3 or 344.31, depending on the file being worked
 | 
|---|
| 8 |  ; RC0 = the 0-node of the RCFILE entry
 | 
|---|
| 9 |  ; RCER = the error text to be placed in the bulletin (passed by ref)
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  N RCHCT,CT,Z
 | 
|---|
| 12 |  I '$O(^TMP($J,"RCXM",0)) S ^TMP($J,"RCXM",1)="The following exceptions were encountered attempting",^TMP($J,"RCXM",2)="to post EFT deposits OR to match EFT's with ERA's:",^TMP($J,"RCXM",3)=" "
 | 
|---|
| 13 |  S (RCHCT,CT)=+$O(^TMP($J,"RCXM",""),-1)
 | 
|---|
| 14 |  S ^TMP($J,"RCXM",0)=$G(^TMP($J,"RCXM",0))+1
 | 
|---|
| 15 |  I RC0'="" D
 | 
|---|
| 16 |  . D BLD("^TMP($J,""RCXM"")",.CT,RCFILE,RC0)
 | 
|---|
| 17 |  . S RCER=$G(RCER)+1,RCHCT=RCHCT+1
 | 
|---|
| 18 |  . S ^TMP($J,"RCXM",RCHCT)=$E(^TMP($J,"RCXM",0)_$J("",4),1,4)_$G(^TMP($J,"RCXM",RCHCT))
 | 
|---|
| 19 |  S Z=1 F  S Z=$O(RCER(Z)) Q:'Z  S CT=CT+1,^TMP($J,"RCXM",CT)="  "_RCER(Z)
 | 
|---|
| 20 |  S CT=CT+1,^TMP($J,"RCXM",CT)="  "
 | 
|---|
| 21 |  Q
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 | SENDBULL ; Sends the bulletin when all processing is complete
 | 
|---|
| 24 |  N XMBODY,XMB,XMINSTR,XMTYPE,XMFULL,XMTO,XMZ,XMERR,XMSUBJ
 | 
|---|
| 25 |  S XMTO("I:G.RCDPE PAYMENTS")=""
 | 
|---|
| 26 |  S XMBODY="^TMP($J,""RCXM"")"
 | 
|---|
| 27 |  S XMSUBJ="EDI LBOX "_$$FMTE^XLFDT(DT,2)_" EXCEPTIONS EFT DEP/MATCH EFTs TO ERAs"
 | 
|---|
| 28 |  D  ;
 | 
|---|
| 29 |  . N DUZ
 | 
|---|
| 30 |  . S DUZ=.5,DUZ(0)="@"
 | 
|---|
| 31 |  . D SENDMSG^XMXAPI(.5,XMSUBJ,XMBODY,.XMTO,,.XMZ)
 | 
|---|
| 32 |  K ^TMP($J,"RCXM")
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 | BLD(RCARRAY,RCT,RCFILE,RC0) ; Build the array for entry 344.31 detail
 | 
|---|
| 36 |  ; RCARRAY = the name of the array to be set
 | 
|---|
| 37 |  ; RCT = the # of lines already output into this array
 | 
|---|
| 38 |  ; RCFILE = 344.3 or 344.31
 | 
|---|
| 39 |  ; RC0 = the 0-node of the entry in RCFILE
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  N Z,RC00
 | 
|---|
| 42 |  I RCFILE=344.31 D
 | 
|---|
| 43 |  . S RC00=$G(^RCY(344.3,+RC0,0))
 | 
|---|
| 44 |  . S Z=$$SETSTR^VALM1("  TRACE #: "_$P(RC0,U,4),"",1,31)
 | 
|---|
| 45 |  . S Z=$$SETSTR^VALM1("  INS CO: "_$E($P(RC0,U,2),1,22)_"/"_$P(RC0,U,3),Z,32,43)
 | 
|---|
| 46 |  . S RCT=RCT+1,@RCARRAY@(RCT)=Z
 | 
|---|
| 47 |  . S Z=$$SETSTR^VALM1("  DEPOSIT DATE: "_$$FMTE^XLFDT($P(RC00,U,7),2),"",1,24)
 | 
|---|
| 48 |  . S Z=$$SETSTR^VALM1("  DATE REC'D: "_$S($P(RC00,U,13):$$FMTE^XLFDT($P(RC00,U,13)\1,2),1:""),Z,25,22)
 | 
|---|
| 49 |  . S Z=$$SETSTR^VALM1("  PAYMENT AMT: "_$TR($J($P(RC0,U,7),15,2)," "),Z,47,30)
 | 
|---|
| 50 |  . S RCT=RCT+1,@RCARRAY@(RCT)=Z
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  I RCFILE=344.3 D
 | 
|---|
| 53 |  . S Z=$$SETSTR^VALM1("  DEPOSIT #: "_$P(RC0,U,6),"",1,13)
 | 
|---|
| 54 |  . S Z=$$SETSTR^VALM1("  DEPOSIT DATE: "_$$FMTE^XLFDT($P(RC0,U,7),2),Z,16,24)
 | 
|---|
| 55 |  . S RCT=RCT+1,@RCARRAY@(RCT)=Z
 | 
|---|
| 56 |  . S Z=$$SETSTR^VALM1("  DATE REC'D: "_$S($P(RC0,U,13):$$FMTE^XLFDT($P(RC0,U,13)\1,2),1:""),"",25,22)
 | 
|---|
| 57 |  . S Z=$$SETSTR^VALM1("  DEPOSIT AMT: "_$TR($J($P(RC0,U,8),15,2)," "),Z,47,30)
 | 
|---|
| 58 |  . S RCT=RCT+1,@RCARRAY@(RCT)=Z
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | EN1 ; Queue match job for run on demand
 | 
|---|
| 63 |  N DIR,X,Y,ZTIO,ZTRTN,ZTSK,ZTDESC,ZTDTH
 | 
|---|
| 64 |  S DIR(0)="YA",DIR("A",1)="THIS OPTION QUEUES THE JOB TO MATCH EFTs TO ELECTRONIC ERAs"
 | 
|---|
| 65 |  S DIR("A")="ARE YOU SURE YOU WANT TO RUN THIS JOB?: ",DIR("B")="NO"
 | 
|---|
| 66 |  W ! D ^DIR K DIR
 | 
|---|
| 67 |  I Y'=1 G EN1Q
 | 
|---|
| 68 |  L +^RCY(344.3,"ALOCK"):5 I '$T D  G EN1Q
 | 
|---|
| 69 |  . S DIR(0)="EA",DIR("A",1)="This job is currently running ... try again later",DIR("A")="Press ENTER to continue: " D ^DIR K DIR
 | 
|---|
| 70 |  S ZTIO="",ZTDTH=$$NOW^XLFDT()
 | 
|---|
| 71 |  S ZTRTN="MATCH^RCDPEM(1,1)",ZTDESC="AR - MANUAL EFT-ERA MATCH EDI LOCKBOX"
 | 
|---|
| 72 |  D ^%ZTLOAD
 | 
|---|
| 73 |  W !!,$S($D(ZTSK):"Your job has been queued - task number "_ZTSK,1:"Unable to queue this job.")
 | 
|---|
| 74 |  U IO
 | 
|---|
| 75 | EN1Q L -^RCY(344.3,"ALOCK")
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 | EN2 ; Entrypoint from nightly job to put Nightly and Daily Activity Report
 | 
|---|
| 79 |  ; data into the nightly job's status bulletin
 | 
|---|
| 80 |  N CT,DATA,Z,Z0,RCHD,T,T0
 | 
|---|
| 81 |  S CT=+$O(^TMP($J,"RCXM",""),-1)
 | 
|---|
| 82 |  S CT=CT+1,^TMP($J,"RCXM",CT)=""
 | 
|---|
| 83 |  I $D(^TMP($J,"RCTOT","EFT_DEP")) D
 | 
|---|
| 84 |  . S CT=CT+1,^TMP($J,"RCXM",CT)=$J("",12)_"********** TOTALS **********"
 | 
|---|
| 85 |  . S CT=CT+1,^TMP($J,"RCXM",CT)="DEPOSITS"
 | 
|---|
| 86 |  . S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # UNPOSTED EFT DEPOSITS FOUND: "_+$G(^TMP($J,"RCTOT","EFT_DEP"))
 | 
|---|
| 87 |  . S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # NEW EFT DEPOSITS CREATED: "_+$G(^TMP($J,"RCTOT","DEPOSIT"))
 | 
|---|
| 88 |  . S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # NEW EFT DEPOSIT RECEIPTS CREATED: "_+$G(^TMP($J,"RCTOT","EFT_RECPT"))
 | 
|---|
| 89 |  . S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # EFT DEPOSITS WITH CHECK SUM ERRORS: "_+$G(^TMP($J,"RCTOT","CSUM"))
 | 
|---|
| 90 |  . S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # EFT DEPOSITS WITH OTHER ERRORS: "_+$G(^TMP($J,"RCTOT","ERR"))
 | 
|---|
| 91 |  . S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL EFT DEPOSIT AMOUNT POSTED TO REV SRC CD 8NZZ: "_$J(+$G(^TMP($J,"RCTOT","SUSPAMT")),"",2)
 | 
|---|
| 92 |  . S CT=CT+1,^TMP($J,"RCXM",CT)=""
 | 
|---|
| 93 |  S CT=CT+1,^TMP($J,"RCXM",CT)="EFT-ERA MATCHES"
 | 
|---|
| 94 |  S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # UNMATCHED ERAs CHECKED: "_+$G(^TMP($J,"RCTOT","EFT"))
 | 
|---|
| 95 |  S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # ERAs MATCHED TO EFTs: "_+$G(^TMP($J,"RCTOT","MATCH"))_$S($G(^TMP($J,"RCTOT","MATCH"))&$G(^TMP($J,"RCTOT","TOTMIS")):" INCLUDING "_+$G(^TMP($J,"RCTOT","TOTMIS"))_" WITH MISMATCHED TOTALS",1:"")
 | 
|---|
| 96 |  S CT=CT+1,^TMP($J,"RCXM",CT)="  TOTAL # ERAs STILL UNMATCHED: "_+$G(^TMP($J,"RCTOT","NO_MATCH"))
 | 
|---|
| 97 |  S CT=CT+1,^TMP($J,"RCXM",CT)=""
 | 
|---|
| 98 |  K ^TMP("RCDAILYACT",$J),^TMP($J,"RC1")
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  S Z=0 F  S Z=$O(^TMP($J,"RCDPETOT",344.31,Z)) Q:'Z  S Z0=$G(^RCY(344.31,Z,0)) I Z0 S ^TMP($J,"RC1",+Z0,Z)=Z0
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  S (RCHD,Z)=0 F  S Z=$O(^TMP($J,"RCDPETOT",344.3,Z)) Q:'Z  S DATA=$G(^(Z)) D
 | 
|---|
| 103 |  . I 'RCHD D HDR(.CT,.RCHD) ; Add headers
 | 
|---|
| 104 |  . S Z0=$G(^RCY(344.3,Z,0))
 | 
|---|
| 105 |  . S CT=CT+1
 | 
|---|
| 106 |  . S ^TMP($J,"RCXM",CT)=""
 | 
|---|
| 107 |  . I '$G(DATA) D
 | 
|---|
| 108 |  .. S CT=CT+1
 | 
|---|
| 109 |  .. S ^TMP($J,"RCXM",CT)=^TMP($J,"RCXM",CT)_"  "_$E($P($G(^RCY(344.1,+$P(Z0,U,3),0)),U)_$J("",15),1,15)_"  "_$E($P($G(^RCY(344,+$O(^RCY(344,"AD",+$P(Z0,U,3),0)),0)),U)_$J("",15),1,15)_"  "
 | 
|---|
| 110 |  .. S ^TMP($J,"RCXM",CT)=^TMP($J,"RCXM",CT)_$J(+$P(Z0,U,12),"",2)
 | 
|---|
| 111 |  . I $G(DATA) D
 | 
|---|
| 112 |  .. S ^TMP($J,"RCXM",CT)=^TMP($J,"RCXM",CT)_"  "_$E($P($G(^RCY(344.1,+$P(DATA,U,5),0)),U)_$J("",15),1,15)_"  "_$E($S($P(DATA,U,5):$P($G(^RCY(344,+DATA,0)),U),1:"")_$J("",15),1,15)_"  "
 | 
|---|
| 113 |  .. S ^TMP($J,"RCXM",CT)=^TMP($J,"RCXM",CT)_$J($S($P(DATA,U,3):+$P(DATA,U,2),1:0),"",2)
 | 
|---|
| 114 |  . I $P(DATA,U,4) S CT=CT+1,^TMP($J,"RCXM",CT)="    ERROR # REFERENCED ABOVE : "_$P(DATA,U,4)
 | 
|---|
| 115 |  . S T=0 F  S T=$O(^TMP($J,"RC1",Z,T)) Q:'T  S T0=$G(^(T)) D
 | 
|---|
| 116 |  .. S CT=CT+1
 | 
|---|
| 117 |  .. S ^TMP($J,"RCXM",CT)=$J("",5)_$E($P(T0,U,4)_$J("",20),1,20)_"  "_$P(T0,U,2)_"/"_$P(T0,U,3)
 | 
|---|
| 118 |  .. S CT=CT+1,^TMP($J,"RCXM",CT)=$J("",10)_"PAYMENT AMOUNT: "_$J(+$P(T0,U,7),"",2)_"  MATCH STATUS: "_$$EXTERNAL^DILFD(344.31,.08,,$P(T0,U,8))
 | 
|---|
| 119 |  .. S:$O(^TMP($J,"RCDPETOT",344.3,Z)) CT=CT+1,^TMP($J,"RCXM",CT)=" "
 | 
|---|
| 120 |  . I $P(DATA,U,3) S ^TMP("RCDAILYACT",$J,DT,Z)=Z0
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  K ^TMP($J,"RC1")
 | 
|---|
| 123 |  I $O(^TMP("RCDAILYACT",$J,0)) D  ; Daily activity rep automatic bulletin
 | 
|---|
| 124 |  . N XMBODY,XMB,XMINSTR,XMTYPE,XMFULL,XMTO,XMZ,XMERR,XMSUBJ
 | 
|---|
| 125 |  . K ^TMP($J,"RCDPE_DAR")
 | 
|---|
| 126 |  . D RPT1^RCDPEDAR(1,0,DT,DT)
 | 
|---|
| 127 |  . K ^TMP("RCDAILYACT",$J)
 | 
|---|
| 128 |  . Q:'$O(^TMP($J,"RCDPE_DAR",0))
 | 
|---|
| 129 |  . S XMTO("I:G.RCDPE PAYMENTS")=""
 | 
|---|
| 130 |  . S XMBODY="^TMP($J,""RCDPE_DAR"")"
 | 
|---|
| 131 |  . S XMSUBJ="EDI LBOX - AUTO DAILY ACTIVITY SUMMARY - "_$$FMTE^XLFDT(DT,2)
 | 
|---|
| 132 |  . D  ;
 | 
|---|
| 133 |  .. N DUZ
 | 
|---|
| 134 |  .. S DUZ=.5,DUZ(0)="@"
 | 
|---|
| 135 |  .. D SENDMSG^XMXAPI(.5,XMSUBJ,XMBODY,.XMTO,,.XMZ)
 | 
|---|
| 136 |  . K ^TMP($J,"RCDPE_DAR")
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 | HDR(CT,HD) ; Header array set
 | 
|---|
| 140 |  ; CT = line count, passed by reference
 | 
|---|
| 141 |  ; HD = flag returned as 1 so the header is only output once
 | 
|---|
| 142 |  N Q
 | 
|---|
| 143 |  S CT=CT+1,^TMP($J,"RCXM",CT)=" "
 | 
|---|
| 144 |  S CT=CT+1,^TMP($J,"RCXM",CT)=$J("",20)_"********** EFT DEPOSIT RECORDS **********"
 | 
|---|
| 145 |  S CT=CT+1,^TMP($J,"RCXM",CT)="  EFT DEPOSIT      EFT RECEIPT      POSTED AMOUNT"
 | 
|---|
| 146 |  S CT=CT+1,^TMP($J,"RCXM",CT)=" "
 | 
|---|
| 147 |  S CT=CT+1,^TMP($J,"RCXM",CT)="     TRACE #               PAYER NAME/ID"
 | 
|---|
| 148 |  S CT=CT+1,Q="",$P(Q,"=",79)="",^TMP($J,"RCXM",CT)=Q
 | 
|---|
| 149 |  S HD=1
 | 
|---|
| 150 |  Q
 | 
|---|
| 151 |  ;
 | 
|---|