- RCDPTAR ;ALB/TJB - EFT TRANSACTION AUDIT REPORT ;1/02/15
- ;;4.5;Accounts Receivable;**303,321,326,380,371,424**;Mar 20, 1995;Build 11
- ;;Per VA Directive 6402, this routine should not be modified.
- ;
- Q
- ; PRCA*4.5*303 - EFT TRANSACTION AUDIT REPORT
- ;
- ; Executed by the option "EFT Transaction Audit Report" from the "EDI Lockbox Reports Menu"
- ;
- ; DESCRIPTION: The following generates a report that displays an audit history for an EFT
- ;
- EN ; Main entry point for this report
- ; Ask Summary or Detail output
- ;
- N DIR,DIRUT,DIROUT,DTOUT,DUOUT,RCREP,RCREP2,X,Y
- W !
- S DIR(0)="SOA^S:Summary Information Only;D:Detail Report"
- S DIR("A")="(S)ummary or (D)etail Report format? "
- S DIR("B")="SUMMARY"
- D ^DIR
- I $D(DTOUT)!$D(DUOUT)!(Y="") Q
- S RCREP=Y
- ;
- ; PRCA*4.5*380 - Ask if display sum. rpt. by Dep. Date or Dep. Num.
- S RCREP2=0
- S:RCREP="S" RCREP2=$$ASKSUM2()
- Q:RCREP2=-1
- ;
- I RCREP="S",RCREP2=1 D SUM^RCDPTAR1
- I RCREP="S",RCREP2=2 D SUM2^RCDPTAR1
- I RCREP="D" D DET
- Q
- ;
- ; PRCA*4.5*380 - New Subroutine added
- ASKSUM2() ; Ask the user if they want to display the summary report by Deposit Date
- ; or by Deposit Number
- ; Input: None
- ; Returns: -1 - User quit or timed out
- ; 1 - Display Summary report by Deposit Date
- ; 2 - Display Summary report by Deposit Number
- N DIR,DIRUT,DIROUT,DTOUT,DUOUT,X,Y
- S DIR(0)="SOA^EFTS:EFTS by Date;DATE:Deposit Number"
- S DIR("A")="(E)FTs by Date or (D)eposit? "
- S DIR("B")="DEPOSIT"
- D ^DIR
- I $D(DTOUT)!$D(DUOUT) Q -1
- I $E(Y,1)="E" Q 1
- Q 2
- ;
- DET ; Entry point for detailed report
- ; Input: variable RCREP defined and equal to "D"
- ; Output: Written to device
- ;
- N RCDATA,RCDET
- ;
- DET1 ; Prompt for user selection criteria
- K DIR
- S DIR(0)="SO^N:Deposit Number;D:Deposit Date;R:Receipt Number;T:Trace Number;F:FMS Document Number"
- ; PRCA*4.5*424 - Begin changed block - Add search by FMS document number
- S DIR("PRE")="S:X?1N X=$S(X=1:""N"",X=2:""D"",X=3:""R"",X=4:""T"",X=5:""F"",1:""X"")"
- S DIR("L",1)="Search for EFT Number by:"
- S DIR("L",2)=""
- S DIR("L",3)=" 1. Deposit (N)umber"
- S DIR("L",4)=" 2. Deposit (D)ate"
- S DIR("L",5)=" 3. (R)eceipt #"
- S DIR("L",6)=" 4. (T)race #"
- S DIR("L")=" 5. (F)MS Document Number"
- S DIR("A")="Search for EFT by"
- ; End PRCA*4.5*424 changes
- D ^DIR
- I $D(DTOUT)!$D(DUOUT)!(Y="") Q ;PRCA*4.5*371 Changed G DETQ to Q
- S RCDET=Y
- ;
- ; Do lookup of EFTs based on the user selection above
- S RCDATA=""
- ; PRCA*4.5*424 - Move subroutine RC to RCDPTAR2 for size and add FMS doc ID search
- D @($S(RCDET="N":"DN",RCDET="D":"DT",RCDET="R"!(RCDET="F"):"RC^RCDPTAR2",1:"TR")_"(.RCDATA)")
- ;PRCA*4.5*371 Moved lines that were here to new method SHOWONE
- Q
- ;
- SHOWONE(STOP) ; Prompt for device and output data for one EFT
- ; Input: STOP - Initially set to 0
- ; Output: STOP - 1 user entered '^', 0 otherwise
- ;PRCA*4.5*371 - Added Method
- N %ZIS,ZTSK,ZTRTN,ZTIO,ZTDESC,ZTSAVE,POP
- S %ZIS="QM"
- D ^%ZIS
- S STOP=POP
- Q:POP
- I $D(IO("Q")) D Q
- . S ZTRTN="RUN^RCDPTAR(RCDATA)"
- . S ZTIO=ION
- . S ZTSAVE("*")=""
- . S ZTDESC="EFT TRANSACTION SUMMARY REPORT"
- . D ^%ZTLOAD
- . W !,$S($D(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
- . D HOME^%ZIS
- U IO
- D RUN(RCDATA)
- Q
- ;
- RUN(RCDATA) ; Compile and output the report
- ; Input: RCDATA - see subroutine EFTDA for delimited list of fields
- ; Output: none
- ;
- ; Compile Data
- D COMPILE(RCDATA)
- ;
- ; Generate Report
- D REPORT(RCDATA)
- ;
- K ^TMP("RCDPTAR",$J)
- Q
- ;
- DN(RCDATA) ; Lookup by Deposit Number
- ; Input: RCDATA - null on entry
- ; Output: RCDATA - passed by refence - see subroutine EFTDATA for delimited list of fields
- ; Note variable RCDEFLUP is needed by LOOKUP^RCDPUDEP, which is called by the .01 field
- ;
- N DIC,DTOUT,DUOUT,LOCKIEN,RCDEFLUP,STOP,USERDN,Y ;PRCA*4.5*371 Added STOP
- S STOP=0 ;PRCA*4.5*371 Added line
- ;
- DN2 ; Lookup Deposit Number ;PRCA*4.5*371 Added looping Tag
- W !
- S DIC="^RCY(344.1,",DIC(0)="QEAMn",DIC("A")="Select DEPOSIT: ",DIC("W")="D DICW^RCDPUDEP"
- S RCDEFLUP=1
- D ^DIC
- I $G(DTOUT)!$G(DUOUT)!(Y=-1) S RCDATA=-1 Q
- ;
- S LOCKIEN=+$O(^RCY(344.3,"ARDEP",+Y,""))
- I 'LOCKIEN D G DN2 ;PRCA*4.5*371 Changed Q to G DN2
- . W !!,"EFT NOT FOUND - please check Deposit"
- . D PAUSE
- ;
- ; Get EFT pointer
- S RCDATA=$$EFT(LOCKIEN)
- ;
- ;PRCA*4.5*371 - Added lines Begin
- Q:RCDATA=-1
- Q:RCDATA="" ; No EFTs found
- D SHOWONE(.STOP) ; Display output
- Q:STOP
- G DN2
- ;PRCA*4.5*371 - Added lines End
- Q
- ;
- DT(RCDATA) ; Deposit Date
- ; Input: RCDATA - null on entry
- ; Output: RCDATA - passed by refence - see subroutine EFTDATA for delimited list of fields
- ;
- ;PRCA*4.5*371 Added STOP below
- N CNT,DATA,DEPIEN,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ITEM,LINE,LIST,RCDT,RCI,RCIEN,STOP,X,Y
- S STOP=0 ;PRCA*4.5*371 Added line
- ;
- DT1 ; Ask the user for the Deposit Date
- K DIR
- S DIR(0)="DAO^:"_DT_":APE",DIR("B")="T"
- S DIR("A")="Select DEPOSIT DATE: "
- D ^DIR
- I $D(DTOUT)!$D(DUOUT) S RCDATA=-1 Q
- S RCDT=Y
- ;
- ; Build List
- K LIST
- S RCI="",CNT=0
- F S RCI=$O(^RCY(344.3,"ADEP",RCDT,RCI)) Q:RCI="" D
- . S RCIEN=""
- . F S RCIEN=$O(^RCY(344.3,"ADEP",RCDT,RCI,RCIEN)) Q:RCIEN="" D
- . . S DEPIEN=$P($G(^RCY(344.3,RCIEN,0)),U,3)
- . . I DEPIEN="" Q
- . . S DATA=$G(^RCY(344.1,DEPIEN,0))
- . . I DATA="" Q
- . . S CNT=CNT+1
- . . ; Code below is similiar to DICW^RCDPUDEP code
- . . S LINE=$J(CNT,3)_". "_$P(DATA,U,1)
- . . S $E(LINE,19)="by: "_$E($P($G(^VA(200,+$P(DATA,"^",6),0)),"^"),1,15)
- . . I '$P(DATA,"^",7) S $P(DATA,"^",7)="???????"
- . . S $E(LINE,39)="on: "_$E($P(DATA,"^",7),4,5)_"/"_$E($P(DATA,"^",7),6,7)_"/"_$E($P(DATA,"^",7),2,3)
- . . S $E(LINE,52)="amt: $"_$J($P(DATA,"^",4),10,2)
- . . S $E(LINE,70)=$P("N/A^OPEN^DEPOSITED^CONFIRMED^PROCESSED^VOID","^",+$P(DATA,"^",12)+1)
- . . S LIST(CNT)=RCIEN_"^"_$P(DATA,U,1)_"^"_LINE
- ;
- ; If no deposits in the LIST, display a message and try again
- I CNT=0 D G DT1
- . W !,"Date ",$$DATE^RCDPRU(RCDT)," does not have any valid deposits, please try again...",!
- ;
- ; If only one deposit in the list, use it
- I CNT=1 D Q:STOP G DT1 ;PRCA*4.5*371 Changed Q to Q:STOP G DT1
- . S RCDATA=$$EFT(+LIST(CNT))
- . ;
- . ;PRCA*4.5*371 Begin Added lines
- . Q:RCDATA=-1
- . Q:RCDATA="" ; No EFTs found
- . D SHOWONE(.STOP) ; Display output
- . ;PRCA*4.5*371 End Added lines
- ;
- DT2 ; Multiple entries found so prompt for the one that is wanted ;PRCA*4.5*371 Added looping Tag
- W !!,"Deposits on ",$$DATE^RCDPRU(RCDT)
- K DIR,ITEM
- S DIR(0)="SAO^"
- S DIR("A")="Select DEPOSIT: "
- S DIR("L",1)=" Choose from:"
- F LINE=1:1:CNT D
- . S DATA=LIST(LINE),DIR(0)=DIR(0)_LINE_":"_$P(DATA,U,2)_";"
- . S DIR("L",LINE+1)=$P(DATA,U,3),ITEM(LINE)=+DATA
- . W !," ",$P(DATA,U,3)
- S DIR(0)=$E(DIR(0),1,$L(DIR(0))-1)
- S DIR("L")=DIR("L",CNT+1) K DIR("L",CNT+1)
- W !
- D ^DIR
- I $D(DTOUT)!$D(DUOUT) S RCDATA=-1 Q
- I Y="" G DT1
- S RCDATA=$$EFT(ITEM(Y))
- ;
- ;PRCA*4.5*371 - Added lines Begin
- Q:RCDATA=-1
- Q:RCDATA="" ; No EFTs found
- D SHOWONE(.STOP) ; Display output
- Q:STOP
- G DT2
- ;PRCA*4.5*371 - Added lines End
- Q
- ;
- TR(RCDATA) ; Lookup by Trace Number
- ; Input: RCDATA - null on entry
- ; Output: RCDATA - passed by refence - see subroutine EFTDATA for delimited list of fields
- N D,DIC,DTOUT,DUOUT,STOP,X,Y ;PRCA*4.5*371 Added STOP
- S STOP=0 ;PRCA*4.5*371 Added line
- ;
- TR2 ; Use "F" index in EDI EFT Detail file ;PRCA*4.5*371 Added looping Tag
- W !
- S DIC="^RCY(344.31,",DIC(0)="QEASn",D="F",DIC("A")="Select TRACE: "
- ; DIC("W") may need to be fixed if Trace numbers go over 32 characters. The fields
- ; displayed are the EFT#, Insurance company name, amount and Date Recieved.
- S DIC("W")="D EN^DDIOL($J($P(^(0),U,1),7)_"" ""_$$LJ^XLFSTR($E($P(^(0),U,2),1,20),20)_$J(($S($P(^(0),U,16)=""D"":""-"",1:"""")_$P(^(0),U,7)),10)_"" ""_$$DATE^RCDPRU($P(^(0),U,13)),,""?32"")"
- D IX^DIC
- I $D(DTOUT)!$D(DUOUT)!(Y=-1) S RCDATA=-1 Q
- S RCDATA=$$EFTDATA(+Y)
- ;
- ;PRCA*4.5*371 - Added lines Begin
- Q:RCDATA=-1
- Q:RCDATA="" ; No EFTs found
- D SHOWONE(.STOP) ; Display output
- Q:STOP
- G TR2
- ;PRCA*4.5*371 - Added lines End
- Q
- ;
- EFT(LOCKIEN) ; Select a single EFT Number
- ; Input: LOCKIEN - IEN for LOCKBOX DEPOSIT (#344.3)
- ; Return: LIST(Y) - Delimiter list of information as returned by suboutine EFTDATA
- ;
- I '$G(LOCKIEN) W !!,"No EFT detail for this selection" D PAUSE Q ""
- ;
- N EFTIEN,CNT,DATA,LIST,Y
- ;
- S EFTIEN="",CNT=0
- F S EFTIEN=$O(^RCY(344.31,"B",LOCKIEN,EFTIEN)) Q:EFTIEN="" D ;
- . S DATA=$$EFTDATA(EFTIEN) I DATA]"" S CNT=CNT+1,LIST(CNT)=DATA
- ;
- I CNT=0 W !!,"No EFT detail for this selection" D PAUSE Q ""
- ;
- ; If only one EFT, select it and quit
- I CNT=1 S Y=1 G EFT1
- ;
- ; Display and the let the user select the EFT
- N DIR,DIRUT,DIROUT,DTOUT,DUOUT,ROW,TRANS,X
- S DIR(0)="SO^"
- S DIR("A")="Select item from list"
- S DIR("L",1)="Select single EFT:"
- F ROW=1:1:CNT-1 D
- . S DATA=LIST(ROW),LOCKIEN=$P(DATA,U,2),EFTIEN=$P(DATA,U,3),TRANS=$$GET1^DIQ(344.31,EFTIEN_",",.01,"I")
- . S DIR(0)=DIR(0)_ROW_":"_TRANS_";"
- . S DIR("L",(ROW+1))=$J(ROW,3)_". "_TRANS_$$DISPLAY(EFTIEN,LOCKIEN) ; PRCA*4.5*326
- S DATA=LIST(CNT),LOCKIEN=$P(DATA,U,2),EFTIEN=$P(DATA,U,3),TRANS=$$GET1^DIQ(344.31,EFTIEN_",",.01,"I")
- S DIR(0)=DIR(0)_CNT_":"_TRANS
- S DIR("L")=$J(CNT,3)_". "_TRANS_$$DISPLAY(EFTIEN,LOCKIEN) ; PRCA*4.5*326
- D ^DIR
- I $D(DTOUT)!$D(DUOUT)!(Y="") Q -1
- ;
- EFT1 ;
- Q LIST(Y)
- ;
- EFTDATA(EFTIEN) ; Get associated records for this EFT
- ; Input: EFTIEN - IEN for EFT [344.31]
- ; Returns: A1^A2^A3^A4^45
- ; where A1=ERAIEN - IEN for ERA (#344.4)
- ; A2=LOCKIEN - IEN for LOCKBOX DEPOSIT (#344.3)
- ; A3=EFTIEN - IEN for EFT (#344.31)
- ; A4=DEPIEN - IEN for AR DEPOSIT (#344.1)
- ; A5=BATCHIEN - IEN for AR BATCH PAYMENT (#344)
- ;
- I '$G(EFTIEN) Q ""
- ;
- N BATCHIEN,DEPIEN,ERAIEN,LOCKIEN ;PRCA*4.5*321 removed DEPOSIT
- S (ERAIEN,DEPIEN,BATCHIEN)=""
- S ERAIEN=$$GET1^DIQ(344.31,EFTIEN,.1,"I") ;PRCA*4.5*321 use ^DIQ vs global access
- S LOCKIEN=$$GET1^DIQ(344.31,EFTIEN,.01,"I") ;PRCA*4.5*321
- I LOCKIEN S DEPIEN=$$GET1^DIQ(344.3,LOCKIEN,.03,"I") ;PRCA*4.5*321 instead of $O on B index of 344.1
- I DEPIEN S BATCHIEN=$O(^RCY(344,"AD",DEPIEN,""))
- Q ERAIEN_U_LOCKIEN_U_EFTIEN_U_DEPIEN_U_BATCHIEN
- ;
- DISPLAY(EFTIEN,LOCKIEN) ; Display EFT detail during user selection process
- ; Input: EFTIEN - IEN for EFT (#344.31)
- ; LOCKIEN - IEN for LOCKBOX DEPOSIT (#344.3)
- ; Return: X1_" "_X2_" "_X3_" "_X4_" "_X5
- ; where X1=PAYER NAME
- ; X2=TRACE NUMBER
- ; X3=AMOUNT OF PAYMENT
- ; X4=DEPOSIT NUMBER
- ; X5=DEPOSIT DATE
- N SUFX,X ; Added Suffix - PRCA*4.5*326
- S EFTIEN=$G(EFTIEN)
- S LOCKIEN=$G(LOCKIEN)
- S SUFX=$$GET1^DIQ(344.31,EFTIEN_",",.14) ; PRCA*4.5*326
- S:SUFX SUFX="."_SUFX ; PRCA*4.5*326
- S X=SUFX_$J("",4-$L(SUFX)) ; PRCA*4.5*326
- S X=X_$$GET1^DIQ(344.31,EFTIEN_",",.02)_" "_$$GET1^DIQ(344.31,EFTIEN_",",.04)_" " ; PRCA*4.5*326
- S X=X_$$GET1^DIQ(344.31,EFTIEN_",",.07)_" "_$$GET1^DIQ(344.3,LOCKIEN_",",.06)_" "
- S X=X_$$DATE^RCDPRU($$GET1^DIQ(344.3,LOCKIEN_",",.07,"I"),"2DZ")
- Q X
- ;
- COMPILE(RCDATA) ; Compile data for display
- ; Input: RCDATA - see subroutine EFTDA for delimited list of fields
- ; Output: ^TMP("RCDPTAR",$J)
- ;
- I $G(RCDATA)="" Q
- ;
- N BATCHIEN,DEPDATE,DEPIEN,EFTIEN,ERAIEN,FILEDATE,FMSDOCNO,IENS,LASTIEN,LINE,LOCKIEN
- N MATCHDATE,MATCHIEN,PROCDATE,STATUS,TRANS
- K ^TMP("RCDPTAR",$J)
- ;
- ; Get Pointers from RCDATA
- S ERAIEN=$P(RCDATA,U,1),LOCKIEN=$P(RCDATA,U,2),EFTIEN=$P(RCDATA,U,3)
- S DEPIEN=$P(RCDATA,U,4),BATCHIEN=$P(RCDATA,U,5)
- ;
- ; Get Inital Creation/Deposit information
- K RCDATA
- I LOCKIEN D
- . D GETS^DIQ(344.3,LOCKIEN_",",".02;.06;.08","IE","RCDATA")
- . S FILEDATE=$G(RCDATA(344.3,LOCKIEN_",",.02,"I"))
- . I 'FILEDATE Q
- . S ^TMP("RCDPTAR",$J,FILEDATE,1)="DEP#:"_$G(RCDATA(344.3,LOCKIEN_",",.06,"E"))_" DEP AMT:"_$G(RCDATA(344.3,LOCKIEN_",",.08,"E"))_"^EFT STATUS:RECEIVED"
- ;
- ; Check if posted to revenue code 8NZZ
- S TRANS=$$GET1^DIQ(344.31,EFTIEN_",",.14)
- I TRANS,$D(^RCY(344,+BATCHIEN,1,TRANS,0)),LOCKIEN,$D(RCDATA(344.3,LOCKIEN_",")) D
- . S DEPDATE=$$GET1^DIQ(344.1,DEPIEN_",",.07,"I")
- . I 'DEPDATE Q
- . S ^TMP("RCDPTAR",$J,DEPDATE,2)="DEP#:"_$G(RCDATA(344.3,LOCKIEN_",",.06,"E"))_" DEP AMT:"_$G(RCDATA(344.3,LOCKIEN_",",.08,"E"))_"^DEP STATUS:POSTED TO 8NZZ"
- ;
- ; Get Match Status History information
- I EFTIEN D
- . ; Get the Last IEN of the multiple
- . S LASTIEN=$O(^RCY(344.31,EFTIEN,4,999999),-1)
- . ; Loop through history and build data
- . S MATCHIEN=0 F S MATCHIEN=$O(^RCY(344.31,EFTIEN,4,MATCHIEN)) Q:'MATCHIEN D
- .. S IENS=MATCHIEN_","_EFTIEN_","
- .. D GETS^DIQ(344.314,IENS,"*","IE","RCDATA")
- .. S MATCHDATE=$G(RCDATA(344.314,IENS,.02,"I"))
- .. I MATCHDATE="" Q
- .. S STATUS=$G(RCDATA(344.314,IENS,.01,"E"))
- .. I STATUS="MATCHED WITH ERRORS" S STATUS="MATCHED W/ERRORS"
- .. S LINE="EFT STATUS:"_STATUS
- .. ; If this is the last record and the status is matched, add the ERA record to the data
- .. I MATCHIEN=LASTIEN,STATUS="MATCHED"!(STATUS="MATCHED W/ERRORS"),$$GET1^DIQ(344.31,EFTIEN_",",.1) S LINE=LINE_" ERA#:"_$$GET1^DIQ(344.31,EFTIEN_",",.1)
- .. S ^TMP("RCDPTAR",$J,MATCHDATE,3)=LINE_"^BY "_$E($G(RCDATA(344.314,IENS,.03,"E")),1,14)_" on "_$$DATE^RCDPRU(MATCHDATE,"2ZD")
- ;
- ; Get Receipt information (EFT)
- I BATCHIEN D
- . S PROCDATE=$$GET1^DIQ(344,BATCHIEN_",",.08,"I")
- . I 'PROCDATE Q
- . I $G(DEPDATE),PROCDATE<DEPDATE S PROCDATE=DEPDATE ;PRCA*4.5*321 add $G
- . S FMSDOCNO=$$FMSSTAT^RCDPUREC(BATCHIEN)
- . S ^TMP("RCDPTAR",$J,PROCDATE,5)="DEP RCPT#:"_$$GET1^DIQ(344,BATCHIEN_",",.01,"E")_" ENTRY#:"_BATCHIEN_"^FMS DOC#:"_$P(FMSDOCNO,U,1)_"^^DOC STATUS:"_$E($P(FMSDOCNO,U,2),1,18)
- ;
- ; Get Receipt information (ERA)
- S BATCHIEN=$$GET1^DIQ(344.4,ERAIEN_",",.08,"I")
- I BATCHIEN D
- . S PROCDATE=$$GET1^DIQ(344,BATCHIEN_",",.08,"I")
- . I $G(DEPDATE),PROCDATE<DEPDATE S PROCDATE=DEPDATE ; PRCA*4.5*321 add $G
- . I 'PROCDATE Q
- . S FMSDOCNO=$$FMSSTAT^RCDPUREC(BATCHIEN)
- . ;S ^TMP("RCDPTAR",$J,PROCDATE,6)="RCPT#:"_$$GET1^DIQ(344,BATCHIEN_",",.01,"E")_" EFT DETAIL#:"_EFTIEN_"^BY "_$E($$GET1^DIQ(344,BATCHIEN_",",.02,"E"),1,14)_" on "_$$DATE^RCDPRU(PROCDATE,"2DZ")
- . S ^TMP("RCDPTAR",$J,PROCDATE,6)="RCPT#:"_$$GET1^DIQ(344,BATCHIEN_",",.01,"E")_"^BY "_$E($$GET1^DIQ(344,BATCHIEN_",",.02,"E"),1,14)_" on "_$$DATE^RCDPRU(PROCDATE,"2DZ")
- . S ^TMP("RCDPTAR",$J,PROCDATE,7)="FMS DOC#:"_$P(FMSDOCNO,U,1)_"^DOC STATUS:"_$E($P(FMSDOCNO,U,2),1,18)
- Q
- ;
- REPORT(RCDATA) ; Print out the report
- ; Input: RCDATA - see subroutine EFTDA about for delimited list of fields
- ; Output: Write statements
- ;
- N CNT,DATE,DATA,LINES,RCHR,RCNOW,RCPG,RCSCR
- ;
- ; Initialize Report Date, Page Number and String of underscores
- S RCSCR=$S($E($G(IOST),1,2)="C-":1,1:0)
- S RCNOW=$$UP^XLFSTR($$NOW^RCDPRU()),RCPG=0,RCHR="",$P(RCHR,"-",IOM+1)=""
- ;
- U IO
- D HEADER(RCNOW,.RCPG,RCHR,RCDATA)
- I $G(RCDATA)=""!'$D(^TMP("RCDPTAR",$J)) W !,"No data found"
- ;
- ; Display the detail
- S DATE="" F S DATE=$O(^TMP("RCDPTAR",$J,DATE)) Q:'DATE D I RCPG=0 Q
- . S CNT=0 F S CNT=$O(^TMP("RCDPTAR",$J,DATE,CNT)) Q:'CNT D I RCPG=0 Q
- .. S DATA=^TMP("RCDPTAR",$J,DATE,CNT)
- .. S LINES=1
- .. I $P(DATA,U,3)]""!($P(DATA,U,4)]"") S LINES=2
- .. I RCSCR S LINES=LINES+1
- .. D CHKP(RCNOW,.RCPG,RCHR,RCDATA,RCSCR,LINES) I RCPG=0 Q
- .. W !,$$DATE^RCDPRU(DATE,"2DZ"),?10,$P(DATA,U,1),?51,$P(DATA,U,2)
- .. I $P(DATA,U,3)]""!($P(DATA,U,4)]"") W !,?10,$P(DATA,U,3),?51,$P(DATA,U,4)
- ;
- I 'RCSCR W !,@IOF
- I $D(ZTQUEUED) S ZTREQ="@" Q
- D ^%ZISC
- ;
- ; PRCA*4.5*371 - STOP if user enters '^'
- I RCPG,RCSCR S STOP=$S('$$PAUSE():1,1:0)
- Q
- ;
- ; Input: RCNOW - DATE/TIME in external format
- ; RCPG - Current page number
- ; RCHR - Line of "-" to margin width
- ; RCDATA - See subroutine EFTDA about for delimited list of fields
- ; Output: Write statements
- ;
- N EFTDATA,LINE
- S EFTDATA=$G(^RCY(344.31,+$P(RCDATA,U,3),0))
- ;
- W @IOF
- S RCPG=RCPG+1
- W "EFT TRANSACTION AUDIT REPORT"
- S LINE=RCNOW_" PAGE: "_RCPG_" "
- W ?(IOM-$L(LINE)),LINE
- ; Added EFT line identifier nnn.nn - PRCA*4.5*326
- W !,"EFT#: ",$$AGED(+$P(RCDATA,U,3)),$$GET1^DIQ(344.31,$P(RCDATA,U,3)_",",.01,"E"),?19,"DEPOSIT#: ",$P($G(^RCY(344.3,+$P(RCDATA,U,2),0)),U,6),?42,"EFT TOTAL AMT: "_$S($P(EFTDATA,U,16)="D":"-",1:"")_$P(EFTDATA,U,7)
- W !,"EFT TRACE#: ",$P(EFTDATA,U,4)
- W !,"DATE RECEIVED: ",$$DATE^RCDPRU($P(EFTDATA,U,12)),?26,"PAYER/ID: "_$P(EFTDATA,U,2)_"/"_$P(EFTDATA,U,3)
- ;
- W !,"DATE",?10,"ACTION/DETAILS",?51,"STATUS"
- W !,RCHR
- Q
- ;
- PAUSE() ; Pause at end of each page for user input
- ; Input: None
- ; Output: User response
- ;
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- S DIR(0)="E"
- D ^DIR
- Q Y
- ;
- CHKP(RCNOW,RCPG,RCHR,RCDATA,RCSCR,LINES) ; Check if we need to do a page break
- ; Input: RCNOW - DATE/TIME in external format
- ; RCPG - Current page number
- ; RCHR - Line of "-" to margin width
- ; RCDATA - See subroutine EFTDA about for delimited list of fields
- ; RCSCR - 1 - Output is going to the users screen, 0 - to printer
- ; LINES - Current line count
- ;
- I $Y'>(IOSL-LINES) Q
- I RCSCR,'$$PAUSE S RCPG=0 Q
- D HEADER(RCNOW,.RCPG,RCHR,RCDATA)
- Q
- ;
- AGED(EFTIEN) ; Check if EFT is locked or stale
- ; Input
- ; EFTIEN: IEN of EDI THIRD PARTY EFT DETAIL (#344.31)
- ; Output
- ; "*" - Warning; "**" - Error; Null - Good
- N DAYSLIMT,RECVDT,TRARRY
- S RECVDT=$$GET1^DIQ(344.31,EFTIEN_",",.13,"I")
- I RECVDT<$$CUTOFF^RCDPEWLP Q "" ; EFTs 2 months older than *298 installation do not lock the system
- S DAYSLIMT("M")=$$GET1^DIQ(344.61,1,.06),DAYSLIMT("P")=$$GET1^DIQ(344.61,1,.07)
- D CHKEFT^RCDPEWLP(RECVDT,EFTIEN,"B",.DAYSLIMT,.TRARRY)
- I $D(TRARRY("ERROR")) Q "**"
- I $D(TRARRY("WARNING")) Q "*"
- Q ""
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCDPTAR 18536 printed Apr 23, 2025@18:00:57 Page 2
- RCDPTAR ;ALB/TJB - EFT TRANSACTION AUDIT REPORT ;1/02/15
- +1 ;;4.5;Accounts Receivable;**303,321,326,380,371,424**;Mar 20, 1995;Build 11
- +2 ;;Per VA Directive 6402, this routine should not be modified.
- +3 ;
- +4 QUIT
- +5 ; PRCA*4.5*303 - EFT TRANSACTION AUDIT REPORT
- +6 ;
- +7 ; Executed by the option "EFT Transaction Audit Report" from the "EDI Lockbox Reports Menu"
- +8 ;
- +9 ; DESCRIPTION: The following generates a report that displays an audit history for an EFT
- +10 ;
- EN ; Main entry point for this report
- +1 ; Ask Summary or Detail output
- +2 ;
- +3 NEW DIR,DIRUT,DIROUT,DTOUT,DUOUT,RCREP,RCREP2,X,Y
- +4 WRITE !
- +5 SET DIR(0)="SOA^S:Summary Information Only;D:Detail Report"
- +6 SET DIR("A")="(S)ummary or (D)etail Report format? "
- +7 SET DIR("B")="SUMMARY"
- +8 DO ^DIR
- +9 IF $DATA(DTOUT)!$DATA(DUOUT)!(Y="")
- QUIT
- +10 SET RCREP=Y
- +11 ;
- +12 ; PRCA*4.5*380 - Ask if display sum. rpt. by Dep. Date or Dep. Num.
- +13 SET RCREP2=0
- +14 if RCREP="S"
- SET RCREP2=$$ASKSUM2()
- +15 if RCREP2=-1
- QUIT
- +16 ;
- +17 IF RCREP="S"
- IF RCREP2=1
- DO SUM^RCDPTAR1
- +18 IF RCREP="S"
- IF RCREP2=2
- DO SUM2^RCDPTAR1
- +19 IF RCREP="D"
- DO DET
- +20 QUIT
- +21 ;
- +22 ; PRCA*4.5*380 - New Subroutine added
- ASKSUM2() ; Ask the user if they want to display the summary report by Deposit Date
- +1 ; or by Deposit Number
- +2 ; Input: None
- +3 ; Returns: -1 - User quit or timed out
- +4 ; 1 - Display Summary report by Deposit Date
- +5 ; 2 - Display Summary report by Deposit Number
- +6 NEW DIR,DIRUT,DIROUT,DTOUT,DUOUT,X,Y
- +7 SET DIR(0)="SOA^EFTS:EFTS by Date;DATE:Deposit Number"
- +8 SET DIR("A")="(E)FTs by Date or (D)eposit? "
- +9 SET DIR("B")="DEPOSIT"
- +10 DO ^DIR
- +11 IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT -1
- +12 IF $EXTRACT(Y,1)="E"
- QUIT 1
- +13 QUIT 2
- +14 ;
- DET ; Entry point for detailed report
- +1 ; Input: variable RCREP defined and equal to "D"
- +2 ; Output: Written to device
- +3 ;
- +4 NEW RCDATA,RCDET
- +5 ;
- DET1 ; Prompt for user selection criteria
- +1 KILL DIR
- +2 SET DIR(0)="SO^N:Deposit Number;D:Deposit Date;R:Receipt Number;T:Trace Number;F:FMS Document Number"
- +3 ; PRCA*4.5*424 - Begin changed block - Add search by FMS document number
- +4 SET DIR("PRE")="S:X?1N X=$S(X=1:""N"",X=2:""D"",X=3:""R"",X=4:""T"",X=5:""F"",1:""X"")"
- +5 SET DIR("L",1)="Search for EFT Number by:"
- +6 SET DIR("L",2)=""
- +7 SET DIR("L",3)=" 1. Deposit (N)umber"
- +8 SET DIR("L",4)=" 2. Deposit (D)ate"
- +9 SET DIR("L",5)=" 3. (R)eceipt #"
- +10 SET DIR("L",6)=" 4. (T)race #"
- +11 SET DIR("L")=" 5. (F)MS Document Number"
- +12 SET DIR("A")="Search for EFT by"
- +13 ; End PRCA*4.5*424 changes
- +14 DO ^DIR
- +15 ;PRCA*4.5*371 Changed G DETQ to Q
- IF $DATA(DTOUT)!$DATA(DUOUT)!(Y="")
- QUIT
- +16 SET RCDET=Y
- +17 ;
- +18 ; Do lookup of EFTs based on the user selection above
- +19 SET RCDATA=""
- +20 ; PRCA*4.5*424 - Move subroutine RC to RCDPTAR2 for size and add FMS doc ID search
- +21 DO @($SELECT(RCDET="N":"DN",RCDET="D":"DT",RCDET="R"!(RCDET="F"):"RC^RCDPTAR2",1:"TR")_"(.RCDATA)")
- +22 ;PRCA*4.5*371 Moved lines that were here to new method SHOWONE
- +23 QUIT
- +24 ;
- SHOWONE(STOP) ; Prompt for device and output data for one EFT
- +1 ; Input: STOP - Initially set to 0
- +2 ; Output: STOP - 1 user entered '^', 0 otherwise
- +3 ;PRCA*4.5*371 - Added Method
- +4 NEW %ZIS,ZTSK,ZTRTN,ZTIO,ZTDESC,ZTSAVE,POP
- +5 SET %ZIS="QM"
- +6 DO ^%ZIS
- +7 SET STOP=POP
- +8 if POP
- QUIT
- +9 IF $DATA(IO("Q"))
- Begin DoDot:1
- +10 SET ZTRTN="RUN^RCDPTAR(RCDATA)"
- +11 SET ZTIO=ION
- +12 SET ZTSAVE("*")=""
- +13 SET ZTDESC="EFT TRANSACTION SUMMARY REPORT"
- +14 DO ^%ZTLOAD
- +15 WRITE !,$SELECT($DATA(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
- +16 DO HOME^%ZIS
- End DoDot:1
- QUIT
- +17 USE IO
- +18 DO RUN(RCDATA)
- +19 QUIT
- +20 ;
- RUN(RCDATA) ; Compile and output the report
- +1 ; Input: RCDATA - see subroutine EFTDA for delimited list of fields
- +2 ; Output: none
- +3 ;
- +4 ; Compile Data
- +5 DO COMPILE(RCDATA)
- +6 ;
- +7 ; Generate Report
- +8 DO REPORT(RCDATA)
- +9 ;
- +10 KILL ^TMP("RCDPTAR",$JOB)
- +11 QUIT
- +12 ;
- DN(RCDATA) ; Lookup by Deposit Number
- +1 ; Input: RCDATA - null on entry
- +2 ; Output: RCDATA - passed by refence - see subroutine EFTDATA for delimited list of fields
- +3 ; Note variable RCDEFLUP is needed by LOOKUP^RCDPUDEP, which is called by the .01 field
- +4 ;
- +5 ;PRCA*4.5*371 Added STOP
- NEW DIC,DTOUT,DUOUT,LOCKIEN,RCDEFLUP,STOP,USERDN,Y
- +6 ;PRCA*4.5*371 Added line
- SET STOP=0
- +7 ;
- DN2 ; Lookup Deposit Number ;PRCA*4.5*371 Added looping Tag
- +1 WRITE !
- +2 SET DIC="^RCY(344.1,"
- SET DIC(0)="QEAMn"
- SET DIC("A")="Select DEPOSIT: "
- SET DIC("W")="D DICW^RCDPUDEP"
- +3 SET RCDEFLUP=1
- +4 DO ^DIC
- +5 IF $GET(DTOUT)!$GET(DUOUT)!(Y=-1)
- SET RCDATA=-1
- QUIT
- +6 ;
- +7 SET LOCKIEN=+$ORDER(^RCY(344.3,"ARDEP",+Y,""))
- +8 ;PRCA*4.5*371 Changed Q to G DN2
- IF 'LOCKIEN
- Begin DoDot:1
- +9 WRITE !!,"EFT NOT FOUND - please check Deposit"
- +10 DO PAUSE
- End DoDot:1
- GOTO DN2
- +11 ;
- +12 ; Get EFT pointer
- +13 SET RCDATA=$$EFT(LOCKIEN)
- +14 ;
- +15 ;PRCA*4.5*371 - Added lines Begin
- +16 if RCDATA=-1
- QUIT
- +17 ; No EFTs found
- if RCDATA=""
- QUIT
- +18 ; Display output
- DO SHOWONE(.STOP)
- +19 if STOP
- QUIT
- +20 GOTO DN2
- +21 ;PRCA*4.5*371 - Added lines End
- +22 QUIT
- +23 ;
- DT(RCDATA) ; Deposit Date
- +1 ; Input: RCDATA - null on entry
- +2 ; Output: RCDATA - passed by refence - see subroutine EFTDATA for delimited list of fields
- +3 ;
- +4 ;PRCA*4.5*371 Added STOP below
- +5 NEW CNT,DATA,DEPIEN,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ITEM,LINE,LIST,RCDT,RCI,RCIEN,STOP,X,Y
- +6 ;PRCA*4.5*371 Added line
- SET STOP=0
- +7 ;
- DT1 ; Ask the user for the Deposit Date
- +1 KILL DIR
- +2 SET DIR(0)="DAO^:"_DT_":APE"
- SET DIR("B")="T"
- +3 SET DIR("A")="Select DEPOSIT DATE: "
- +4 DO ^DIR
- +5 IF $DATA(DTOUT)!$DATA(DUOUT)
- SET RCDATA=-1
- QUIT
- +6 SET RCDT=Y
- +7 ;
- +8 ; Build List
- +9 KILL LIST
- +10 SET RCI=""
- SET CNT=0
- +11 FOR
- SET RCI=$ORDER(^RCY(344.3,"ADEP",RCDT,RCI))
- if RCI=""
- QUIT
- Begin DoDot:1
- +12 SET RCIEN=""
- +13 FOR
- SET RCIEN=$ORDER(^RCY(344.3,"ADEP",RCDT,RCI,RCIEN))
- if RCIEN=""
- QUIT
- Begin DoDot:2
- +14 SET DEPIEN=$PIECE($GET(^RCY(344.3,RCIEN,0)),U,3)
- +15 IF DEPIEN=""
- QUIT
- +16 SET DATA=$GET(^RCY(344.1,DEPIEN,0))
- +17 IF DATA=""
- QUIT
- +18 SET CNT=CNT+1
- +19 ; Code below is similiar to DICW^RCDPUDEP code
- +20 SET LINE=$JUSTIFY(CNT,3)_". "_$PIECE(DATA,U,1)
- +21 SET $EXTRACT(LINE,19)="by: "_$EXTRACT($PIECE($GET(^VA(200,+$PIECE(DATA,"^",6),0)),"^"),1,15)
- +22 IF '$PIECE(DATA,"^",7)
- SET $PIECE(DATA,"^",7)="???????"
- +23 SET $EXTRACT(LINE,39)="on: "_$EXTRACT($PIECE(DATA,"^",7),4,5)_"/"_$EXTRACT($PIECE(DATA,"^",7),6,7)_"/"_$EXTRACT($PIECE(DATA,"^",7),2,3)
- +24 SET $EXTRACT(LINE,52)="amt: $"_$JUSTIFY($PIECE(DATA,"^",4),10,2)
- +25 SET $EXTRACT(LINE,70)=$PIECE("N/A^OPEN^DEPOSITED^CONFIRMED^PROCESSED^VOID","^",+$PIECE(DATA,"^",12)+1)
- +26 SET LIST(CNT)=RCIEN_"^"_$PIECE(DATA,U,1)_"^"_LINE
- End DoDot:2
- End DoDot:1
- +27 ;
- +28 ; If no deposits in the LIST, display a message and try again
- +29 IF CNT=0
- Begin DoDot:1
- +30 WRITE !,"Date ",$$DATE^RCDPRU(RCDT)," does not have any valid deposits, please try again...",!
- End DoDot:1
- GOTO DT1
- +31 ;
- +32 ; If only one deposit in the list, use it
- +33 ;PRCA*4.5*371 Changed Q to Q:STOP G DT1
- IF CNT=1
- Begin DoDot:1
- +34 SET RCDATA=$$EFT(+LIST(CNT))
- +35 ;
- +36 ;PRCA*4.5*371 Begin Added lines
- +37 if RCDATA=-1
- QUIT
- +38 ; No EFTs found
- if RCDATA=""
- QUIT
- +39 ; Display output
- DO SHOWONE(.STOP)
- +40 ;PRCA*4.5*371 End Added lines
- End DoDot:1
- if STOP
- QUIT
- GOTO DT1
- +41 ;
- DT2 ; Multiple entries found so prompt for the one that is wanted ;PRCA*4.5*371 Added looping Tag
- +1 WRITE !!,"Deposits on ",$$DATE^RCDPRU(RCDT)
- +2 KILL DIR,ITEM
- +3 SET DIR(0)="SAO^"
- +4 SET DIR("A")="Select DEPOSIT: "
- +5 SET DIR("L",1)=" Choose from:"
- +6 FOR LINE=1:1:CNT
- Begin DoDot:1
- +7 SET DATA=LIST(LINE)
- SET DIR(0)=DIR(0)_LINE_":"_$PIECE(DATA,U,2)_";"
- +8 SET DIR("L",LINE+1)=$PIECE(DATA,U,3)
- SET ITEM(LINE)=+DATA
- +9 WRITE !," ",$PIECE(DATA,U,3)
- End DoDot:1
- +10 SET DIR(0)=$EXTRACT(DIR(0),1,$LENGTH(DIR(0))-1)
- +11 SET DIR("L")=DIR("L",CNT+1)
- KILL DIR("L",CNT+1)
- +12 WRITE !
- +13 DO ^DIR
- +14 IF $DATA(DTOUT)!$DATA(DUOUT)
- SET RCDATA=-1
- QUIT
- +15 IF Y=""
- GOTO DT1
- +16 SET RCDATA=$$EFT(ITEM(Y))
- +17 ;
- +18 ;PRCA*4.5*371 - Added lines Begin
- +19 if RCDATA=-1
- QUIT
- +20 ; No EFTs found
- if RCDATA=""
- QUIT
- +21 ; Display output
- DO SHOWONE(.STOP)
- +22 if STOP
- QUIT
- +23 GOTO DT2
- +24 ;PRCA*4.5*371 - Added lines End
- +25 QUIT
- +26 ;
- TR(RCDATA) ; Lookup by Trace Number
- +1 ; Input: RCDATA - null on entry
- +2 ; Output: RCDATA - passed by refence - see subroutine EFTDATA for delimited list of fields
- +3 ;PRCA*4.5*371 Added STOP
- NEW D,DIC,DTOUT,DUOUT,STOP,X,Y
- +4 ;PRCA*4.5*371 Added line
- SET STOP=0
- +5 ;
- TR2 ; Use "F" index in EDI EFT Detail file ;PRCA*4.5*371 Added looping Tag
- +1 WRITE !
- +2 SET DIC="^RCY(344.31,"
- SET DIC(0)="QEASn"
- SET D="F"
- SET DIC("A")="Select TRACE: "
- +3 ; DIC("W") may need to be fixed if Trace numbers go over 32 characters. The fields
- +4 ; displayed are the EFT#, Insurance company name, amount and Date Recieved.
- +5 SET DIC("W")="D EN^DDIOL($J($P(^(0),U,1),7)_"" ""_$$LJ^XLFSTR($E($P(^(0),U,2),1,20),20)_$J(($S($P(^(0),U,16)=""D"":""-"",1:"""")_$P(^(0),U,7)),10)_"" ""_$$DATE^RCDPRU($P(^(0),U,13)),,""?32"")"
- +6 DO IX^DIC
- +7 IF $DATA(DTOUT)!$DATA(DUOUT)!(Y=-1)
- SET RCDATA=-1
- QUIT
- +8 SET RCDATA=$$EFTDATA(+Y)
- +9 ;
- +10 ;PRCA*4.5*371 - Added lines Begin
- +11 if RCDATA=-1
- QUIT
- +12 ; No EFTs found
- if RCDATA=""
- QUIT
- +13 ; Display output
- DO SHOWONE(.STOP)
- +14 if STOP
- QUIT
- +15 GOTO TR2
- +16 ;PRCA*4.5*371 - Added lines End
- +17 QUIT
- +18 ;
- EFT(LOCKIEN) ; Select a single EFT Number
- +1 ; Input: LOCKIEN - IEN for LOCKBOX DEPOSIT (#344.3)
- +2 ; Return: LIST(Y) - Delimiter list of information as returned by suboutine EFTDATA
- +3 ;
- +4 IF '$GET(LOCKIEN)
- WRITE !!,"No EFT detail for this selection"
- DO PAUSE
- QUIT ""
- +5 ;
- +6 NEW EFTIEN,CNT,DATA,LIST,Y
- +7 ;
- +8 SET EFTIEN=""
- SET CNT=0
- +9 ;
- FOR
- SET EFTIEN=$ORDER(^RCY(344.31,"B",LOCKIEN,EFTIEN))
- if EFTIEN=""
- QUIT
- Begin DoDot:1
- +10 SET DATA=$$EFTDATA(EFTIEN)
- IF DATA]""
- SET CNT=CNT+1
- SET LIST(CNT)=DATA
- End DoDot:1
- +11 ;
- +12 IF CNT=0
- WRITE !!,"No EFT detail for this selection"
- DO PAUSE
- QUIT ""
- +13 ;
- +14 ; If only one EFT, select it and quit
- +15 IF CNT=1
- SET Y=1
- GOTO EFT1
- +16 ;
- +17 ; Display and the let the user select the EFT
- +18 NEW DIR,DIRUT,DIROUT,DTOUT,DUOUT,ROW,TRANS,X
- +19 SET DIR(0)="SO^"
- +20 SET DIR("A")="Select item from list"
- +21 SET DIR("L",1)="Select single EFT:"
- +22 FOR ROW=1:1:CNT-1
- Begin DoDot:1
- +23 SET DATA=LIST(ROW)
- SET LOCKIEN=$PIECE(DATA,U,2)
- SET EFTIEN=$PIECE(DATA,U,3)
- SET TRANS=$$GET1^DIQ(344.31,EFTIEN_",",.01,"I")
- +24 SET DIR(0)=DIR(0)_ROW_":"_TRANS_";"
- +25 ; PRCA*4.5*326
- SET DIR("L",(ROW+1))=$JUSTIFY(ROW,3)_". "_TRANS_$$DISPLAY(EFTIEN,LOCKIEN)
- End DoDot:1
- +26 SET DATA=LIST(CNT)
- SET LOCKIEN=$PIECE(DATA,U,2)
- SET EFTIEN=$PIECE(DATA,U,3)
- SET TRANS=$$GET1^DIQ(344.31,EFTIEN_",",.01,"I")
- +27 SET DIR(0)=DIR(0)_CNT_":"_TRANS
- +28 ; PRCA*4.5*326
- SET DIR("L")=$JUSTIFY(CNT,3)_". "_TRANS_$$DISPLAY(EFTIEN,LOCKIEN)
- +29 DO ^DIR
- +30 IF $DATA(DTOUT)!$DATA(DUOUT)!(Y="")
- QUIT -1
- +31 ;
- EFT1 ;
- +1 QUIT LIST(Y)
- +2 ;
- EFTDATA(EFTIEN) ; Get associated records for this EFT
- +1 ; Input: EFTIEN - IEN for EFT [344.31]
- +2 ; Returns: A1^A2^A3^A4^45
- +3 ; where A1=ERAIEN - IEN for ERA (#344.4)
- +4 ; A2=LOCKIEN - IEN for LOCKBOX DEPOSIT (#344.3)
- +5 ; A3=EFTIEN - IEN for EFT (#344.31)
- +6 ; A4=DEPIEN - IEN for AR DEPOSIT (#344.1)
- +7 ; A5=BATCHIEN - IEN for AR BATCH PAYMENT (#344)
- +8 ;
- +9 IF '$GET(EFTIEN)
- QUIT ""
- +10 ;
- +11 ;PRCA*4.5*321 removed DEPOSIT
- NEW BATCHIEN,DEPIEN,ERAIEN,LOCKIEN
- +12 SET (ERAIEN,DEPIEN,BATCHIEN)=""
- +13 ;PRCA*4.5*321 use ^DIQ vs global access
- SET ERAIEN=$$GET1^DIQ(344.31,EFTIEN,.1,"I")
- +14 ;PRCA*4.5*321
- SET LOCKIEN=$$GET1^DIQ(344.31,EFTIEN,.01,"I")
- +15 ;PRCA*4.5*321 instead of $O on B index of 344.1
- IF LOCKIEN
- SET DEPIEN=$$GET1^DIQ(344.3,LOCKIEN,.03,"I")
- +16 IF DEPIEN
- SET BATCHIEN=$ORDER(^RCY(344,"AD",DEPIEN,""))
- +17 QUIT ERAIEN_U_LOCKIEN_U_EFTIEN_U_DEPIEN_U_BATCHIEN
- +18 ;
- DISPLAY(EFTIEN,LOCKIEN) ; Display EFT detail during user selection process
- +1 ; Input: EFTIEN - IEN for EFT (#344.31)
- +2 ; LOCKIEN - IEN for LOCKBOX DEPOSIT (#344.3)
- +3 ; Return: X1_" "_X2_" "_X3_" "_X4_" "_X5
- +4 ; where X1=PAYER NAME
- +5 ; X2=TRACE NUMBER
- +6 ; X3=AMOUNT OF PAYMENT
- +7 ; X4=DEPOSIT NUMBER
- +8 ; X5=DEPOSIT DATE
- +9 ; Added Suffix - PRCA*4.5*326
- NEW SUFX,X
- +10 SET EFTIEN=$GET(EFTIEN)
- +11 SET LOCKIEN=$GET(LOCKIEN)
- +12 ; PRCA*4.5*326
- SET SUFX=$$GET1^DIQ(344.31,EFTIEN_",",.14)
- +13 ; PRCA*4.5*326
- if SUFX
- SET SUFX="."_SUFX
- +14 ; PRCA*4.5*326
- SET X=SUFX_$JUSTIFY("",4-$LENGTH(SUFX))
- +15 ; PRCA*4.5*326
- SET X=X_$$GET1^DIQ(344.31,EFTIEN_",",.02)_" "_$$GET1^DIQ(344.31,EFTIEN_",",.04)_" "
- +16 SET X=X_$$GET1^DIQ(344.31,EFTIEN_",",.07)_" "_$$GET1^DIQ(344.3,LOCKIEN_",",.06)_" "
- +17 SET X=X_$$DATE^RCDPRU($$GET1^DIQ(344.3,LOCKIEN_",",.07,"I"),"2DZ")
- +18 QUIT X
- +19 ;
- COMPILE(RCDATA) ; Compile data for display
- +1 ; Input: RCDATA - see subroutine EFTDA for delimited list of fields
- +2 ; Output: ^TMP("RCDPTAR",$J)
- +3 ;
- +4 IF $GET(RCDATA)=""
- QUIT
- +5 ;
- +6 NEW BATCHIEN,DEPDATE,DEPIEN,EFTIEN,ERAIEN,FILEDATE,FMSDOCNO,IENS,LASTIEN,LINE,LOCKIEN
- +7 NEW MATCHDATE,MATCHIEN,PROCDATE,STATUS,TRANS
- +8 KILL ^TMP("RCDPTAR",$JOB)
- +9 ;
- +10 ; Get Pointers from RCDATA
- +11 SET ERAIEN=$PIECE(RCDATA,U,1)
- SET LOCKIEN=$PIECE(RCDATA,U,2)
- SET EFTIEN=$PIECE(RCDATA,U,3)
- +12 SET DEPIEN=$PIECE(RCDATA,U,4)
- SET BATCHIEN=$PIECE(RCDATA,U,5)
- +13 ;
- +14 ; Get Inital Creation/Deposit information
- +15 KILL RCDATA
- +16 IF LOCKIEN
- Begin DoDot:1
- +17 DO GETS^DIQ(344.3,LOCKIEN_",",".02;.06;.08","IE","RCDATA")
- +18 SET FILEDATE=$GET(RCDATA(344.3,LOCKIEN_",",.02,"I"))
- +19 IF 'FILEDATE
- QUIT
- +20 SET ^TMP("RCDPTAR",$JOB,FILEDATE,1)="DEP#:"_$GET(RCDATA(344.3,LOCKIEN_",",.06,"E"))_" DEP AMT:"_$GET(RCDATA(344.3,LOCKIEN_",",.08,"E"))_"^EFT STATUS:RECEIVED"
- End DoDot:1
- +21 ;
- +22 ; Check if posted to revenue code 8NZZ
- +23 SET TRANS=$$GET1^DIQ(344.31,EFTIEN_",",.14)
- +24 IF TRANS
- IF $DATA(^RCY(344,+BATCHIEN,1,TRANS,0))
- IF LOCKIEN
- IF $DATA(RCDATA(344.3,LOCKIEN_","))
- Begin DoDot:1
- +25 SET DEPDATE=$$GET1^DIQ(344.1,DEPIEN_",",.07,"I")
- +26 IF 'DEPDATE
- QUIT
- +27 SET ^TMP("RCDPTAR",$JOB,DEPDATE,2)="DEP#:"_$GET(RCDATA(344.3,LOCKIEN_",",.06,"E"))_" DEP AMT:"_$GET(RCDATA(344.3,LOCKIEN_",",.08,"E"))_"^DEP STATUS:POSTED TO 8NZZ"
- End DoDot:1
- +28 ;
- +29 ; Get Match Status History information
- +30 IF EFTIEN
- Begin DoDot:1
- +31 ; Get the Last IEN of the multiple
- +32 SET LASTIEN=$ORDER(^RCY(344.31,EFTIEN,4,999999),-1)
- +33 ; Loop through history and build data
- +34 SET MATCHIEN=0
- FOR
- SET MATCHIEN=$ORDER(^RCY(344.31,EFTIEN,4,MATCHIEN))
- if 'MATCHIEN
- QUIT
- Begin DoDot:2
- +35 SET IENS=MATCHIEN_","_EFTIEN_","
- +36 DO GETS^DIQ(344.314,IENS,"*","IE","RCDATA")
- +37 SET MATCHDATE=$GET(RCDATA(344.314,IENS,.02,"I"))
- +38 IF MATCHDATE=""
- QUIT
- +39 SET STATUS=$GET(RCDATA(344.314,IENS,.01,"E"))
- +40 IF STATUS="MATCHED WITH ERRORS"
- SET STATUS="MATCHED W/ERRORS"
- +41 SET LINE="EFT STATUS:"_STATUS
- +42 ; If this is the last record and the status is matched, add the ERA record to the data
- +43 IF MATCHIEN=LASTIEN
- IF STATUS="MATCHED"!(STATUS="MATCHED W/ERRORS")
- IF $$GET1^DIQ(344.31,EFTIEN_",",.1)
- SET LINE=LINE_" ERA#:"_$$GET1^DIQ(344.31,EFTIEN_",",.1)
- +44 SET ^TMP("RCDPTAR",$JOB,MATCHDATE,3)=LINE_"^BY "_$EXTRACT($GET(RCDATA(344.314,IENS,.03,"E")),1,14)_" on "_$$DATE^RCDPRU(MATCHDATE,"2ZD")
- End DoDot:2
- End DoDot:1
- +45 ;
- +46 ; Get Receipt information (EFT)
- +47 IF BATCHIEN
- Begin DoDot:1
- +48 SET PROCDATE=$$GET1^DIQ(344,BATCHIEN_",",.08,"I")
- +49 IF 'PROCDATE
- QUIT
- +50 ;PRCA*4.5*321 add $G
- IF $GET(DEPDATE)
- IF PROCDATE<DEPDATE
- SET PROCDATE=DEPDATE
- +51 SET FMSDOCNO=$$FMSSTAT^RCDPUREC(BATCHIEN)
- +52 SET ^TMP("RCDPTAR",$JOB,PROCDATE,5)="DEP RCPT#:"_$$GET1^DIQ(344,BATCHIEN_",",.01,"E")_" ENTRY#:"_BATCHIEN_"^FMS DOC#:"_$PIECE(FMSDOCNO,U,1)_"^^DOC STATUS:"_$EXTRACT($PIECE(FMSDOCNO,U,2),1,18)
- End DoDot:1
- +53 ;
- +54 ; Get Receipt information (ERA)
- +55 SET BATCHIEN=$$GET1^DIQ(344.4,ERAIEN_",",.08,"I")
- +56 IF BATCHIEN
- Begin DoDot:1
- +57 SET PROCDATE=$$GET1^DIQ(344,BATCHIEN_",",.08,"I")
- +58 ; PRCA*4.5*321 add $G
- IF $GET(DEPDATE)
- IF PROCDATE<DEPDATE
- SET PROCDATE=DEPDATE
- +59 IF 'PROCDATE
- QUIT
- +60 SET FMSDOCNO=$$FMSSTAT^RCDPUREC(BATCHIEN)
- +61 ;S ^TMP("RCDPTAR",$J,PROCDATE,6)="RCPT#:"_$$GET1^DIQ(344,BATCHIEN_",",.01,"E")_" EFT DETAIL#:"_EFTIEN_"^BY "_$E($$GET1^DIQ(344,BATCHIEN_",",.02,"E"),1,14)_" on "_$$DATE^RCDPRU(PROCDATE,"2DZ")
- +62 SET ^TMP("RCDPTAR",$JOB,PROCDATE,6)="RCPT#:"_$$GET1^DIQ(344,BATCHIEN_",",.01,"E")_"^BY "_$EXTRACT($$GET1^DIQ(344,BATCHIEN_",",.02,"E"),1,14)_" on "_$$DATE^RCDPRU(PROCDATE,"2DZ")
- +63 SET ^TMP("RCDPTAR",$JOB,PROCDATE,7)="FMS DOC#:"_$PIECE(FMSDOCNO,U,1)_"^DOC STATUS:"_$EXTRACT($PIECE(FMSDOCNO,U,2),1,18)
- End DoDot:1
- +64 QUIT
- +65 ;
- REPORT(RCDATA) ; Print out the report
- +1 ; Input: RCDATA - see subroutine EFTDA about for delimited list of fields
- +2 ; Output: Write statements
- +3 ;
- +4 NEW CNT,DATE,DATA,LINES,RCHR,RCNOW,RCPG,RCSCR
- +5 ;
- +6 ; Initialize Report Date, Page Number and String of underscores
- +7 SET RCSCR=$SELECT($EXTRACT($GET(IOST),1,2)="C-":1,1:0)
- +8 SET RCNOW=$$UP^XLFSTR($$NOW^RCDPRU())
- SET RCPG=0
- SET RCHR=""
- SET $PIECE(RCHR,"-",IOM+1)=""
- +9 ;
- +10 USE IO
- +11 DO HEADER(RCNOW,.RCPG,RCHR,RCDATA)
- +12 IF $GET(RCDATA)=""!'$DATA(^TMP("RCDPTAR",$JOB))
- WRITE !,"No data found"
- +13 ;
- +14 ; Display the detail
- +15 SET DATE=""
- FOR
- SET DATE=$ORDER(^TMP("RCDPTAR",$JOB,DATE))
- if 'DATE
- QUIT
- Begin DoDot:1
- +16 SET CNT=0
- FOR
- SET CNT=$ORDER(^TMP("RCDPTAR",$JOB,DATE,CNT))
- if 'CNT
- QUIT
- Begin DoDot:2
- +17 SET DATA=^TMP("RCDPTAR",$JOB,DATE,CNT)
- +18 SET LINES=1
- +19 IF $PIECE(DATA,U,3)]""!($PIECE(DATA,U,4)]"")
- SET LINES=2
- +20 IF RCSCR
- SET LINES=LINES+1
- +21 DO CHKP(RCNOW,.RCPG,RCHR,RCDATA,RCSCR,LINES)
- IF RCPG=0
- QUIT
- +22 WRITE !,$$DATE^RCDPRU(DATE,"2DZ"),?10,$PIECE(DATA,U,1),?51,$PIECE(DATA,U,2)
- +23 IF $PIECE(DATA,U,3)]""!($PIECE(DATA,U,4)]"")
- WRITE !,?10,$PIECE(DATA,U,3),?51,$PIECE(DATA,U,4)
- End DoDot:2
- IF RCPG=0
- QUIT
- End DoDot:1
- IF RCPG=0
- QUIT
- +24 ;
- +25 IF 'RCSCR
- WRITE !,@IOF
- +26 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- QUIT
- +27 DO ^%ZISC
- +28 ;
- +29 ; PRCA*4.5*371 - STOP if user enters '^'
- +30 IF RCPG
- IF RCSCR
- SET STOP=$SELECT('$$PAUSE():1,1:0)
- +31 QUIT
- +32 ;
- +1 ; Input: RCNOW - DATE/TIME in external format
- +2 ; RCPG - Current page number
- +3 ; RCHR - Line of "-" to margin width
- +4 ; RCDATA - See subroutine EFTDA about for delimited list of fields
- +5 ; Output: Write statements
- +6 ;
- +7 NEW EFTDATA,LINE
- +8 SET EFTDATA=$GET(^RCY(344.31,+$PIECE(RCDATA,U,3),0))
- +9 ;
- +10 WRITE @IOF
- +11 SET RCPG=RCPG+1
- +12 WRITE "EFT TRANSACTION AUDIT REPORT"
- +13 SET LINE=RCNOW_" PAGE: "_RCPG_" "
- +14 WRITE ?(IOM-$LENGTH(LINE)),LINE
- +15 ; Added EFT line identifier nnn.nn - PRCA*4.5*326
- +16 WRITE !,"EFT#: ",$$AGED(+$PIECE(RCDATA,U,3)),$$GET1^DIQ(344.31,$PIECE(RCDATA,U,3)_",",.01,"E"),?19,"DEPOSIT#: ",$PIECE($GET(^RCY(344.3,+$PIECE(RCDATA,U,2),0)),U,6),?42,"EFT TOTAL AMT: "_$SELECT($PIECE(EFTDATA,U,16)="D":"-",1:"")_$PIECE(EFTDATA,
- U,7)
- +17 WRITE !,"EFT TRACE#: ",$PIECE(EFTDATA,U,4)
- +18 WRITE !,"DATE RECEIVED: ",$$DATE^RCDPRU($PIECE(EFTDATA,U,12)),?26,"PAYER/ID: "_$PIECE(EFTDATA,U,2)_"/"_$PIECE(EFTDATA,U,3)
- +19 ;
- +20 WRITE !,"DATE",?10,"ACTION/DETAILS",?51,"STATUS"
- +21 WRITE !,RCHR
- +22 QUIT
- +23 ;
- PAUSE() ; Pause at end of each page for user input
- +1 ; Input: None
- +2 ; Output: User response
- +3 ;
- +4 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- +5 SET DIR(0)="E"
- +6 DO ^DIR
- +7 QUIT Y
- +8 ;
- CHKP(RCNOW,RCPG,RCHR,RCDATA,RCSCR,LINES) ; Check if we need to do a page break
- +1 ; Input: RCNOW - DATE/TIME in external format
- +2 ; RCPG - Current page number
- +3 ; RCHR - Line of "-" to margin width
- +4 ; RCDATA - See subroutine EFTDA about for delimited list of fields
- +5 ; RCSCR - 1 - Output is going to the users screen, 0 - to printer
- +6 ; LINES - Current line count
- +7 ;
- +8 IF $Y'>(IOSL-LINES)
- QUIT
- +9 IF RCSCR
- IF '$$PAUSE
- SET RCPG=0
- QUIT
- +10 DO HEADER(RCNOW,.RCPG,RCHR,RCDATA)
- +11 QUIT
- +12 ;
- AGED(EFTIEN) ; Check if EFT is locked or stale
- +1 ; Input
- +2 ; EFTIEN: IEN of EDI THIRD PARTY EFT DETAIL (#344.31)
- +3 ; Output
- +4 ; "*" - Warning; "**" - Error; Null - Good
- +5 NEW DAYSLIMT,RECVDT,TRARRY
- +6 SET RECVDT=$$GET1^DIQ(344.31,EFTIEN_",",.13,"I")
- +7 ; EFTs 2 months older than *298 installation do not lock the system
- IF RECVDT<$$CUTOFF^RCDPEWLP
- QUIT ""
- +8 SET DAYSLIMT("M")=$$GET1^DIQ(344.61,1,.06)
- SET DAYSLIMT("P")=$$GET1^DIQ(344.61,1,.07)
- +9 DO CHKEFT^RCDPEWLP(RECVDT,EFTIEN,"B",.DAYSLIMT,.TRARRY)
- +10 IF $DATA(TRARRY("ERROR"))
- QUIT "**"
- +11 IF $DATA(TRARRY("WARNING"))
- QUIT "*"
- +12 QUIT ""