RCDPEDAR ;ALB/TMK - ACTIVITY REPORT ;Jun 06, 2014@19:11:19
 ;;4.5;Accounts Receivable;**173,276,284,283,298,304,318,321,326,432,439**;Mar 20, 1995;Build 29
 ;Per VA Directive 6402, this routine should not be modified.
 Q
 ;
RPT ; Daily Activity Rpt On Demand
 N POP,RCDET,RCDIV,RCDONLY,RCDT1,RCDT2,RCEXCEL,RCEXSTOP,RCHDR,RCINC,RCLSTMGR,RCNJ  ;PRCA*4.5*439
 N RCPAR,RCPAY,RCPYRSEL,RCRANGE,RCSTOP,RCTMPND,RCTYPE,RCUNBAL,VAUTD,X,XX,Y,%ZIS
 S RCNJ=0                                   ; Not the nightly job, user interactions
 D DIVISION^VAUTOMA                         ; IA 664 Select Division/Station - sets VAUTD
 I 'VAUTD,($D(VAUTD)'=11) Q
 S RCDET=$$RTYPE^RCDPEDA4()                 ; Select Report Type (Summary/Detail)
 Q:RCDET=-1
 S XX=$$DTRANGE^RCDPEDA4(.RCDT1,.RCDT2)     ; Select Date Range to be used
 Q:'XX
 ;
 ; PRCA*4.5*326 - Ask to show Medical/Pharmacy Tricare CHAMPVA or All
 S RCTYPE=$$RTYPE^RCDPEU1("")
 I RCTYPE<0 Q
 ;
 S RCPAY=$$PAYRNG^RCDPEU1()             ; PRCA*4.5*326 - Selected or Range of Payers
 Q:RCPAY=-1                             ; PRCA*4.5*326 '^' or timeout
 ;
 I RCPAY'="A" D  Q:XX=-1                ; PRCA*4.5*326 - Since we don't want all payers 
 . S RCPAR("SELC")=RCPAY                ;         prompt for payers we do want
 . S RCPAR("TYPE")=RCTYPE
 . S RCPAR("FILE")=344.4
 . S RCPAR("DICA")="Select Insurance Company NAME: "
 . S XX=$$SELPAY^RCDPEU1(.RCPAR)
 ;
 S RCDONLY=$$DBTONLY^RCDPEDA4()             ; Debit only filter   ;PRCA*4.5*321
 Q:RCDONLY=-1                               ; '^' or timeout
 ;
 S RCUNBAL=$$UNBALONLY^RCDPEDA4()           ; Unbalanced only filter   ;Add new filter, PRCA*4.5*439
 Q:RCUNBAL=-1                               ; '^' or timeout
 ;
 ; PRCA*4.5*439 Add Excel, begin
 ; if user selected detail report (RCDET=1), offer option of Excel format
 S RCEXCEL=0,RCEXSTOP=0 I RCDET D  Q:RCEXSTOP
 . S RCEXCEL=$$DISPTY^RCDPEM3() I RCEXCEL<0 S RCEXSTOP=1 Q
 . ; display device info about Excel format, set ListMan flag to prevent question
 . I RCEXCEL S RCLSTMGR="^" D INFO^RCDPEM6
 . I $D(DUOUT)!$D(DTOUT) S RCEXSTOP=1 Q
 ;
 ; if not output to Excel ask for ListMan display, quit if timeout or "^"
 S RCLSTMGR=0 I 'RCEXCEL S RCLSTMGR=$$ASKLM^RCDPEARL Q:RCLSTMGR<0
 ; PRCA*4.5*439 Add Excel, end
 ;
 I RCLSTMGR=1 D  Q                          ; ListMan Template format, put in array
 . S RCTMPND="RCDPE_DAR"
 . K ^TMP($J,RCTMPND)
 . D EN(RCDET,RCDT1,RCDT2,RCLSTMGR,RCDONLY,0,RCUNBAL)   ; PRCA*4.5*439 RCUNBAL
 . D LMHDR^RCDPEDA4(.RCSTOP,RCDET,1,RCDT1,RCDT2,.RCHDR,RCDONLY)
 . D LMRPT^RCDPEARL(.RCHDR,$NA(^TMP($J,RCTMPND))) ; Generate ListMan display
 . K ^TMP($J,RCTMPND)
 ;
 ; Ask device
 S %ZIS="QM"
 D ^%ZIS
 Q:POP
 ;
 I $D(IO("Q")) D  Q                         ; Queued Report
 . N ZTDESC,ZTRTN,ZTSAVE,ZTSK
 . S ZTRTN="EN^RCDPEDAR("_RCDET_","_RCDT1_","_RCDT2_",0,"_RCDONLY_",0,"_RCUNBAL_")" ;PRCA*4.5*321 added RCDONLY ;PRCA*4.5*439 added RCUNBAL
 . S ZTDESC="AR - EDI LOCKBOX EFT DAILY ACTIVITY REPORT"
 . S ZTSAVE("RC*")="",ZTSAVE("VAUTD")=""
 . S ZTSAVE("^TMP(""RCDPEU1"",$J,")="" ; PRCA*4.5*326
 . ;
 . D ^%ZTLOAD
 . W !!,$S($D(ZTSK):"Task number "_ZTSK_" was queued.",1:"Unable to queue this task.")
 . K ZTSK,IO("Q")
 . D HOME^%ZIS
 ;
 U IO
 D EN(RCDET,RCDT1,RCDT2,RCLSTMGR,RCDONLY,RCEXCEL,RCUNBAL)    ;PRCA*4.5*439 Add RCEXCEL, added RCUNBAL
 Q
 ;
EN(RCDET,RCDT1,RCDT2,RCLSTMGR,DONLY,RCEXCEL,RCUNBAL) ; Entry point for report, might be queued
 ; Input:   RCDET       - 1 - Detail Report, 0 - Summary
 ;          RCDT1       - Internal Fileman Start date
 ;          RCDT2       - Internal Fileman End date
 ;          RCLSTMGR    - 1 display in list manager, 0 otherwise
 ;                        Optional, defaults to 0
 ;          DONLY       - 1 only display EFTs with a debit flag of 'D'
 ;                        0 display all EFTs
 ;          RCEXCEL     - 1 display in Excel format, 0 otherwise  ;PRCA*4.5*439 Add Excel
 ;                        Optional, defaults to 0
 ;          RCUNBAL     - A - All, B - Balanced, U - Unbalanced ; PRCA*4.5*439 Add Unbalanced/Balanced selection
 ;                        Optional, defaults to All
 ;          RCPAY       - A - All Payers selected
 ;                      - R - Range of Payers
 ;                      - S - Specific payers
 ;          RCPYRSEL    - Array of selected payers (Only present if A1=3 above
 ;          VAUTD       - 1 - All selected divisions OR an array of selected divisions
 N DFLG,DTADD,IEN3443,IEN34431,INPUT,RCDBAL,RCDBALOK,RCFLG,RCJOB,RCT,XX,Z   ; PRCA*4.5*321 Added DFLG ; PRCA*4.5*439 Added RCDBAL,RCDBALOK
 N:$G(ZTSK) ZTSTOP                          ; Job was tasked, ZTSTOP = flag to stop
 S:'$D(RCLSTMGR) RCLSTMGR=0
 S:'$D(RCEXCEL) RCEXCEL=0  ;PRCA*4.5*439 Add Excel
 S:'$D(RCUNBAL) RCUNBAL="A"  ;PRCA*4.5*439 Add Unbalanced/Balanced selection
 S RCPAY=$G(RCPAY,"A") ; PRCA*4.5*326
 ;
 S XX=$S(RCLSTMGR:1,1:0)
 S INPUT=XX_"^"_RCLSTMGR_"^"_+RCDET
 S RCJOB=$J
 K ^TMP("RCDAILYACT",$J)
 K ^TMP($J,"TOTALS")                        ; Initialize Totals temp workspace
 ;
 ; Loop through all of the EDI LOCKBOX DEPOSIT records in the selected date
 ; range and add any that pass the payer and division filters into ^TMP
 ; by the internal date added
 S DTADD=RCDT1-.0001,RCT=0
 S $P(INPUT,"^",4)=0                        ; Current Page Number
 S $P(INPUT,"^",5)=0                        ; Stop Flag
 S $P(INPUT,"^",10)=DONLY
 S $P(INPUT,"^",11)=RCUNBAL                 ; User selection: A - All, B - Balanced, U - Unbalanced  PRCA*4.5*439
 F  D  Q:'DTADD  Q:DTADD>(RCDT2_".9999")  Q:$P(INPUT,"^",5)=1
 . S DTADD=$O(^RCY(344.3,"ARECDT",DTADD))
 . Q:'DTADD
 . Q:DTADD>(RCDT2_".9999")
 . S IEN3443=0
 . F  D  Q:'IEN3443  Q:$P(INPUT,"^",5)=1
 . . S IEN3443=$O(^RCY(344.3,"ARECDT",DTADD,IEN3443))
 . . Q:'IEN3443
 . . ;Add block of code to check for balanced or out of balance deposits PRCA*4.5*439
 . . ;Check user's filter selection, match to balance state of deposit
 . . ;Only check for balanced or not if user did not select 'A' for ALL.
 . . I RCUNBAL'="A" S RCDBALOK=1 D  I 'RCDBALOK Q   ;If deposit balance/unbalance doesn't match user selection, quit to ignore this deposit.
 . . . S RCDBAL=$$DEPBAL^RCDPEDA4(IEN3443)  ;Check deposit balance. Compare to EFT totals. 1 if in balance, 0 if out of balance.
 . . . ; If user selected unbalanced deposits in filter selection, skip balanced deposits by setting okay flag to zero (RCDBALOK).
 . . . I RCUNBAL="U" S:RCDBAL RCDBALOK=0 Q
 . . . ; If user selected balanced deposits in filter selection, skip unbalanced deposits by setting okay flag to zero (RCDBALOK).
 . . . I RCUNBAL="B" S:'RCDBAL RCDBALOK=0 Q 
 . . S IEN34431="",RCFLG=0
 . . F  D  Q:IEN34431=""
 . . . S IEN34431=$O(^RCY(344.31,"B",IEN3443,IEN34431))
 . . . Q:IEN34431=""
 . . . ;
 . . . I RCPAY'="A" D  Q:'XX
 . . . . S XX=$$ISSEL^RCDPEU1(344.31,IEN34431)          ; PRCA*4.5*326 Check if payer was selected
 . . . I RCTYPE'="A" D  Q:'XX                           ; If all of a given type of payer selected
 . . . . S XX=$$ISTYPE^RCDPEU1(344.31,IEN34431,RCTYPE)  ;  check that payer matches type
 . . . ;
 . . . Q:'$$CHKDIV(IEN34431,0,.VAUTD)       ; Not a selected station/division
 . . . ;
 . . . ; PRCA*4.5*321 Added filter for Debit EFTs Only below
 . . . I DONLY D  Q:DFLG'="D"               ; Not an EFT with a debit flag of 'D'
 . . . . S DFLG=$$GET1^DIQ(344.31,IEN34431,3,"E")
 . . . S RCFLG=1
 . . . S ^TMP("RCDAILYACT",$J,DTADD\1,IEN3443,"EFT",IEN34431)=""
 . . ;
 . . S:RCFLG ^TMP("RCDAILYACT",$J,DTADD\1,IEN3443)=""
 . . S RCT=RCT+1                            ; Current Record Count
 . . ;
 . . ; Check for user stopped every 100 records
 . . I '(RCT#100),$D(ZTQUEUED),$$S^%ZTLOAD D  Q
 . . . S ZTSTOP=1
 . . . S $P(INPUT,"^",5)=1                  ; Stop now
 . . . K ZTREQ
 ;
 I '$P(INPUT,"^",5) D
 . S $P(INPUT,"^",6)=RCDT1                  ; Start of Date Range
 . S $P(INPUT,"^",7)=RCDT2                  ; End of Date Range
 . I 'RCEXCEL D RPT1(.INPUT)
 . I RCEXCEL D EXCEL(INPUT)                 ; Print in Excel format ; PRCA*4.5*439 Add EXCEL
 D ENQ(INPUT)
 Q
 ;
ENQ(INPUT) ; Clean up
 ; Input:   INPUT       - A1^A2^A3^...^A8 Where:
 ;                         A1 - 1 if Detail report, 0 if summary report
 ;                         A2 - 1 if displaying to Listman, 0 otherwise
 ;                         A3 - 0 if NOT called from Nightly Process, 1 otherwise
 ;                         A4 - Current Page Number
 ;                         A5 - Stop Flag
 ;                         A6 - Start of Date Range
 ;                         A7 - End of Date Range
 ;          ZTQUEUED    - Defined if Joh was queued
 ; Output:  ZTREQ       - "@" Only returned if ZTQUEUED is defined
 N XX,YY,ZZ
 K ^TMP($J,"DEPERRS"),^TMP($J,"ONEDEP")  ; PRCA*4.5*321
 K ^TMP("RCDAILYACT",$J),^TMP("RCSELPAY",$J)
 K ^TMP($J,"TOTALS")
 K ^TMP("RCDPEU1",$J) ; PRCA*4.5*326
 I '$D(ZTQUEUED) D
 . D ^%ZISC
 . S XX=$P(INPUT,"^",1)                     ; Nightly Process Flag
 . S YY=$P(INPUT,"^",5)                     ; Stop Flag
 . S ZZ=$P(INPUT,"^",4)                     ; Current Page Number
 . I 'XX,'YY,ZZ D
 . . S XX=""
 . . D ASK^RCDPEARL(.XX)
 I $D(ZTQUEUED) S ZTREQ="@"
 Q
 ;
RPT1(INPUT) ;EP from RCDPEM1 (Nightly Process)
 ; Output the report
 ; Input:   INPUT       - A1^A2^A3^...^An Where:
 ;                         A1 - 1 if called from Nightly Process, 0 otherwise
 ;                         A2 - 1 if displaying to Listman, 0 otherwise
 ;                         A4 - Current Page Number
 ;                         A5 - Stop Flag
 ;                         A6 - Start of Date Range
 ;                         A7 - End of Date Range
 ;          ^TMP(B1,$J,B2,B3)          = "" - Array of record IENs in 344.3 in date range
 ;                                            and for selected payer(s) and division(s)
 ;          ^TMP(B1,$J,B2,B3,"EFT",B4) = "" - Array of record IENS in 344.31 for above Where:
 ;                        B1 - "RCDAILYACT"
 ;                        B2 - Internal Date from DATE/TIME ADDED (344.3, .13)
 ;                        B3 - Internal IEN for 344.3
 ;                        B4 - Internal IEN for file 344.31
 ; Output:  INPUT       - A1^A2^A3^...^An - The following pieces may be updated
 ;                         A4 - Current Page Number
 ;                         A5 - Stop Flag
 ;
 N CURPG,DETL,DTADD,DTEND,DTST,HDR1,LSTMAN,NJ
 S DETL=$P(INPUT,"^",3)                     ; Detail Report flag
 S LSTMAN=$P(INPUT,"^",2)                   ; Listman flag
 S NJ=$P(INPUT,"^",1)                       ; Nightly Process flag
 S CURPG=$P(INPUT,"^",4)                    ; Current Page Number
 S DTST=$P(INPUT,"^",6)                     ; Date Range Start
 S DTEND=$P(INPUT,"^",7)                    ; Date Range End
 S $P(INPUT,"^",8)=0                        ; Current line counter
 S DTADD=""
 F  D  Q:DTADD=""  Q:$P(INPUT,"^",5)=1
 . S DTADD=$O(^TMP("RCDAILYACT",$J,DTADD))
 . Q:DTADD=""
 . ;
 . I 'LSTMAN,DETL D  Q:$P(INPUT,"^",5)=1               ; PRCA*4.5*321
 . . D HDR^RCDPEDA3(.INPUT)
 . ;
 . I DETL D                                   ; Detail Report
 . . S HDR1="DATE EFT DEPOSIT RECEIVED: "_$$FMTE^XLFDT(DTADD,"2Z")  ; PRCA*4.5*321 moved location
 . . S HDR1=$J("",80-$L(HDR1)\2)_HDR1         ; Center it
 . . D SL^RCDPEDA3(.INPUT,HDR1)
 . . D SL^RCDPEDA3(.INPUT," ")
 . S $P(INPUT,"^",9)=DTADD
 . D RPT2^RCDPEDA2(.INPUT)                  ; Process all 344.3 records found
 . Q:$P(INPUT,"^",5)=1                      ; User quit
 . D TOTSDAY^RCDPEDA3(.INPUT)               ; Display Totals for Date
 ;
 Q:$P(INPUT,"^",5)=1                        ; User quit
 D TOTSF^RCDPEDA3(.INPUT)                   ; Display Final Totals
 D SL^RCDPEDA3(.INPUT,$$ENDORPRT^RCDPEARL)  ; Display End of Report
 Q
 ;
CHKDIV(IEN,FLG,VAUTD) ;
 ; IEN - ien in file 344.31 or 344.4
 ; FLG - 0 if IEN contains ien in file 344.31, 1 if IEN contains ien in file 344.4
 ; VAUTD - array of selected divisions from DIVISION^VAUTOMA API call
 ; returns 1 if division associated with an entry in 344.31 is on the list in VAUTD
 ; returns 0 otherwise
 N ERA,I,NAME,RCSTA,RES
 S RES=0
 I VAUTD=1 S RES=1 G CHKDIVX
 I 'IEN G CHKDIVX
 S ERA=$S(FLG:IEN,1:$P($G(^RCY(344.31,IEN,0)),U,10))
 S RCSTA=$$ERASTA^RCDPEM3(ERA),NAME=$P(RCSTA,U)
 I NAME="UNKNOWN" G CHKDIVX
 S I=0 I 'VAUTD F  S I=$O(VAUTD(I)) Q:'I!RES  I NAME=VAUTD(I) S RES=1
CHKDIVX ;
 Q RES
 ;
EXCEL(INPUT) ; Loop to print Excel Format ;PRCA*4.5*439 Add EXCEL tag
 ; Input:   INPUT       - A1^A2^A3^...^An Where:
 ;                         A1 - 1 if called from Nightly Process, 0 otherwise
 ;                         A2 - 1 if displaying to Listman, 0 otherwise
 ;                         A4 - Current Page Number
 ;                         A5 - Stop Flag
 ;                         A6 - Start of Date Range
 ;                         A7 - End of Date Range
 ; Output in Excel Format
 D EXCELHDR^RCDPEDA4
 N DTADD,IEN3443,IEN34431
 ;
 S DTADD=""
 F  D  Q:DTADD=""  Q:$P(INPUT,"^",5)=1
 . S DTADD=$O(^TMP("RCDAILYACT",$J,DTADD)) Q:DTADD=""
 . S IEN3443=""
 . F  S IEN3443=$O(^TMP("RCDAILYACT",$J,DTADD,IEN3443)) Q:'IEN3443  D
 . . S IEN34431=""
 . . F  S IEN34431=$O(^TMP("RCDAILYACT",$J,DTADD,IEN3443,"EFT",IEN34431)) Q:'IEN34431  D
 . . . D EXCEL2(IEN3443,IEN34431)
 ;
 W !!,"*** END OF REPORT ***",!
 Q
 ;
EXCEL2(IEN3443,IEN34431)  ; Print lines in Excel format ;PRCA*4.5*439 Add EXCEL3 tag
 ; Output in Excel foramt
 ; Input:   IEN3443    - Internal IEN for 344.3
 ;          IEN34431   - Internal IEN for file 344.31
 ;
 N DEPDT,DEPNUM,DFLG,IEN344,MDT,MULT,PAMT,PAYER,PAYID,RCDBAL,RCDEBIT,TOTDEP,TRDOC,TRDOCS,TRSTAT,X,XX,YY
 ;PRCA*4.5*380 - Check for multiple mail messages on this deposit
 S:$O(^RCY(344.3,IEN3443,3,0))'="" MULT="*"
 ;PRCA*4.5*380 - Check if prior deposits exist
 S DEPNUM=$$GET1^DIQ(344.3,IEN3443,.06,"I"),DEPDT=$$GET1^DIQ(344.3,IEN3443,.07,"I")      ; Deposit Number and Deposit Date
 S XX=$O(^RCY(344.3,"ADEP2",DEPNUM,DEPDT,0)),XX=$O(^RCY(344.3,"ADEP2",DEPNUM,DEPDT,XX))
 S:XX'="" MULT=$G(MULT)_"+"
 S TOTDEP=$$GET1^DIQ(344.3,IEN3443,.08,"I")                                              ; Total Deposit
 S RCDBAL=$$DEPBAL^RCDPEDA4(IEN3443),RCDBAL=$S(RCDBAL:"",1:"UNBALANCED")                 ; Is Deposit balanceD, 0-No, 1-Yes
 ;PRCA*4.5*380 - Include multi-mail message indicator with date
 W !,DEPNUM,"^",RCDBAL,"^",$$FMTE^XLFDT(DEPDT\1,"2Z"),$G(MULT),"^",TOTDEP,"^"   ;Deposit #^Unbalanced Indicator^Deposit Date_Multi Flag^Total Deposit
 S YY=$$GET1^DIQ(344.31,IEN34431,3,"E")             ; Debit/Credit flag ; PRCA*4.5*321 added line
 S DFLG=$S(YY="D":1,1:0)                            ; PRCA*4.5*321 added line
 S PAMT=$$GET1^DIQ(344.31,IEN34431,.07,"I")         ; Amount of Payment
 S XX=+$$GET1^DIQ(344.31,IEN34431,.09,"I")          ; Receipt # from 344.31
 S TRDOC=$$GET1^DIQ(344,XX,200,"I")                 ; FMS Document #
 I $$GET1^DIQ(344,XX,201,"I") S X="ACCEPTED"        ; Default ON-LINE ENTRY status to accepted - PRCA*4.5*326
 E  S X=$S(TRDOC'="":$$STATUS^GECSSGET(TRDOC),1:"") ; PRCA*4.5*326
 S XX=$S(X="":"",X=-1:"NO FMS DOC",1:$E($P(X," ",1),1,10))
 W XX,"^"
 S XX=$$GET1^DIQ(344.31,IEN34431,.01,"E")           ; EFT Transaction detail - PRCA*4.5*326
 W XX,"^"
 S XX=$$GET1^DIQ(344.31,IEN34431,.12,"I")           ; Date Claims Paid
 W $$FMTE^XLFDT(XX\1,"2Z"),"^"
 S XX=$$GET1^DIQ(344.31,IEN34431,.07,"I")           ; Amount of Payment
 S RCDEBIT=$$GET1^DIQ(344.31,IEN34431,3,"E")        ; Check for Debit
 I '($E(XX)="-") S XX=$S(RCDEBIT="D":"-",1:"")_XX   ; If Debit, add minus sign
 W XX,"^"
 ;
 S XX=$$GET1^DIQ(344.31,IEN34431,.08,"I")           ; Match Status, Internal
 S YY=$$GET1^DIQ(344.31,IEN34431,.1,"I")            ; ERA IEN
 S MDT=""
 I XX=1 S MDT=$$MATCHDT^RCDPEWL7(IEN34431)          ; PRCA*4.5*326 - Date matched to ERA
 S XX=$$GET1^DIQ(344.31,IEN34431,.08,"E")           ; Match Status, External
 W XX,"^",YY,"^",MDT,"^"                            ; Match Status^ERA^Date Matched
 S XX=$$GET1^DIQ(344.31,IEN34431,.04,"I")           ; Trace Number
 W XX,"^"
 S IEN344=$$GET1^DIQ(344.31,IEN34431,.09,"I")       ; Receipt IEN
 S XX=""
 I IEN344'="" S XX=$$GET1^DIQ(344,IEN344,200,"I")   ; FMS Document Number
 W XX,"^"
 S PAYER=$$GET1^DIQ(344.31,IEN34431,.02,"I")        ; Payer Name
 S:PAYER="" PAYER="NO PAYER NAME RECEIVED"
 S PAYID=$$GET1^DIQ(344.31,IEN34431,.03,"I")        ; Payer ID (TIN)
 W PAYER,"^",PAYID,"^"                              ; Payer Name^Payer ID (TIN)
 ; Get TR #s
 D EXCELTR(IEN344,IEN34431,.TRDOCS,.TRSTAT) ; Get comma delimited list of TR document #s and status
 W TRDOCS,"^"
 S XX=""
 I IEN344'="" S XX=$$GET1^DIQ(344,IEN344,.01,"I")   ; Receipt Number
 W XX,"^"
 W TRSTAT
 Q
 ;
EXCELTR(IEN344,IEN34431,TRDOCS,TRSTAT) ;Get TR #s  ;PRCA*4.5*439 Add EXCELTR tag
 ; Input:   IEN344     - Internal IEN for file 344
 ;          IEN34431   - Internal IEN for file 344.31
 ;          TRDOCS     - Variable to hold list of TR document numbers
 ;
 ; Output:  TRDOCS     - List of TR document numbers
 ;
 N IEN3444,IENS,RECEIPT,TRDOC,XX
 S TRDOCS="",TRSTAT=""                            ; Initialize list of TR document numbers and status
 S IEN3444=$$GET1^DIQ(344.31,IEN34431,.1,"I")     ; Internal IEN for for 344.4
 S RECEIPT=+$$GET1^DIQ(344.31,IEN34431,.09,"I")   ; Receipt # from 344.31
 Q:'IEN3444
 I $L(RECEIPT) D                                  ; If a receipt exists, get FMS doc # and status
 . S TRDOC=$TR($$GET1^DIQ(344,RECEIPT,200,"I")," ")           ; FMS Document #
 . I $$GET1^DIQ(344,RECEIPT,201,"I") S TRSTAT="ACCEPTED"      ; Default ON-LINE ENTRY status to accepted - PRCA*4.5*326
 . E  S TRSTAT=$S(TRDOC'="":$$STATUS^GECSSGET(TRDOC),1:"")
 ;
 S TRDOC=""
 S RECEIPT=$$GET1^DIQ(344.4,IEN3444,.08,"I")      ; Receipt # from 344.4
 I RECEIPT="" Q
 S TRDOC=$TR($$GET1^DIQ(344,RECEIPT,200,"I")," ") ; FMS Document #
 I TRDOC="" Q
 S TRDOCS=TRDOC                                   ; First TR Document #
 S XX=""
 F  D  Q:XX=""                                    ; If EFT is matched to an ERA, look for additional TR Documents
 . S XX=$O(^RCY(344.4,IEN3444,8,XX))
 . Q:XX=""
 . S IENS=XX_","_IEN3444_","
 . S RECEIPT=$$GET1^DIQ(344.48,IENS,.01,"I")      ; Other receipt numbers
 . I RECEIPT="" Q
 . S TRDOC=$TR($$GET1^DIQ(344,RECEIPT,200,"I")," ")  ; FMS Document #
 . Q:TRDOC=""
 . S TRDOCS=TRDOCS_","_TRDOC                      ; Comma delimited list of TR Document #s
 Q
 ;
EXCELRST(IEN344,TRDOCS,TRSTAT)                ; Get Deposit Receipt Status  ;PRCA*4.5*439 Add EXCELRST tag
 ; Input:   IEN344     - Internal IEN for 344
 ;          TRDOCS     - Variable to hold list of TR document numbers
 ;          TRSTAT     - Variable to hold Deposit Receipt Status
 ;
 ; Output:  TRSTAT     - Deposit Receipt Status
 ;
 N TRDOC,X
 S TRSTAT=""                                                   ; Initialize status to null
 S TRDOC=$P(TRDOCS,",",1)                                      ; Get first TR document, Deposit Receipt Status is null
 Q:'$L(TRDOC)                                                  ; Quit if there isn't a TR document
 I $$GET1^DIQ(344,IEN344,201,"I") S X="ACCEPTED"               ; Default ON-LINE ENTRY status to accepted - PRCA*4.5*326
 E  S X=$S(TRDOC'="":$$STATUS^GECSSGET(TRDOC),1:"")            ; PRCA*4.5*326
 S TRSTAT=$S(X="":"",X=-1:"NO FMS DOC",1:$E($P(X," ",1),1,10)) ; FMS Document Status for EFT
 Q
 ; Moved tags RCDPEDA4: RTYPE, DTRANGE, DBTONLY, EXCELHDR; PRCA*4.5*439
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCDPEDAR   19737     printed  Sep 23, 2025@19:20:34                                                                                                                                                                                                   Page 2
RCDPEDAR  ;ALB/TMK - ACTIVITY REPORT ;Jun 06, 2014@19:11:19
 +1       ;;4.5;Accounts Receivable;**173,276,284,283,298,304,318,321,326,432,439**;Mar 20, 1995;Build 29
 +2       ;Per VA Directive 6402, this routine should not be modified.
 +3        QUIT 
 +4       ;
RPT       ; Daily Activity Rpt On Demand
 +1       ;PRCA*4.5*439
           NEW POP,RCDET,RCDIV,RCDONLY,RCDT1,RCDT2,RCEXCEL,RCEXSTOP,RCHDR,RCINC,RCLSTMGR,RCNJ
 +2        NEW RCPAR,RCPAY,RCPYRSEL,RCRANGE,RCSTOP,RCTMPND,RCTYPE,RCUNBAL,VAUTD,X,XX,Y,%ZIS
 +3       ; Not the nightly job, user interactions
           SET RCNJ=0
 +4       ; IA 664 Select Division/Station - sets VAUTD
           DO DIVISION^VAUTOMA
 +5        IF 'VAUTD
               IF ($DATA(VAUTD)'=11)
                   QUIT 
 +6       ; Select Report Type (Summary/Detail)
           SET RCDET=$$RTYPE^RCDPEDA4()
 +7        if RCDET=-1
               QUIT 
 +8       ; Select Date Range to be used
           SET XX=$$DTRANGE^RCDPEDA4(.RCDT1,.RCDT2)
 +9        if 'XX
               QUIT 
 +10      ;
 +11      ; PRCA*4.5*326 - Ask to show Medical/Pharmacy Tricare CHAMPVA or All
 +12       SET RCTYPE=$$RTYPE^RCDPEU1("")
 +13       IF RCTYPE<0
               QUIT 
 +14      ;
 +15      ; PRCA*4.5*326 - Selected or Range of Payers
           SET RCPAY=$$PAYRNG^RCDPEU1()
 +16      ; PRCA*4.5*326 '^' or timeout
           if RCPAY=-1
               QUIT 
 +17      ;
 +18      ; PRCA*4.5*326 - Since we don't want all payers 
           IF RCPAY'="A"
               Begin DoDot:1
 +19      ;         prompt for payers we do want
                   SET RCPAR("SELC")=RCPAY
 +20               SET RCPAR("TYPE")=RCTYPE
 +21               SET RCPAR("FILE")=344.4
 +22               SET RCPAR("DICA")="Select Insurance Company NAME: "
 +23               SET XX=$$SELPAY^RCDPEU1(.RCPAR)
               End DoDot:1
               if XX=-1
                   QUIT 
 +24      ;
 +25      ; Debit only filter   ;PRCA*4.5*321
           SET RCDONLY=$$DBTONLY^RCDPEDA4()
 +26      ; '^' or timeout
           if RCDONLY=-1
               QUIT 
 +27      ;
 +28      ; Unbalanced only filter   ;Add new filter, PRCA*4.5*439
           SET RCUNBAL=$$UNBALONLY^RCDPEDA4()
 +29      ; '^' or timeout
           if RCUNBAL=-1
               QUIT 
 +30      ;
 +31      ; PRCA*4.5*439 Add Excel, begin
 +32      ; if user selected detail report (RCDET=1), offer option of Excel format
 +33       SET RCEXCEL=0
           SET RCEXSTOP=0
           IF RCDET
               Begin DoDot:1
 +34               SET RCEXCEL=$$DISPTY^RCDPEM3()
                   IF RCEXCEL<0
                       SET RCEXSTOP=1
                       QUIT 
 +35      ; display device info about Excel format, set ListMan flag to prevent question
 +36               IF RCEXCEL
                       SET RCLSTMGR="^"
                       DO INFO^RCDPEM6
 +37               IF $DATA(DUOUT)!$DATA(DTOUT)
                       SET RCEXSTOP=1
                       QUIT 
               End DoDot:1
               if RCEXSTOP
                   QUIT 
 +38      ;
 +39      ; if not output to Excel ask for ListMan display, quit if timeout or "^"
 +40       SET RCLSTMGR=0
           IF 'RCEXCEL
               SET RCLSTMGR=$$ASKLM^RCDPEARL
               if RCLSTMGR<0
                   QUIT 
 +41      ; PRCA*4.5*439 Add Excel, end
 +42      ;
 +43      ; ListMan Template format, put in array
           IF RCLSTMGR=1
               Begin DoDot:1
 +44               SET RCTMPND="RCDPE_DAR"
 +45               KILL ^TMP($JOB,RCTMPND)
 +46      ; PRCA*4.5*439 RCUNBAL
                   DO EN(RCDET,RCDT1,RCDT2,RCLSTMGR,RCDONLY,0,RCUNBAL)
 +47               DO LMHDR^RCDPEDA4(.RCSTOP,RCDET,1,RCDT1,RCDT2,.RCHDR,RCDONLY)
 +48      ; Generate ListMan display
                   DO LMRPT^RCDPEARL(.RCHDR,$NAME(^TMP($JOB,RCTMPND)))
 +49               KILL ^TMP($JOB,RCTMPND)
               End DoDot:1
               QUIT 
 +50      ;
 +51      ; Ask device
 +52       SET %ZIS="QM"
 +53       DO ^%ZIS
 +54       if POP
               QUIT 
 +55      ;
 +56      ; Queued Report
           IF $DATA(IO("Q"))
               Begin DoDot:1
 +57               NEW ZTDESC,ZTRTN,ZTSAVE,ZTSK
 +58      ;PRCA*4.5*321 added RCDONLY ;PRCA*4.5*439 added RCUNBAL
                   SET ZTRTN="EN^RCDPEDAR("_RCDET_","_RCDT1_","_RCDT2_",0,"_RCDONLY_",0,"_RCUNBAL_")"
 +59               SET ZTDESC="AR - EDI LOCKBOX EFT DAILY ACTIVITY REPORT"
 +60               SET ZTSAVE("RC*")=""
                   SET ZTSAVE("VAUTD")=""
 +61      ; PRCA*4.5*326
                   SET ZTSAVE("^TMP(""RCDPEU1"",$J,")=""
 +62      ;
 +63               DO ^%ZTLOAD
 +64               WRITE !!,$SELECT($DATA(ZTSK):"Task number "_ZTSK_" was queued.",1:"Unable to queue this task.")
 +65               KILL ZTSK,IO("Q")
 +66               DO HOME^%ZIS
               End DoDot:1
               QUIT 
 +67      ;
 +68       USE IO
 +69      ;PRCA*4.5*439 Add RCEXCEL, added RCUNBAL
           DO EN(RCDET,RCDT1,RCDT2,RCLSTMGR,RCDONLY,RCEXCEL,RCUNBAL)
 +70       QUIT 
 +71      ;
EN(RCDET,RCDT1,RCDT2,RCLSTMGR,DONLY,RCEXCEL,RCUNBAL) ; Entry point for report, might be queued
 +1       ; Input:   RCDET       - 1 - Detail Report, 0 - Summary
 +2       ;          RCDT1       - Internal Fileman Start date
 +3       ;          RCDT2       - Internal Fileman End date
 +4       ;          RCLSTMGR    - 1 display in list manager, 0 otherwise
 +5       ;                        Optional, defaults to 0
 +6       ;          DONLY       - 1 only display EFTs with a debit flag of 'D'
 +7       ;                        0 display all EFTs
 +8       ;          RCEXCEL     - 1 display in Excel format, 0 otherwise  ;PRCA*4.5*439 Add Excel
 +9       ;                        Optional, defaults to 0
 +10      ;          RCUNBAL     - A - All, B - Balanced, U - Unbalanced ; PRCA*4.5*439 Add Unbalanced/Balanced selection
 +11      ;                        Optional, defaults to All
 +12      ;          RCPAY       - A - All Payers selected
 +13      ;                      - R - Range of Payers
 +14      ;                      - S - Specific payers
 +15      ;          RCPYRSEL    - Array of selected payers (Only present if A1=3 above
 +16      ;          VAUTD       - 1 - All selected divisions OR an array of selected divisions
 +17      ; PRCA*4.5*321 Added DFLG ; PRCA*4.5*439 Added RCDBAL,RCDBALOK
           NEW DFLG,DTADD,IEN3443,IEN34431,INPUT,RCDBAL,RCDBALOK,RCFLG,RCJOB,RCT,XX,Z
 +18      ; Job was tasked, ZTSTOP = flag to stop
           if $GET(ZTSK)
               NEW ZTSTOP
 +19       if '$DATA(RCLSTMGR)
               SET RCLSTMGR=0
 +20      ;PRCA*4.5*439 Add Excel
           if '$DATA(RCEXCEL)
               SET RCEXCEL=0
 +21      ;PRCA*4.5*439 Add Unbalanced/Balanced selection
           if '$DATA(RCUNBAL)
               SET RCUNBAL="A"
 +22      ; PRCA*4.5*326
           SET RCPAY=$GET(RCPAY,"A")
 +23      ;
 +24       SET XX=$SELECT(RCLSTMGR:1,1:0)
 +25       SET INPUT=XX_"^"_RCLSTMGR_"^"_+RCDET
 +26       SET RCJOB=$JOB
 +27       KILL ^TMP("RCDAILYACT",$JOB)
 +28      ; Initialize Totals temp workspace
           KILL ^TMP($JOB,"TOTALS")
 +29      ;
 +30      ; Loop through all of the EDI LOCKBOX DEPOSIT records in the selected date
 +31      ; range and add any that pass the payer and division filters into ^TMP
 +32      ; by the internal date added
 +33       SET DTADD=RCDT1-.0001
           SET RCT=0
 +34      ; Current Page Number
           SET $PIECE(INPUT,"^",4)=0
 +35      ; Stop Flag
           SET $PIECE(INPUT,"^",5)=0
 +36       SET $PIECE(INPUT,"^",10)=DONLY
 +37      ; User selection: A - All, B - Balanced, U - Unbalanced  PRCA*4.5*439
           SET $PIECE(INPUT,"^",11)=RCUNBAL
 +38       FOR 
               Begin DoDot:1
 +39               SET DTADD=$ORDER(^RCY(344.3,"ARECDT",DTADD))
 +40               if 'DTADD
                       QUIT 
 +41               if DTADD>(RCDT2_".9999")
                       QUIT 
 +42               SET IEN3443=0
 +43               FOR 
                       Begin DoDot:2
 +44                       SET IEN3443=$ORDER(^RCY(344.3,"ARECDT",DTADD,IEN3443))
 +45                       if 'IEN3443
                               QUIT 
 +46      ;Add block of code to check for balanced or out of balance deposits PRCA*4.5*439
 +47      ;Check user's filter selection, match to balance state of deposit
 +48      ;Only check for balanced or not if user did not select 'A' for ALL.
 +49      ;If deposit balance/unbalance doesn't match user selection, quit to ignore this deposit.
                           IF RCUNBAL'="A"
                               SET RCDBALOK=1
                               Begin DoDot:3
 +50      ;Check deposit balance. Compare to EFT totals. 1 if in balance, 0 if out of balance.
                                   SET RCDBAL=$$DEPBAL^RCDPEDA4(IEN3443)
 +51      ; If user selected unbalanced deposits in filter selection, skip balanced deposits by setting okay flag to zero (RCDBALOK).
 +52                               IF RCUNBAL="U"
                                       if RCDBAL
                                           SET RCDBALOK=0
                                       QUIT 
 +53      ; If user selected balanced deposits in filter selection, skip unbalanced deposits by setting okay flag to zero (RCDBALOK).
 +54                               IF RCUNBAL="B"
                                       if 'RCDBAL
                                           SET RCDBALOK=0
                                       QUIT 
                               End DoDot:3
                               IF 'RCDBALOK
                                   QUIT 
 +55                       SET IEN34431=""
                           SET RCFLG=0
 +56                       FOR 
                               Begin DoDot:3
 +57                               SET IEN34431=$ORDER(^RCY(344.31,"B",IEN3443,IEN34431))
 +58                               if IEN34431=""
                                       QUIT 
 +59      ;
 +60                               IF RCPAY'="A"
                                       Begin DoDot:4
 +61      ; PRCA*4.5*326 Check if payer was selected
                                           SET XX=$$ISSEL^RCDPEU1(344.31,IEN34431)
                                       End DoDot:4
                                       if 'XX
                                           QUIT 
 +62      ; If all of a given type of payer selected
                                   IF RCTYPE'="A"
                                       Begin DoDot:4
 +63      ;  check that payer matches type
                                           SET XX=$$ISTYPE^RCDPEU1(344.31,IEN34431,RCTYPE)
                                       End DoDot:4
                                       if 'XX
                                           QUIT 
 +64      ;
 +65      ; Not a selected station/division
                                   if '$$CHKDIV(IEN34431,0,.VAUTD)
                                       QUIT 
 +66      ;
 +67      ; PRCA*4.5*321 Added filter for Debit EFTs Only below
 +68      ; Not an EFT with a debit flag of 'D'
                                   IF DONLY
                                       Begin DoDot:4
 +69                                       SET DFLG=$$GET1^DIQ(344.31,IEN34431,3,"E")
                                       End DoDot:4
                                       if DFLG'="D"
                                           QUIT 
 +70                               SET RCFLG=1
 +71                               SET ^TMP("RCDAILYACT",$JOB,DTADD\1,IEN3443,"EFT",IEN34431)=""
                               End DoDot:3
                               if IEN34431=""
                                   QUIT 
 +72      ;
 +73                       if RCFLG
                               SET ^TMP("RCDAILYACT",$JOB,DTADD\1,IEN3443)=""
 +74      ; Current Record Count
                           SET RCT=RCT+1
 +75      ;
 +76      ; Check for user stopped every 100 records
 +77                       IF '(RCT#100)
                               IF $DATA(ZTQUEUED)
                                   IF $$S^%ZTLOAD
                                       Begin DoDot:3
 +78                                       SET ZTSTOP=1
 +79      ; Stop now
                                           SET $PIECE(INPUT,"^",5)=1
 +80                                       KILL ZTREQ
                                       End DoDot:3
                                       QUIT 
                       End DoDot:2
                       if 'IEN3443
                           QUIT 
                       if $PIECE(INPUT,"^",5)=1
                           QUIT 
               End DoDot:1
               if 'DTADD
                   QUIT 
               if DTADD>(RCDT2_".9999")
                   QUIT 
               if $PIECE(INPUT,"^",5)=1
                   QUIT 
 +81      ;
 +82       IF '$PIECE(INPUT,"^",5)
               Begin DoDot:1
 +83      ; Start of Date Range
                   SET $PIECE(INPUT,"^",6)=RCDT1
 +84      ; End of Date Range
                   SET $PIECE(INPUT,"^",7)=RCDT2
 +85               IF 'RCEXCEL
                       DO RPT1(.INPUT)
 +86      ; Print in Excel format ; PRCA*4.5*439 Add EXCEL
                   IF RCEXCEL
                       DO EXCEL(INPUT)
               End DoDot:1
 +87       DO ENQ(INPUT)
 +88       QUIT 
 +89      ;
ENQ(INPUT) ; Clean up
 +1       ; Input:   INPUT       - A1^A2^A3^...^A8 Where:
 +2       ;                         A1 - 1 if Detail report, 0 if summary report
 +3       ;                         A2 - 1 if displaying to Listman, 0 otherwise
 +4       ;                         A3 - 0 if NOT called from Nightly Process, 1 otherwise
 +5       ;                         A4 - Current Page Number
 +6       ;                         A5 - Stop Flag
 +7       ;                         A6 - Start of Date Range
 +8       ;                         A7 - End of Date Range
 +9       ;          ZTQUEUED    - Defined if Joh was queued
 +10      ; Output:  ZTREQ       - "@" Only returned if ZTQUEUED is defined
 +11       NEW XX,YY,ZZ
 +12      ; PRCA*4.5*321
           KILL ^TMP($JOB,"DEPERRS"),^TMP($JOB,"ONEDEP")
 +13       KILL ^TMP("RCDAILYACT",$JOB),^TMP("RCSELPAY",$JOB)
 +14       KILL ^TMP($JOB,"TOTALS")
 +15      ; PRCA*4.5*326
           KILL ^TMP("RCDPEU1",$JOB)
 +16       IF '$DATA(ZTQUEUED)
               Begin DoDot:1
 +17               DO ^%ZISC
 +18      ; Nightly Process Flag
                   SET XX=$PIECE(INPUT,"^",1)
 +19      ; Stop Flag
                   SET YY=$PIECE(INPUT,"^",5)
 +20      ; Current Page Number
                   SET ZZ=$PIECE(INPUT,"^",4)
 +21               IF 'XX
                       IF 'YY
                           IF ZZ
                               Begin DoDot:2
 +22                               SET XX=""
 +23                               DO ASK^RCDPEARL(.XX)
                               End DoDot:2
               End DoDot:1
 +24       IF $DATA(ZTQUEUED)
               SET ZTREQ="@"
 +25       QUIT 
 +26      ;
RPT1(INPUT) ;EP from RCDPEM1 (Nightly Process)
 +1       ; Output the report
 +2       ; Input:   INPUT       - A1^A2^A3^...^An Where:
 +3       ;                         A1 - 1 if called from Nightly Process, 0 otherwise
 +4       ;                         A2 - 1 if displaying to Listman, 0 otherwise
 +5       ;                         A4 - Current Page Number
 +6       ;                         A5 - Stop Flag
 +7       ;                         A6 - Start of Date Range
 +8       ;                         A7 - End of Date Range
 +9       ;          ^TMP(B1,$J,B2,B3)          = "" - Array of record IENs in 344.3 in date range
 +10      ;                                            and for selected payer(s) and division(s)
 +11      ;          ^TMP(B1,$J,B2,B3,"EFT",B4) = "" - Array of record IENS in 344.31 for above Where:
 +12      ;                        B1 - "RCDAILYACT"
 +13      ;                        B2 - Internal Date from DATE/TIME ADDED (344.3, .13)
 +14      ;                        B3 - Internal IEN for 344.3
 +15      ;                        B4 - Internal IEN for file 344.31
 +16      ; Output:  INPUT       - A1^A2^A3^...^An - The following pieces may be updated
 +17      ;                         A4 - Current Page Number
 +18      ;                         A5 - Stop Flag
 +19      ;
 +20       NEW CURPG,DETL,DTADD,DTEND,DTST,HDR1,LSTMAN,NJ
 +21      ; Detail Report flag
           SET DETL=$PIECE(INPUT,"^",3)
 +22      ; Listman flag
           SET LSTMAN=$PIECE(INPUT,"^",2)
 +23      ; Nightly Process flag
           SET NJ=$PIECE(INPUT,"^",1)
 +24      ; Current Page Number
           SET CURPG=$PIECE(INPUT,"^",4)
 +25      ; Date Range Start
           SET DTST=$PIECE(INPUT,"^",6)
 +26      ; Date Range End
           SET DTEND=$PIECE(INPUT,"^",7)
 +27      ; Current line counter
           SET $PIECE(INPUT,"^",8)=0
 +28       SET DTADD=""
 +29       FOR 
               Begin DoDot:1
 +30               SET DTADD=$ORDER(^TMP("RCDAILYACT",$JOB,DTADD))
 +31               if DTADD=""
                       QUIT 
 +32      ;
 +33      ; PRCA*4.5*321
                   IF 'LSTMAN
                       IF DETL
                           Begin DoDot:2
 +34                           DO HDR^RCDPEDA3(.INPUT)
                           End DoDot:2
                           if $PIECE(INPUT,"^",5)=1
                               QUIT 
 +35      ;
 +36      ; Detail Report
                   IF DETL
                       Begin DoDot:2
 +37      ; PRCA*4.5*321 moved location
                           SET HDR1="DATE EFT DEPOSIT RECEIVED: "_$$FMTE^XLFDT(DTADD,"2Z")
 +38      ; Center it
                           SET HDR1=$JUSTIFY("",80-$LENGTH(HDR1)\2)_HDR1
 +39                       DO SL^RCDPEDA3(.INPUT,HDR1)
 +40                       DO SL^RCDPEDA3(.INPUT," ")
                       End DoDot:2
 +41               SET $PIECE(INPUT,"^",9)=DTADD
 +42      ; Process all 344.3 records found
                   DO RPT2^RCDPEDA2(.INPUT)
 +43      ; User quit
                   if $PIECE(INPUT,"^",5)=1
                       QUIT 
 +44      ; Display Totals for Date
                   DO TOTSDAY^RCDPEDA3(.INPUT)
               End DoDot:1
               if DTADD=""
                   QUIT 
               if $PIECE(INPUT,"^",5)=1
                   QUIT 
 +45      ;
 +46      ; User quit
           if $PIECE(INPUT,"^",5)=1
               QUIT 
 +47      ; Display Final Totals
           DO TOTSF^RCDPEDA3(.INPUT)
 +48      ; Display End of Report
           DO SL^RCDPEDA3(.INPUT,$$ENDORPRT^RCDPEARL)
 +49       QUIT 
 +50      ;
CHKDIV(IEN,FLG,VAUTD) ;
 +1       ; IEN - ien in file 344.31 or 344.4
 +2       ; FLG - 0 if IEN contains ien in file 344.31, 1 if IEN contains ien in file 344.4
 +3       ; VAUTD - array of selected divisions from DIVISION^VAUTOMA API call
 +4       ; returns 1 if division associated with an entry in 344.31 is on the list in VAUTD
 +5       ; returns 0 otherwise
 +6        NEW ERA,I,NAME,RCSTA,RES
 +7        SET RES=0
 +8        IF VAUTD=1
               SET RES=1
               GOTO CHKDIVX
 +9        IF 'IEN
               GOTO CHKDIVX
 +10       SET ERA=$SELECT(FLG:IEN,1:$PIECE($GET(^RCY(344.31,IEN,0)),U,10))
 +11       SET RCSTA=$$ERASTA^RCDPEM3(ERA)
           SET NAME=$PIECE(RCSTA,U)
 +12       IF NAME="UNKNOWN"
               GOTO CHKDIVX
 +13       SET I=0
           IF 'VAUTD
               FOR 
                   SET I=$ORDER(VAUTD(I))
                   if 'I!RES
                       QUIT 
                   IF NAME=VAUTD(I)
                       SET RES=1
CHKDIVX   ;
 +1        QUIT RES
 +2       ;
EXCEL(INPUT) ; Loop to print Excel Format ;PRCA*4.5*439 Add EXCEL tag
 +1       ; Input:   INPUT       - A1^A2^A3^...^An Where:
 +2       ;                         A1 - 1 if called from Nightly Process, 0 otherwise
 +3       ;                         A2 - 1 if displaying to Listman, 0 otherwise
 +4       ;                         A4 - Current Page Number
 +5       ;                         A5 - Stop Flag
 +6       ;                         A6 - Start of Date Range
 +7       ;                         A7 - End of Date Range
 +8       ; Output in Excel Format
 +9        DO EXCELHDR^RCDPEDA4
 +10       NEW DTADD,IEN3443,IEN34431
 +11      ;
 +12       SET DTADD=""
 +13       FOR 
               Begin DoDot:1
 +14               SET DTADD=$ORDER(^TMP("RCDAILYACT",$JOB,DTADD))
                   if DTADD=""
                       QUIT 
 +15               SET IEN3443=""
 +16               FOR 
                       SET IEN3443=$ORDER(^TMP("RCDAILYACT",$JOB,DTADD,IEN3443))
                       if 'IEN3443
                           QUIT 
                       Begin DoDot:2
 +17                       SET IEN34431=""
 +18                       FOR 
                               SET IEN34431=$ORDER(^TMP("RCDAILYACT",$JOB,DTADD,IEN3443,"EFT",IEN34431))
                               if 'IEN34431
                                   QUIT 
                               Begin DoDot:3
 +19                               DO EXCEL2(IEN3443,IEN34431)
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
               if DTADD=""
                   QUIT 
               if $PIECE(INPUT,"^",5)=1
                   QUIT 
 +20      ;
 +21       WRITE !!,"*** END OF REPORT ***",!
 +22       QUIT 
 +23      ;
EXCEL2(IEN3443,IEN34431) ; Print lines in Excel format ;PRCA*4.5*439 Add EXCEL3 tag
 +1       ; Output in Excel foramt
 +2       ; Input:   IEN3443    - Internal IEN for 344.3
 +3       ;          IEN34431   - Internal IEN for file 344.31
 +4       ;
 +5        NEW DEPDT,DEPNUM,DFLG,IEN344,MDT,MULT,PAMT,PAYER,PAYID,RCDBAL,RCDEBIT,TOTDEP,TRDOC,TRDOCS,TRSTAT,X,XX,YY
 +6       ;PRCA*4.5*380 - Check for multiple mail messages on this deposit
 +7        if $ORDER(^RCY(344.3,IEN3443,3,0))'=""
               SET MULT="*"
 +8       ;PRCA*4.5*380 - Check if prior deposits exist
 +9       ; Deposit Number and Deposit Date
           SET DEPNUM=$$GET1^DIQ(344.3,IEN3443,.06,"I")
           SET DEPDT=$$GET1^DIQ(344.3,IEN3443,.07,"I")
 +10       SET XX=$ORDER(^RCY(344.3,"ADEP2",DEPNUM,DEPDT,0))
           SET XX=$ORDER(^RCY(344.3,"ADEP2",DEPNUM,DEPDT,XX))
 +11       if XX'=""
               SET MULT=$GET(MULT)_"+"
 +12      ; Total Deposit
           SET TOTDEP=$$GET1^DIQ(344.3,IEN3443,.08,"I")
 +13      ; Is Deposit balanceD, 0-No, 1-Yes
           SET RCDBAL=$$DEPBAL^RCDPEDA4(IEN3443)
           SET RCDBAL=$SELECT(RCDBAL:"",1:"UNBALANCED")
 +14      ;PRCA*4.5*380 - Include multi-mail message indicator with date
 +15      ;Deposit #^Unbalanced Indicator^Deposit Date_Multi Flag^Total Deposit
           WRITE !,DEPNUM,"^",RCDBAL,"^",$$FMTE^XLFDT(DEPDT\1,"2Z"),$GET(MULT),"^",TOTDEP,"^"
 +16      ; Debit/Credit flag ; PRCA*4.5*321 added line
           SET YY=$$GET1^DIQ(344.31,IEN34431,3,"E")
 +17      ; PRCA*4.5*321 added line
           SET DFLG=$SELECT(YY="D":1,1:0)
 +18      ; Amount of Payment
           SET PAMT=$$GET1^DIQ(344.31,IEN34431,.07,"I")
 +19      ; Receipt # from 344.31
           SET XX=+$$GET1^DIQ(344.31,IEN34431,.09,"I")
 +20      ; FMS Document #
           SET TRDOC=$$GET1^DIQ(344,XX,200,"I")
 +21      ; Default ON-LINE ENTRY status to accepted - PRCA*4.5*326
           IF $$GET1^DIQ(344,XX,201,"I")
               SET X="ACCEPTED"
 +22      ; PRCA*4.5*326
          IF '$TEST
               SET X=$SELECT(TRDOC'="":$$STATUS^GECSSGET(TRDOC),1:"")
 +23       SET XX=$SELECT(X="":"",X=-1:"NO FMS DOC",1:$EXTRACT($PIECE(X," ",1),1,10))
 +24       WRITE XX,"^"
 +25      ; EFT Transaction detail - PRCA*4.5*326
           SET XX=$$GET1^DIQ(344.31,IEN34431,.01,"E")
 +26       WRITE XX,"^"
 +27      ; Date Claims Paid
           SET XX=$$GET1^DIQ(344.31,IEN34431,.12,"I")
 +28       WRITE $$FMTE^XLFDT(XX\1,"2Z"),"^"
 +29      ; Amount of Payment
           SET XX=$$GET1^DIQ(344.31,IEN34431,.07,"I")
 +30      ; Check for Debit
           SET RCDEBIT=$$GET1^DIQ(344.31,IEN34431,3,"E")
 +31      ; If Debit, add minus sign
           IF '($EXTRACT(XX)="-")
               SET XX=$SELECT(RCDEBIT="D":"-",1:"")_XX
 +32       WRITE XX,"^"
 +33      ;
 +34      ; Match Status, Internal
           SET XX=$$GET1^DIQ(344.31,IEN34431,.08,"I")
 +35      ; ERA IEN
           SET YY=$$GET1^DIQ(344.31,IEN34431,.1,"I")
 +36       SET MDT=""
 +37      ; PRCA*4.5*326 - Date matched to ERA
           IF XX=1
               SET MDT=$$MATCHDT^RCDPEWL7(IEN34431)
 +38      ; Match Status, External
           SET XX=$$GET1^DIQ(344.31,IEN34431,.08,"E")
 +39      ; Match Status^ERA^Date Matched
           WRITE XX,"^",YY,"^",MDT,"^"
 +40      ; Trace Number
           SET XX=$$GET1^DIQ(344.31,IEN34431,.04,"I")
 +41       WRITE XX,"^"
 +42      ; Receipt IEN
           SET IEN344=$$GET1^DIQ(344.31,IEN34431,.09,"I")
 +43       SET XX=""
 +44      ; FMS Document Number
           IF IEN344'=""
               SET XX=$$GET1^DIQ(344,IEN344,200,"I")
 +45       WRITE XX,"^"
 +46      ; Payer Name
           SET PAYER=$$GET1^DIQ(344.31,IEN34431,.02,"I")
 +47       if PAYER=""
               SET PAYER="NO PAYER NAME RECEIVED"
 +48      ; Payer ID (TIN)
           SET PAYID=$$GET1^DIQ(344.31,IEN34431,.03,"I")
 +49      ; Payer Name^Payer ID (TIN)
           WRITE PAYER,"^",PAYID,"^"
 +50      ; Get TR #s
 +51      ; Get comma delimited list of TR document #s and status
           DO EXCELTR(IEN344,IEN34431,.TRDOCS,.TRSTAT)
 +52       WRITE TRDOCS,"^"
 +53       SET XX=""
 +54      ; Receipt Number
           IF IEN344'=""
               SET XX=$$GET1^DIQ(344,IEN344,.01,"I")
 +55       WRITE XX,"^"
 +56       WRITE TRSTAT
 +57       QUIT 
 +58      ;
EXCELTR(IEN344,IEN34431,TRDOCS,TRSTAT) ;Get TR #s  ;PRCA*4.5*439 Add EXCELTR tag
 +1       ; Input:   IEN344     - Internal IEN for file 344
 +2       ;          IEN34431   - Internal IEN for file 344.31
 +3       ;          TRDOCS     - Variable to hold list of TR document numbers
 +4       ;
 +5       ; Output:  TRDOCS     - List of TR document numbers
 +6       ;
 +7        NEW IEN3444,IENS,RECEIPT,TRDOC,XX
 +8       ; Initialize list of TR document numbers and status
           SET TRDOCS=""
           SET TRSTAT=""
 +9       ; Internal IEN for for 344.4
           SET IEN3444=$$GET1^DIQ(344.31,IEN34431,.1,"I")
 +10      ; Receipt # from 344.31
           SET RECEIPT=+$$GET1^DIQ(344.31,IEN34431,.09,"I")
 +11       if 'IEN3444
               QUIT 
 +12      ; If a receipt exists, get FMS doc # and status
           IF $LENGTH(RECEIPT)
               Begin DoDot:1
 +13      ; FMS Document #
                   SET TRDOC=$TRANSLATE($$GET1^DIQ(344,RECEIPT,200,"I")," ")
 +14      ; Default ON-LINE ENTRY status to accepted - PRCA*4.5*326
                   IF $$GET1^DIQ(344,RECEIPT,201,"I")
                       SET TRSTAT="ACCEPTED"
 +15              IF '$TEST
                       SET TRSTAT=$SELECT(TRDOC'="":$$STATUS^GECSSGET(TRDOC),1:"")
               End DoDot:1
 +16      ;
 +17       SET TRDOC=""
 +18      ; Receipt # from 344.4
           SET RECEIPT=$$GET1^DIQ(344.4,IEN3444,.08,"I")
 +19       IF RECEIPT=""
               QUIT 
 +20      ; FMS Document #
           SET TRDOC=$TRANSLATE($$GET1^DIQ(344,RECEIPT,200,"I")," ")
 +21       IF TRDOC=""
               QUIT 
 +22      ; First TR Document #
           SET TRDOCS=TRDOC
 +23       SET XX=""
 +24      ; If EFT is matched to an ERA, look for additional TR Documents
           FOR 
               Begin DoDot:1
 +25               SET XX=$ORDER(^RCY(344.4,IEN3444,8,XX))
 +26               if XX=""
                       QUIT 
 +27               SET IENS=XX_","_IEN3444_","
 +28      ; Other receipt numbers
                   SET RECEIPT=$$GET1^DIQ(344.48,IENS,.01,"I")
 +29               IF RECEIPT=""
                       QUIT 
 +30      ; FMS Document #
                   SET TRDOC=$TRANSLATE($$GET1^DIQ(344,RECEIPT,200,"I")," ")
 +31               if TRDOC=""
                       QUIT 
 +32      ; Comma delimited list of TR Document #s
                   SET TRDOCS=TRDOCS_","_TRDOC
               End DoDot:1
               if XX=""
                   QUIT 
 +33       QUIT 
 +34      ;
EXCELRST(IEN344,TRDOCS,TRSTAT) ; Get Deposit Receipt Status  ;PRCA*4.5*439 Add EXCELRST tag
 +1       ; Input:   IEN344     - Internal IEN for 344
 +2       ;          TRDOCS     - Variable to hold list of TR document numbers
 +3       ;          TRSTAT     - Variable to hold Deposit Receipt Status
 +4       ;
 +5       ; Output:  TRSTAT     - Deposit Receipt Status
 +6       ;
 +7        NEW TRDOC,X
 +8       ; Initialize status to null
           SET TRSTAT=""
 +9       ; Get first TR document, Deposit Receipt Status is null
           SET TRDOC=$PIECE(TRDOCS,",",1)
 +10      ; Quit if there isn't a TR document
           if '$LENGTH(TRDOC)
               QUIT 
 +11      ; Default ON-LINE ENTRY status to accepted - PRCA*4.5*326
           IF $$GET1^DIQ(344,IEN344,201,"I")
               SET X="ACCEPTED"
 +12      ; PRCA*4.5*326
          IF '$TEST
               SET X=$SELECT(TRDOC'="":$$STATUS^GECSSGET(TRDOC),1:"")
 +13      ; FMS Document Status for EFT
           SET TRSTAT=$SELECT(X="":"",X=-1:"NO FMS DOC",1:$EXTRACT($PIECE(X," ",1),1,10))
 +14       QUIT 
 +15      ; Moved tags RCDPEDA4: RTYPE, DTRANGE, DBTONLY, EXCELHDR; PRCA*4.5*439