- RCDPE8NZ ;ALB/TMK/KML/JCH - Unapplied EFT Deposits report ;Jun 06, 2014@19:11:19
- ;;4.5;Accounts Receivable;**173,212,208,269,276,283,293,298,317,318,326,375,371,432**;Mar 20, 1995;Build 16
- ;Per VA Directive 6402, this routine should not be modified.
- ;
- EN ; entry point for Unapplied EFT Deposits Report [RCDPE UNAPPLIED EFT DEP REPORT]
- ; ^RCY(344.3,0) = EDI LOCKBOX DEPOSIT^344.3I^
- ;
- N %ZIS,DIR,RCDET,RCDISPTY,RCDTRNG,RCENDT,RCHDR,RCLNCNT,RCLSTMGR,RCPGNUM,RCRPLST,RCSTDT,RCTMPND,RCTYPE,RPTQ,X,Y
- ; RCDET - detail report or grand totals only
- ; RCDISPTY - display type for Excel
- ; RCDTRNG - range of dates
- ; RCHDR - report header
- ; RCLNCNT - line counter for ^TMP storage
- ; RCLSTMGR - ListMan flag
- ; RCPGNUM - page number
- ; RCRPLST - node for report list in ^TMP
- ; RCTMPND - storage node (or null) for SL^RCPEARL
- ; RCTYPE - Payer type filter M - MEDICAL, P-PHARMACY, T-TRICARE, C-CHAMPVA, A-ALL ;PRCA*4.5*432 CHAMPVA
- ;
- S RCRPLST=$T(+0)_"_EFT" ; storage for list of entries
- S RCLNCNT=0,RCLSTMGR="",RCTMPND="" ; initial values for ListMan
- S RCDET=$$RDET("D") G:(RCDET=-1) RPTQ ; PRCA*4.5*371 - Prompt for detail report or grand total only
- S RCTYPE="A",(RCDTRNG,RCSTDT,RCENDT,RCDISPTY,RCLSTMGR)="",RPTQ=0 ; PRCA*4.5*371 - Make sure these don't crash grand totals report
- ;PRCA*4.5*371 - Change G RPTQ commands to setting a quit variable, because GOTO in a DO block apparently doesn't actually GOTO
- I RCDET'="G" D G:RPTQ RPTQ ;PRCA*4.5*371 - Don't prompt for any other options if grand total only selected
- .S RCTYPE=$$RTYPE^RCDPEU1("A") I (RCTYPE=-1) S RPTQ=1 Q ; PRCA*4.5*326 - Add M/P/T filter
- .S RCDTRNG=$$DTRNG^RCDPEM4() I '(RCDTRNG>0) S RPTQ=1 Q
- .S RCSTDT=$P(RCDTRNG,U,2),RCENDT=$P(RCDTRNG,U,3)
- .; ask if export to excel
- .S RCDISPTY=$$DISPTY^RCDPEM3() I RCDISPTY<0 S RPTQ=1 Q
- .; for Excel, set ListMan flag to prevent question
- .I RCDISPTY S RCLSTMGR="^" D INFO^RCDPEM6
- .I RCLSTMGR="" S RCLSTMGR=$$ASKLM^RCDPEARL I RCLSTMGR<0 S RPTQ=1 Q
- .I RCLSTMGR D S RPTQ=1 Q ; send output to ListMan
- ..S RCTMPND=$T(+0)_"^UNAPPLIED EFT" K ^TMP($J,RCTMPND) ; clean any residue
- ..D MKRPRT
- ..N H,L,HDR S L=0
- ..S HDR("TITLE")=$$HDRNM
- ..F H=1:1:7 I $D(RCHDR(H)) S L=H,HDR(H)=RCHDR(H) ; take first 3 lines of report header
- ..I $O(RCHDR(L)) D ; any remaining header lines at top of report
- ...N N S N=0,H=L F S H=$O(RCHDR(H)) Q:'H S N=N+.001,^TMP($J,RCTMPND,N)=RCHDR(H)
- ..; invoke ListMan
- ..D LMRPT^RCDPEARL(.HDR,$NA(^TMP($J,RCTMPND))) ; generate ListMan display
- ;
- ; Ask device
- S %ZIS="QM" D ^%ZIS Q:POP
- I $D(IO("Q")) D Q
- .N ZTRTN,ZTSAVE,ZTDESC,POP,ZTSK
- .S ZTRTN="MKRPRT^RCDPE8NZ",ZTDESC="AR - List of unlinked EFT deposit payments"
- .S ZTSAVE("RC*")=""
- .D ^%ZTLOAD
- .W !!,$S($G(ZTSK):"Task number "_ZTSK_" was queued.",1:"Unable to queue this task.")
- .K ZTSK,IO("Q") D HOME^%ZIS
- ;
- U IO
- D MKRPRT
- Q
- ;
- MKRPRT ; Entry point for queued job
- N RCTSKCNT,RCARDEP,RCCR,RCDA,RCDATA,RCDT,RCEFT,RCEFTIEN,RCREC,RCSTAT,RCSTOP,RCSUM,RCTOT,RCTR,RCUNAP,RECEXT,Y,Z,ZTSTOP
- ;
- ; get list of unlinked EFT deposit data
- K ^TMP(RCRPLST,$J) ; subscripts: dep date,EFT ien,EFT det ien
- ; Data is FMS doc indicator^FMS doc #^FMS Doc Status
- ; FMS doc indicator = -1:no receipt -2:no FMS doc 1:FMS doc exists
- ;
- S (RCTSKCNT,RCSTOP,RCSUM,RCUNAP)=0
- S RCARDEP="" F S RCARDEP=$O(^RCY(344.3,"ARDEP",RCARDEP)) Q:RCARDEP=""!RCSTOP S RCDA=0 F S RCDA=$O(^RCY(344.3,"ARDEP",RCARDEP,RCDA)) Q:'RCDA D Q:RCSTOP
- . S RCDATA=$G(^RCY(344.3,RCDA,0)),RCDT=$P(RCDATA,U,7),RCTOT=0
- . Q:+RCSTDT&(RCDT<RCSTDT) ; Before start date
- . Q:+RCENDT&(RCDT>(RCENDT+.999999)) ; After the end date
- . Q:'$P(RCDATA,"^",8) ; no payment amt
- . S RCEFT=0 F S RCEFT=$O(^RCY(344.31,"B",RCDA,RCEFT)) Q:'RCEFT!RCSTOP S RCDATA(0)=$G(^RCY(344.31,RCEFT,0)) D Q:RCSTOP
- . . I '$$ISTYPE^RCDPEU1(344.31,RCEFT,RCTYPE) Q ;PRCA*4.5*326
- . . Q:$P($G(^RCY(344.31,RCEFT,0)),U,16)="D" ; PRCA*4.5*375 - Do not show Debit EFTs because there's nothing to apply
- . . S RCTSKCNT=RCTSKCNT+1
- . . I '(RCTSKCNT#100),$D(ZTQUEUED),$$S^%ZTLOAD S (RCSTOP,ZTSTOP)=1 K ZTREQ Q
- . . Q:$P($G(^RCY(344.31,RCEFT,3)),U) ; EFT has been removed PRCA*4.5*293
- . . S RCREC=$$GETREC(RCEFT,RCDATA(0),.RECEXT)
- . . Q:RCREC="PURGED" ; need to prevent processed EFTs that had receipts purged from being generated on the report
- . . ;; PRCA276 - need to add EFT entries without a receipt to the total number of unapplied deposits
- . . I 'RCREC S RCUNAP=RCUNAP+1,^TMP(RCRPLST,$J,RCDT,RCDA,RCEFT)=-1,RCTOT=RCTOT+$P(RCDATA(0),U,7) Q ; No receipt therefore no FMS document
- . . S RCSTAT=$$FMSSTAT^RCDPUREC(RCREC)
- . . I $E($P(RCSTAT,U),1,2)="TR",$P(RCSTAT,U,2)["ACCEPTED" Q
- . . S RCUNAP=RCUNAP+1,RCTOT=RCTOT+$P(RCDATA(0),U,7) ; total unapplied deposits and total dollar amount of unapplied deposits
- . . I $P(RCSTAT,U,2)="NOT ENTERED" S ^TMP(RCRPLST,$J,RCDT,RCDA,RCEFT)="-2^^"_$P(RCSTAT,U) Q ; No FMS doc
- . . S ^TMP(RCRPLST,$J,RCDT,RCDA,RCEFT)="1^"_$P(RCSTAT,U,1,2)_"^"_RECEXT
- . S:RCTOT ^TMP(RCRPLST,$J,RCDT,RCDA)=RCTOT,RCSUM=RCSUM+RCTOT
- ;
- D:'RCLSTMGR HDRBLD
- D:RCLSTMGR HDRLM
- ;
- I RCDISPTY D EXCEL Q
- ;
- D RPT
- Q
- ;
- RPT ; display/print the report using data populated in temporary global array
- N RCPAYID,RCPAYER,XX,YY,ZZ ;PRCA*4.5*318
- ;
- D:'RCLSTMGR HDRLST^RCDPEARL(.RCSTOP,.RCHDR) ; initial report header
- G:RCDET="G" RPTQ ; PRCA*4.5*371 - Quit here if grand totals only report
- ;
- S RCDT=0
- F S RCDT=$O(^TMP(RCRPLST,$J,RCDT)) Q:'RCDT D Q:RCSTOP
- .I 'RCLSTMGR,$Y>(IOSL-RCHDR(0)) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
- .D SL^RCDPEARL(" ",.RCLNCNT,RCTMPND) ; skip a line
- .S Y="DEPOSIT DATE: "_$$FMTE^XLFDT(RCDT,1),Y=$J("",80-$L(Y)\2)_Y D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- .S RCARDEP=0 F S RCARDEP=$O(^TMP(RCRPLST,$J,RCDT,RCARDEP)) Q:'RCARDEP D
- ..D SL^RCDPEARL(" ",.RCLNCNT,RCTMPND) ; skip a line
- ..S RCTSKCNT=RCTSKCNT+1 I 'RCLSTMGR,(RCTSKCNT#100),$D(ZTQUEUED),$$S^%ZTLOAD D Q ; stop task
- ...S (RCSTOP,ZTSTOP)=1 D SL^RCDPEARL("TASK STOPPED BY USER!!",.RCLNCNT,RCTMPND) K ZTREQ
- ..;
- ..S RCDATA(0)=$G(^RCY(344.3,RCARDEP,0))
- ..I 'RCLSTMGR,$Y>(IOSL-RCHDR(0)) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
- ..; PRCA*4.5*283 - Change the spaces for DEP # from 10 to 13 to allow 9 digit DEP #
- ..; PRCA*4.5*317 Shift line 2 chars to the right
- ..S Y=" "_$E($P(RCDATA(0),U,6)_$S('$$HACEFT^RCDPEU(RCARDEP):"",1:"-HAC")_$J("",13),1,13) ;deposit #
- ..S Y=Y_" "_$E($$FMTE^XLFDT($P(RCDATA(0),U,7),2)_$J("",16),1,16) ; deposit date
- ..S Y=Y_" "_$E($J(+$P(RCDATA(0),U,8),"",2)_$J("",20),1,20) ; total amt deposit
- ..S Y=Y_" "_$J(+$G(^TMP(RCRPLST,$J,RCDT,RCARDEP)),"",2) ; total amt unposted
- ..D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- ..S RCEFTIEN=0 F S RCEFTIEN=$O(^TMP(RCRPLST,$J,RCDT,RCARDEP,RCEFTIEN)) Q:'RCEFTIEN S RCDATA=$G(^(RCEFTIEN)),RCEFT("DEP")=$G(^RCY(344.31,RCEFTIEN,0)) D
- ...I 'RCLSTMGR,$Y>(IOSL-RCHDR(0)) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
- ...N RCPAY S RCPAY=$P(RCEFT("DEP"),U,2) S:RCPAY="" RCPAY="NO PAYER NAME RECEIVED" ; PRCA*4.5*298
- ...;
- ...; PRCA*4.5*317 Shift line 2 chars to the right
- ...;S Y=" "_RCPAY_"/"_$P(RCEFT("DEP"),U,3) D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND) ; payer/ID
- ...; PRCA*4.5*318 Account for payer names of 60 characters and payer ID of 20 characters
- ...S RCPAYID=$P(RCEFT("DEP"),U,3)
- ...S RCPAYER=RCPAY_"/"_RCPAYID ; payer/ID
- ...I $L(RCPAYER)>77 D
- ... . S ZZ=$L(RCPAYER,"/"),XX=$P(RCPAYER,"/",1,ZZ-1),YY=$P(RCPAYER,"/",ZZ)
- ... . S XX=$E(XX,1,$L(XX)-($L(RCPAYER)-77)),RCPAYER=XX_"/"_YY
- ...S Y=" "_RCPAYER
- ...; end of PRCA*4.5*318
- ...D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND) ; payer/ID
- ...; PRCA*4.5*317 Shift line 2 chars to the right
- ...S Y=" "_$E($P(RCEFT("DEP"),U,4)_$J("",50),1,50) ; trace #
- ...S Y=Y_" "_$E($J(+$P(RCEFT("DEP"),U,7),"",2)_$J("",12),1,12) ; payment amt
- ...;
- ...; PRCA*4.5*317 Shift lines 2 to thr right to allow 12 digit receipt #
- ...S Y=Y_" "_$S($P(RCDATA,U,4)'="":$P(RCDATA,U,4),1:"NO RECEIPT") ; receipt #
- ... D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- ...; PRCA*4.5*317 Shift line 2 chars to the right
- ...S Z=$P(RCEFT("DEP"),U,8)
- ...S Y=" "_$E($S('Z:"UNMATCHED",Z=2:"PAPER EOB",1:"MATCHED TO ERA #: "_$P(RCEFT("DEP"),U,10)_$S(Z=-1:" (TOTALS MISMATCH)",1:""))_$J("",40),1,40)_" "
- ...S Y=Y_$S($P(RCDATA,U)=-1:"NO RECEIPT",$P(RCDATA,U)=-2:"NO FMS DOCUMENT",1:$E($P(RCDATA,U,2)_" - "_$P(RCDATA,U,3),1,30))
- ...D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- ;
- I '$D(^TMP(RCRPLST,$J)) D SL^RCDPEARL("*** NO RECORDS TO PRINT ***",.RCLNCNT,RCTMPND)
- ;
- I 'RCSTOP D SL^RCDPEARL(" ",.RCLNCNT,RCTMPND),SL^RCDPEARL($$ENDORPRT^RCDPEARL,.RCLNCNT,RCTMPND)
- I $D(ZTQUEUED) S ZTREQ="@"
- D:'$D(ZTQUEUED) ^%ZISC
- G:RCSTOP RPTQ
- ;
- RPTQ ;
- I '$G(RCLSTMGR),'$G(RCSTOP),$E(IOST,1,2)="C-" D ASK^RCDPEARL(.RCSTOP)
- K ^TMP(RCRPLST,$J)
- Q
- ;
- GETREC(EFTDA,EFTDET,RECEXT) ; function, prca276
- ; input - EFTDA - IEN OF 344.31
- ; input - EFTDET - data stored at the 0 subscript of the THIRD PARTY EFT DETAIL file (344.31)
- ; input - RECEXT passed by reference
- ; output - RECEXT populated with the external receipt value that gets generated on the report
- ; output - RECEIPT - returns internal value of the receipt that either comes from the EFT file (344.31) or the ERA file (344.4)
- N RECEIPT
- S RECEXT=0
- S RECEIPT=+$P($G(^RCY(344.4,+$P(EFTDET,U,10),0)),U,8) ; get receipt off the ERA record
- I 'RECEIPT,$P(EFTDET,U,8)=2 S RECEIPT=+$O(^RCY(344,"AEFT",EFTDA,0)) ; EFT processed against paper EOB
- I 'RECEIPT S RECEIPT=$P(EFTDET,U,9) ; receipt not posted in payment file so get from EFT detail (unprocessed EFT)
- I +RECEIPT,'$D(^RCY(344,RECEIPT)) Q "PURGED" ; handle purged receipts but broken pointer exists in 344.31; need to handle as a processed EFT
- I +RECEIPT S RECEXT=$P(^RCY(344,RECEIPT,0),U)
- Q +RECEIPT
- ;
- ;
- HDRBLD ; create the report header
- ; returns RCHDR, RCPGNUM, RCSTOP
- ; RCHDR(0) = header text line count
- ; RCHDR("XECUTE") = M code for page number
- ; RCHDR("RUNDATE") = date/time report generated, external format
- ; RCPGNUM - page counter
- ; RCSTOP - flag to exit
- ; INPUT:
- ; RCDISPTY - Display/print/Excel flag
- ; RCRTYP - Report Type (EOB or ERA)
- ; VAUTD
- K RCHDR S RCHDR("RUNDATE")=$$NOW^RCDPEARL,RCPGNUM=0,RCSTOP=0
- ;
- ;
- I RCDISPTY D Q ; Excel format, xecute code is QUIT, null page number
- .S RCHDR(0)=1,RCHDR("XECUTE")="Q",RCPGNUM=""
- .S RCHDR(1)="DEPOSIT #^DEPOSIT DATE^TOT AMT DEPOSIT^TOT AMT UNPOSTED^PAYER ID^TRACE #^PAYMENT AMT^RECEIPT #^ERA MATCHED^FMS DOC #/STATUS"
- ;
- N DIV,HCNT,Y
- S HCNT=0 ; header counter
- ;
- S Y=$$HDRNM,HCNT=1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y ; line 1 will be replaced by XECUTE code below
- S RCHDR("XECUTE")="N Y S RCPGNUM=RCPGNUM+1,Y=$$HDRNM^"_$T(+0)_"_$S(RCLSTMGR:"""",1:$J(""Page: ""_RCPGNUM,12)),RCHDR(1)=$J("" "",80-$L(Y)\2)_Y"
- S Y="Run Date: "_RCHDR("RUNDATE")
- I RCDET'="G" D ; PRCA*4.5*371 - Don't display MPT information in Grand Totals report
- . S Y=Y_" MEDICAL/PHARMACY/TRICARE/CHAMPVA: " ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- . S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
- ;
- S:RCDET="G" Y="GRAND TOTAL",Y=$J("",80-$L(Y)\2)_Y ; PRCA*4.5*371 - Grand Totals report
- S:RCDET'="G" Y="Date Range: "_$$FMTE^XLFDT(RCSTDT,2)_" - "_$$FMTE^XLFDT(RCENDT,2)_" (Deposit Date)",Y=$J("",80-$L(Y)\2)_Y
- S HCNT=HCNT+1,RCHDR(HCNT)=Y
- S Y="TOTAL NUMBER OF UNAPPLIED DEPOSITS: "_RCUNAP,HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
- S Y="TOTAL AMOUNT OF UNAPPLIED DEPOSITS: $"_$FN(RCSUM,",",2),HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
- S HCNT=HCNT+1,RCHDR(HCNT)=""
- ;
- I RCDET'="G" D ; PRCA*4.5*371 - Don't display details on grand total report
- .; PRCA*4.5*317 Shift each line 2 chars to the right
- .S HCNT=HCNT+1,RCHDR(HCNT)=" DEPOSIT # DEPOSIT DATE TOT AMT OF DEPOSIT TOT AMT UNPOSTED"
- .S HCNT=HCNT+1,RCHDR(HCNT)=" PAYER/ID"
- .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",4)_"TRACE #"_$J("",44)_"PAYMENT AMT RECEIPT #"
- .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",6)_$E("ERA MATCHED"_$J("",40),1,40)_" FMS DOC #/STATUS"
- .; PRCA*4.5*317 End
- S Y="",$P(Y,"=",81)="",HCNT=HCNT+1,RCHDR(HCNT)=Y ; row of equal signs at bottom
- ;
- S RCHDR(0)=HCNT ; header line count
- Q
- ;
- HDRLM ; create the report header
- ; returns RCHDR
- ; RCHDR(0) = header text line count
- ; INPUT:
- ; RCSTDT - Date Range
- K RCHDR
- ;
- N DIV,HCNT,Y
- S HCNT=0 ; header counter
- S Y="Date Range: "_$$FMTE^XLFDT(RCSTDT,2)_" - "_$$FMTE^XLFDT(RCENDT,2)_" (Deposit Date) "
- S Y=Y_"MED/PHARM/TRIC/CHAMPVA: " ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- S HCNT=HCNT+1,RCHDR(HCNT)=Y
- S Y="TOTAL NUMBER OF UNAPPLIED DEPOSITS: "_RCUNAP,HCNT=HCNT+1,RCHDR(HCNT)=Y
- S Y="TOTAL AMOUNT OF UNAPPLIED DEPOSITS: $"_$FN(RCSUM,",",2),HCNT=HCNT+1,RCHDR(HCNT)=Y
- ;
- ; PRCA*4.5*317 Shift each line 2 chars to the right
- S HCNT=HCNT+1,RCHDR(HCNT)=" DEPOSIT # DEPOSIT DATE TOT AMT OF DEPOSIT TOT AMT UNPOSTED"
- S HCNT=HCNT+1,RCHDR(HCNT)=" PAYER/ID"
- S HCNT=HCNT+1,RCHDR(HCNT)=$J("",4)_"TRACE #"_$J("",44)_"PAYMENT AMT RECEIPT #"
- S HCNT=HCNT+1,RCHDR(HCNT)=$J("",6)_$E("ERA MATCHED"_$J("",40),1,40)_" FMS DOC #/STATUS"
- ; PRCA*4.5*317 End
- ;
- S RCHDR(0)=HCNT ; header line count
- Q
- ;
- ; extrinsic variable, name for header PRCA*4.5*298
- HDRNM() Q "Unapplied EFT Deposits Report"
- ;
- EXCEL ; Print report formatted for export to Excel
- N STR1
- W !,$G(RCHDR(1)),!
- S RCDT=0 F S RCDT=$O(^TMP(RCRPLST,$J,RCDT)) Q:'RCDT D Q:RCSTOP
- .S RCARDEP=0 F S RCARDEP=$O(^TMP(RCRPLST,$J,RCDT,RCARDEP)) Q:'RCARDEP D
- ..S RCDATA(0)=$G(^RCY(344.3,RCARDEP,0))
- ..S STR1=$P(RCDATA(0),U,6)_$S('$$HACEFT^RCDPEU(RCARDEP):"",1:"-HAC")_U_$$FMTE^XLFDT($P(RCDATA(0),U,7))_U_$P(RCDATA(0),U,8)_U
- ..S STR1=STR1_+$G(^TMP(RCRPLST,$J,RCDT,RCARDEP))_U
- ..S RCEFTIEN=0 F S RCEFTIEN=$O(^TMP(RCRPLST,$J,RCDT,RCARDEP,RCEFTIEN)) Q:'RCEFTIEN S RCDATA=$G(^(RCEFTIEN)),RCEFT("DEP")=$G(^RCY(344.31,RCEFTIEN,0)) D
- ...W STR1 S:$P(RCEFT("DEP"),U,2)="" $P(RCEFT("DEP"),U,2)="NO PAYER NAME RECEIVED" ;PRCA*4.5*298
- ...W $P(RCEFT("DEP"),U,2)_"/"_$P(RCEFT("DEP"),U,3)_U_$P(RCEFT("DEP"),U,4)_U
- ...W +$P(RCEFT("DEP"),U,7)_U_$S($P(RCDATA,U,4)'="":$P(RCDATA,U,4),1:"NO RECEIPT")_U
- ...W $P(RCEFT("DEP"),U,10)_U
- ...W $S($P(RCDATA,U)=-1:"NO RECEIPT",$P(RCDATA,U)=-2:"NO FMS DOCUMENT",1:$P(RCDATA,U,2)_" - "_$P(RCDATA,U,3))
- ...W !
- Q
- ;
- ; PRCA*4.5*371 - Add subroutine
- RDET(DEF) ; Prompt for full report or just grand total
- ; Input: DEF - Value to use a default
- ; Returns: -1 - User ^ or timed out
- ; D - User selected DETAIL REPORT
- ; G - User selected GRAND TOTAL
- N DA,DIR,DTOUT,DUOUT,X,Y,DIRUT,DIROUT,RCTYPE,RETURN
- S RCTYPE=""
- S DIR("?")="Enter the type of report to run"
- S DIR(0)="SA^D:DETAIL;G:GRAND TOTAL"
- S DIR("A")="(D)ETAIL REPORT or (G)RAND TOTAL?: "
- S DIR("B")=$S($G(DEF)'="":DEF,1:"D")
- D ^DIR
- K DIR
- I $D(DTOUT)!$D(DUOUT) Q -1
- Q:Y="" "A"
- S RETURN=$E(Y)
- Q RETURN
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCDPE8NZ 15351 printed Feb 18, 2025@23:10:28 Page 2
- RCDPE8NZ ;ALB/TMK/KML/JCH - Unapplied EFT Deposits report ;Jun 06, 2014@19:11:19
- +1 ;;4.5;Accounts Receivable;**173,212,208,269,276,283,293,298,317,318,326,375,371,432**;Mar 20, 1995;Build 16
- +2 ;Per VA Directive 6402, this routine should not be modified.
- +3 ;
- EN ; entry point for Unapplied EFT Deposits Report [RCDPE UNAPPLIED EFT DEP REPORT]
- +1 ; ^RCY(344.3,0) = EDI LOCKBOX DEPOSIT^344.3I^
- +2 ;
- +3 NEW %ZIS,DIR,RCDET,RCDISPTY,RCDTRNG,RCENDT,RCHDR,RCLNCNT,RCLSTMGR,RCPGNUM,RCRPLST,RCSTDT,RCTMPND,RCTYPE,RPTQ,X,Y
- +4 ; RCDET - detail report or grand totals only
- +5 ; RCDISPTY - display type for Excel
- +6 ; RCDTRNG - range of dates
- +7 ; RCHDR - report header
- +8 ; RCLNCNT - line counter for ^TMP storage
- +9 ; RCLSTMGR - ListMan flag
- +10 ; RCPGNUM - page number
- +11 ; RCRPLST - node for report list in ^TMP
- +12 ; RCTMPND - storage node (or null) for SL^RCPEARL
- +13 ; RCTYPE - Payer type filter M - MEDICAL, P-PHARMACY, T-TRICARE, C-CHAMPVA, A-ALL ;PRCA*4.5*432 CHAMPVA
- +14 ;
- +15 ; storage for list of entries
- SET RCRPLST=$TEXT(+0)_"_EFT"
- +16 ; initial values for ListMan
- SET RCLNCNT=0
- SET RCLSTMGR=""
- SET RCTMPND=""
- +17 ; PRCA*4.5*371 - Prompt for detail report or grand total only
- SET RCDET=$$RDET("D")
- if (RCDET=-1)
- GOTO RPTQ
- +18 ; PRCA*4.5*371 - Make sure these don't crash grand totals report
- SET RCTYPE="A"
- SET (RCDTRNG,RCSTDT,RCENDT,RCDISPTY,RCLSTMGR)=""
- SET RPTQ=0
- +19 ;PRCA*4.5*371 - Change G RPTQ commands to setting a quit variable, because GOTO in a DO block apparently doesn't actually GOTO
- +20 ;PRCA*4.5*371 - Don't prompt for any other options if grand total only selected
- IF RCDET'="G"
- Begin DoDot:1
- +21 ; PRCA*4.5*326 - Add M/P/T filter
- SET RCTYPE=$$RTYPE^RCDPEU1("A")
- IF (RCTYPE=-1)
- SET RPTQ=1
- QUIT
- +22 SET RCDTRNG=$$DTRNG^RCDPEM4()
- IF '(RCDTRNG>0)
- SET RPTQ=1
- QUIT
- +23 SET RCSTDT=$PIECE(RCDTRNG,U,2)
- SET RCENDT=$PIECE(RCDTRNG,U,3)
- +24 ; ask if export to excel
- +25 SET RCDISPTY=$$DISPTY^RCDPEM3()
- IF RCDISPTY<0
- SET RPTQ=1
- QUIT
- +26 ; for Excel, set ListMan flag to prevent question
- +27 IF RCDISPTY
- SET RCLSTMGR="^"
- DO INFO^RCDPEM6
- +28 IF RCLSTMGR=""
- SET RCLSTMGR=$$ASKLM^RCDPEARL
- IF RCLSTMGR<0
- SET RPTQ=1
- QUIT
- +29 ; send output to ListMan
- IF RCLSTMGR
- Begin DoDot:2
- +30 ; clean any residue
- SET RCTMPND=$TEXT(+0)_"^UNAPPLIED EFT"
- KILL ^TMP($JOB,RCTMPND)
- +31 DO MKRPRT
- +32 NEW H,L,HDR
- SET L=0
- +33 SET HDR("TITLE")=$$HDRNM
- +34 ; take first 3 lines of report header
- FOR H=1:1:7
- IF $DATA(RCHDR(H))
- SET L=H
- SET HDR(H)=RCHDR(H)
- +35 ; any remaining header lines at top of report
- IF $ORDER(RCHDR(L))
- Begin DoDot:3
- +36 NEW N
- SET N=0
- SET H=L
- FOR
- SET H=$ORDER(RCHDR(H))
- if 'H
- QUIT
- SET N=N+.001
- SET ^TMP($JOB,RCTMPND,N)=RCHDR(H)
- End DoDot:3
- +37 ; invoke ListMan
- +38 ; generate ListMan display
- DO LMRPT^RCDPEARL(.HDR,$NAME(^TMP($JOB,RCTMPND)))
- End DoDot:2
- SET RPTQ=1
- QUIT
- End DoDot:1
- if RPTQ
- GOTO RPTQ
- +39 ;
- +40 ; Ask device
- +41 SET %ZIS="QM"
- DO ^%ZIS
- if POP
- QUIT
- +42 IF $DATA(IO("Q"))
- Begin DoDot:1
- +43 NEW ZTRTN,ZTSAVE,ZTDESC,POP,ZTSK
- +44 SET ZTRTN="MKRPRT^RCDPE8NZ"
- SET ZTDESC="AR - List of unlinked EFT deposit payments"
- +45 SET ZTSAVE("RC*")=""
- +46 DO ^%ZTLOAD
- +47 WRITE !!,$SELECT($GET(ZTSK):"Task number "_ZTSK_" was queued.",1:"Unable to queue this task.")
- +48 KILL ZTSK,IO("Q")
- DO HOME^%ZIS
- End DoDot:1
- QUIT
- +49 ;
- +50 USE IO
- +51 DO MKRPRT
- +52 QUIT
- +53 ;
- MKRPRT ; Entry point for queued job
- +1 NEW RCTSKCNT,RCARDEP,RCCR,RCDA,RCDATA,RCDT,RCEFT,RCEFTIEN,RCREC,RCSTAT,RCSTOP,RCSUM,RCTOT,RCTR,RCUNAP,RECEXT,Y,Z,ZTSTOP
- +2 ;
- +3 ; get list of unlinked EFT deposit data
- +4 ; subscripts: dep date,EFT ien,EFT det ien
- KILL ^TMP(RCRPLST,$JOB)
- +5 ; Data is FMS doc indicator^FMS doc #^FMS Doc Status
- +6 ; FMS doc indicator = -1:no receipt -2:no FMS doc 1:FMS doc exists
- +7 ;
- +8 SET (RCTSKCNT,RCSTOP,RCSUM,RCUNAP)=0
- +9 SET RCARDEP=""
- FOR
- SET RCARDEP=$ORDER(^RCY(344.3,"ARDEP",RCARDEP))
- if RCARDEP=""!RCSTOP
- QUIT
- SET RCDA=0
- FOR
- SET RCDA=$ORDER(^RCY(344.3,"ARDEP",RCARDEP,RCDA))
- if 'RCDA
- QUIT
- Begin DoDot:1
- +10 SET RCDATA=$GET(^RCY(344.3,RCDA,0))
- SET RCDT=$PIECE(RCDATA,U,7)
- SET RCTOT=0
- +11 ; Before start date
- if +RCSTDT&(RCDT<RCSTDT)
- QUIT
- +12 ; After the end date
- if +RCENDT&(RCDT>(RCENDT+.999999))
- QUIT
- +13 ; no payment amt
- if '$PIECE(RCDATA,"^",8)
- QUIT
- +14 SET RCEFT=0
- FOR
- SET RCEFT=$ORDER(^RCY(344.31,"B",RCDA,RCEFT))
- if 'RCEFT!RCSTOP
- QUIT
- SET RCDATA(0)=$GET(^RCY(344.31,RCEFT,0))
- Begin DoDot:2
- +15 ;PRCA*4.5*326
- IF '$$ISTYPE^RCDPEU1(344.31,RCEFT,RCTYPE)
- QUIT
- +16 ; PRCA*4.5*375 - Do not show Debit EFTs because there's nothing to apply
- if $PIECE($GET(^RCY(344.31,RCEFT,0)),U,16)="D"
- QUIT
- +17 SET RCTSKCNT=RCTSKCNT+1
- +18 IF '(RCTSKCNT#100)
- IF $DATA(ZTQUEUED)
- IF $$S^%ZTLOAD
- SET (RCSTOP,ZTSTOP)=1
- KILL ZTREQ
- QUIT
- +19 ; EFT has been removed PRCA*4.5*293
- if $PIECE($GET(^RCY(344.31,RCEFT,3)),U)
- QUIT
- +20 SET RCREC=$$GETREC(RCEFT,RCDATA(0),.RECEXT)
- +21 ; need to prevent processed EFTs that had receipts purged from being generated on the report
- if RCREC="PURGED"
- QUIT
- +22 ;; PRCA276 - need to add EFT entries without a receipt to the total number of unapplied deposits
- +23 ; No receipt therefore no FMS document
- IF 'RCREC
- SET RCUNAP=RCUNAP+1
- SET ^TMP(RCRPLST,$JOB,RCDT,RCDA,RCEFT)=-1
- SET RCTOT=RCTOT+$PIECE(RCDATA(0),U,7)
- QUIT
- +24 SET RCSTAT=$$FMSSTAT^RCDPUREC(RCREC)
- +25 IF $EXTRACT($PIECE(RCSTAT,U),1,2)="TR"
- IF $PIECE(RCSTAT,U,2)["ACCEPTED"
- QUIT
- +26 ; total unapplied deposits and total dollar amount of unapplied deposits
- SET RCUNAP=RCUNAP+1
- SET RCTOT=RCTOT+$PIECE(RCDATA(0),U,7)
- +27 ; No FMS doc
- IF $PIECE(RCSTAT,U,2)="NOT ENTERED"
- SET ^TMP(RCRPLST,$JOB,RCDT,RCDA,RCEFT)="-2^^"_$PIECE(RCSTAT,U)
- QUIT
- +28 SET ^TMP(RCRPLST,$JOB,RCDT,RCDA,RCEFT)="1^"_$PIECE(RCSTAT,U,1,2)_"^"_RECEXT
- End DoDot:2
- if RCSTOP
- QUIT
- +29 if RCTOT
- SET ^TMP(RCRPLST,$JOB,RCDT,RCDA)=RCTOT
- SET RCSUM=RCSUM+RCTOT
- End DoDot:1
- if RCSTOP
- QUIT
- +30 ;
- +31 if 'RCLSTMGR
- DO HDRBLD
- +32 if RCLSTMGR
- DO HDRLM
- +33 ;
- +34 IF RCDISPTY
- DO EXCEL
- QUIT
- +35 ;
- +36 DO RPT
- +37 QUIT
- +38 ;
- RPT ; display/print the report using data populated in temporary global array
- +1 ;PRCA*4.5*318
- NEW RCPAYID,RCPAYER,XX,YY,ZZ
- +2 ;
- +3 ; initial report header
- if 'RCLSTMGR
- DO HDRLST^RCDPEARL(.RCSTOP,.RCHDR)
- +4 ; PRCA*4.5*371 - Quit here if grand totals only report
- if RCDET="G"
- GOTO RPTQ
- +5 ;
- +6 SET RCDT=0
- +7 FOR
- SET RCDT=$ORDER(^TMP(RCRPLST,$JOB,RCDT))
- if 'RCDT
- QUIT
- Begin DoDot:1
- +8 IF 'RCLSTMGR
- IF $Y>(IOSL-RCHDR(0))
- DO HDRLST^RCDPEARL(.RCSTOP,.RCHDR)
- if RCSTOP
- QUIT
- +9 ; skip a line
- DO SL^RCDPEARL(" ",.RCLNCNT,RCTMPND)
- +10 SET Y="DEPOSIT DATE: "_$$FMTE^XLFDT(RCDT,1)
- SET Y=$JUSTIFY("",80-$LENGTH(Y)\2)_Y
- DO SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- +11 SET RCARDEP=0
- FOR
- SET RCARDEP=$ORDER(^TMP(RCRPLST,$JOB,RCDT,RCARDEP))
- if 'RCARDEP
- QUIT
- Begin DoDot:2
- +12 ; skip a line
- DO SL^RCDPEARL(" ",.RCLNCNT,RCTMPND)
- +13 ; stop task
- SET RCTSKCNT=RCTSKCNT+1
- IF 'RCLSTMGR
- IF (RCTSKCNT#100)
- IF $DATA(ZTQUEUED)
- IF $$S^%ZTLOAD
- Begin DoDot:3
- +14 SET (RCSTOP,ZTSTOP)=1
- DO SL^RCDPEARL("TASK STOPPED BY USER!!",.RCLNCNT,RCTMPND)
- KILL ZTREQ
- End DoDot:3
- QUIT
- +15 ;
- +16 SET RCDATA(0)=$GET(^RCY(344.3,RCARDEP,0))
- +17 IF 'RCLSTMGR
- IF $Y>(IOSL-RCHDR(0))
- DO HDRLST^RCDPEARL(.RCSTOP,.RCHDR)
- if RCSTOP
- QUIT
- +18 ; PRCA*4.5*283 - Change the spaces for DEP # from 10 to 13 to allow 9 digit DEP #
- +19 ; PRCA*4.5*317 Shift line 2 chars to the right
- +20 ;deposit #
- SET Y=" "_$EXTRACT($PIECE(RCDATA(0),U,6)_$SELECT('$$HACEFT^RCDPEU(RCARDEP):"",1:"-HAC")_$JUSTIFY("",13),1,13)
- +21 ; deposit date
- SET Y=Y_" "_$EXTRACT($$FMTE^XLFDT($PIECE(RCDATA(0),U,7),2)_$JUSTIFY("",16),1,16)
- +22 ; total amt deposit
- SET Y=Y_" "_$EXTRACT($JUSTIFY(+$PIECE(RCDATA(0),U,8),"",2)_$JUSTIFY("",20),1,20)
- +23 ; total amt unposted
- SET Y=Y_" "_$JUSTIFY(+$GET(^TMP(RCRPLST,$JOB,RCDT,RCARDEP)),"",2)
- +24 DO SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- +25 SET RCEFTIEN=0
- FOR
- SET RCEFTIEN=$ORDER(^TMP(RCRPLST,$JOB,RCDT,RCARDEP,RCEFTIEN))
- if 'RCEFTIEN
- QUIT
- SET RCDATA=$GET(^(RCEFTIEN))
- SET RCEFT("DEP")=$GET(^RCY(344.31,RCEFTIEN,0))
- Begin DoDot:3
- +26 IF 'RCLSTMGR
- IF $Y>(IOSL-RCHDR(0))
- DO HDRLST^RCDPEARL(.RCSTOP,.RCHDR)
- if RCSTOP
- QUIT
- +27 ; PRCA*4.5*298
- NEW RCPAY
- SET RCPAY=$PIECE(RCEFT("DEP"),U,2)
- if RCPAY=""
- SET RCPAY="NO PAYER NAME RECEIVED"
- +28 ;
- +29 ; PRCA*4.5*317 Shift line 2 chars to the right
- +30 ;S Y=" "_RCPAY_"/"_$P(RCEFT("DEP"),U,3) D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND) ; payer/ID
- +31 ; PRCA*4.5*318 Account for payer names of 60 characters and payer ID of 20 characters
- +32 SET RCPAYID=$PIECE(RCEFT("DEP"),U,3)
- +33 ; payer/ID
- SET RCPAYER=RCPAY_"/"_RCPAYID
- +34 IF $LENGTH(RCPAYER)>77
- Begin DoDot:4
- +35 SET ZZ=$LENGTH(RCPAYER,"/")
- SET XX=$PIECE(RCPAYER,"/",1,ZZ-1)
- SET YY=$PIECE(RCPAYER,"/",ZZ)
- +36 SET XX=$EXTRACT(XX,1,$LENGTH(XX)-($LENGTH(RCPAYER)-77))
- SET RCPAYER=XX_"/"_YY
- End DoDot:4
- +37 SET Y=" "_RCPAYER
- +38 ; end of PRCA*4.5*318
- +39 ; payer/ID
- DO SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- +40 ; PRCA*4.5*317 Shift line 2 chars to the right
- +41 ; trace #
- SET Y=" "_$EXTRACT($PIECE(RCEFT("DEP"),U,4)_$JUSTIFY("",50),1,50)
- +42 ; payment amt
- SET Y=Y_" "_$EXTRACT($JUSTIFY(+$PIECE(RCEFT("DEP"),U,7),"",2)_$JUSTIFY("",12),1,12)
- +43 ;
- +44 ; PRCA*4.5*317 Shift lines 2 to thr right to allow 12 digit receipt #
- +45 ; receipt #
- SET Y=Y_" "_$SELECT($PIECE(RCDATA,U,4)'="":$PIECE(RCDATA,U,4),1:"NO RECEIPT")
- +46 DO SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- +47 ; PRCA*4.5*317 Shift line 2 chars to the right
- +48 SET Z=$PIECE(RCEFT("DEP"),U,8)
- +49 SET Y=" "_$EXTRACT($SELECT('Z:"UNMATCHED",Z=2:"PAPER EOB",1:"MATCHED TO ERA #: "_$PIECE(RCEFT("DEP"),U,10)_$SELECT(Z=-1:" (TOTALS MISMATCH)",1:""))_$JUSTIFY("",40),1,40)_" "
- +50 SET Y=Y_$SELECT($PIECE(RCDATA,U)=-1:"NO RECEIPT",$PIECE(RCDATA,U)=-2:"NO FMS DOCUMENT",1:$EXTRACT($PIECE(RCDATA,U,2)_" - "_$PIECE(RCDATA,U,3),1,30))
- +51 DO SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- if RCSTOP
- QUIT
- +52 ;
- +53 IF '$DATA(^TMP(RCRPLST,$JOB))
- DO SL^RCDPEARL("*** NO RECORDS TO PRINT ***",.RCLNCNT,RCTMPND)
- +54 ;
- +55 IF 'RCSTOP
- DO SL^RCDPEARL(" ",.RCLNCNT,RCTMPND)
- DO SL^RCDPEARL($$ENDORPRT^RCDPEARL,.RCLNCNT,RCTMPND)
- +56 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +57 if '$DATA(ZTQUEUED)
- DO ^%ZISC
- +58 if RCSTOP
- GOTO RPTQ
- +59 ;
- RPTQ ;
- +1 IF '$GET(RCLSTMGR)
- IF '$GET(RCSTOP)
- IF $EXTRACT(IOST,1,2)="C-"
- DO ASK^RCDPEARL(.RCSTOP)
- +2 KILL ^TMP(RCRPLST,$JOB)
- +3 QUIT
- +4 ;
- GETREC(EFTDA,EFTDET,RECEXT) ; function, prca276
- +1 ; input - EFTDA - IEN OF 344.31
- +2 ; input - EFTDET - data stored at the 0 subscript of the THIRD PARTY EFT DETAIL file (344.31)
- +3 ; input - RECEXT passed by reference
- +4 ; output - RECEXT populated with the external receipt value that gets generated on the report
- +5 ; output - RECEIPT - returns internal value of the receipt that either comes from the EFT file (344.31) or the ERA file (344.4)
- +6 NEW RECEIPT
- +7 SET RECEXT=0
- +8 ; get receipt off the ERA record
- SET RECEIPT=+$PIECE($GET(^RCY(344.4,+$PIECE(EFTDET,U,10),0)),U,8)
- +9 ; EFT processed against paper EOB
- IF 'RECEIPT
- IF $PIECE(EFTDET,U,8)=2
- SET RECEIPT=+$ORDER(^RCY(344,"AEFT",EFTDA,0))
- +10 ; receipt not posted in payment file so get from EFT detail (unprocessed EFT)
- IF 'RECEIPT
- SET RECEIPT=$PIECE(EFTDET,U,9)
- +11 ; handle purged receipts but broken pointer exists in 344.31; need to handle as a processed EFT
- IF +RECEIPT
- IF '$DATA(^RCY(344,RECEIPT))
- QUIT "PURGED"
- +12 IF +RECEIPT
- SET RECEXT=$PIECE(^RCY(344,RECEIPT,0),U)
- +13 QUIT +RECEIPT
- +14 ;
- +15 ;
- HDRBLD ; create the report header
- +1 ; returns RCHDR, RCPGNUM, RCSTOP
- +2 ; RCHDR(0) = header text line count
- +3 ; RCHDR("XECUTE") = M code for page number
- +4 ; RCHDR("RUNDATE") = date/time report generated, external format
- +5 ; RCPGNUM - page counter
- +6 ; RCSTOP - flag to exit
- +7 ; INPUT:
- +8 ; RCDISPTY - Display/print/Excel flag
- +9 ; RCRTYP - Report Type (EOB or ERA)
- +10 ; VAUTD
- +11 KILL RCHDR
- SET RCHDR("RUNDATE")=$$NOW^RCDPEARL
- SET RCPGNUM=0
- SET RCSTOP=0
- +12 ;
- +13 ;
- +14 ; Excel format, xecute code is QUIT, null page number
- IF RCDISPTY
- Begin DoDot:1
- +15 SET RCHDR(0)=1
- SET RCHDR("XECUTE")="Q"
- SET RCPGNUM=""
- +16 SET RCHDR(1)="DEPOSIT #^DEPOSIT DATE^TOT AMT DEPOSIT^TOT AMT UNPOSTED^PAYER ID^TRACE #^PAYMENT AMT^RECEIPT #^ERA MATCHED^FMS DOC #/STATUS"
- End DoDot:1
- QUIT
- +17 ;
- +18 NEW DIV,HCNT,Y
- +19 ; header counter
- SET HCNT=0
- +20 ;
- +21 ; line 1 will be replaced by XECUTE code below
- SET Y=$$HDRNM
- SET HCNT=1
- SET RCHDR(HCNT)=$JUSTIFY("",80-$LENGTH(Y)\2)_Y
- +22 SET RCHDR("XECUTE")="N Y S RCPGNUM=RCPGNUM+1,Y=$$HDRNM^"_$TEXT(+0)_"_$S(RCLSTMGR:"""",1:$J(""Page: ""_RCPGNUM,12)),RCHDR(1)=$J("" "",80-$L(Y)\2)_Y"
- +23 SET Y="Run Date: "_RCHDR("RUNDATE")
- +24 ; PRCA*4.5*371 - Don't display MPT information in Grand Totals report
- IF RCDET'="G"
- Begin DoDot:1
- +25 ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- SET Y=Y_" MEDICAL/PHARMACY/TRICARE/CHAMPVA: "
- +26 ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- SET Y=Y_$SELECT(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL")
- End DoDot:1
- +27 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=$JUSTIFY("",80-$LENGTH(Y)\2)_Y
- +28 ;
- +29 ; PRCA*4.5*371 - Grand Totals report
- if RCDET="G"
- SET Y="GRAND TOTAL"
- SET Y=$JUSTIFY("",80-$LENGTH(Y)\2)_Y
- +30 if RCDET'="G"
- SET Y="Date Range: "_$$FMTE^XLFDT(RCSTDT,2)_" - "_$$FMTE^XLFDT(RCENDT,2)_" (Deposit Date)"
- SET Y=$JUSTIFY("",80-$LENGTH(Y)\2)_Y
- +31 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=Y
- +32 SET Y="TOTAL NUMBER OF UNAPPLIED DEPOSITS: "_RCUNAP
- SET HCNT=HCNT+1
- SET RCHDR(HCNT)=$JUSTIFY("",80-$LENGTH(Y)\2)_Y
- +33 SET Y="TOTAL AMOUNT OF UNAPPLIED DEPOSITS: $"_$FNUMBER(RCSUM,",",2)
- SET HCNT=HCNT+1
- SET RCHDR(HCNT)=$JUSTIFY("",80-$LENGTH(Y)\2)_Y
- +34 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=""
- +35 ;
- +36 ; PRCA*4.5*371 - Don't display details on grand total report
- IF RCDET'="G"
- Begin DoDot:1
- +37 ; PRCA*4.5*317 Shift each line 2 chars to the right
- +38 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=" DEPOSIT # DEPOSIT DATE TOT AMT OF DEPOSIT TOT AMT UNPOSTED"
- +39 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=" PAYER/ID"
- +40 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=$JUSTIFY("",4)_"TRACE #"_$JUSTIFY("",44)_"PAYMENT AMT RECEIPT #"
- +41 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=$JUSTIFY("",6)_$EXTRACT("ERA MATCHED"_$JUSTIFY("",40),1,40)_" FMS DOC #/STATUS"
- +42 ; PRCA*4.5*317 End
- End DoDot:1
- +43 ; row of equal signs at bottom
- SET Y=""
- SET $PIECE(Y,"=",81)=""
- SET HCNT=HCNT+1
- SET RCHDR(HCNT)=Y
- +44 ;
- +45 ; header line count
- SET RCHDR(0)=HCNT
- +46 QUIT
- +47 ;
- HDRLM ; create the report header
- +1 ; returns RCHDR
- +2 ; RCHDR(0) = header text line count
- +3 ; INPUT:
- +4 ; RCSTDT - Date Range
- +5 KILL RCHDR
- +6 ;
- +7 NEW DIV,HCNT,Y
- +8 ; header counter
- SET HCNT=0
- +9 SET Y="Date Range: "_$$FMTE^XLFDT(RCSTDT,2)_" - "_$$FMTE^XLFDT(RCENDT,2)_" (Deposit Date) "
- +10 ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- SET Y=Y_"MED/PHARM/TRIC/CHAMPVA: "
- +11 ; PRCA*4.5*326 ;PRCA*4.5*432 CHAMPVA
- SET Y=Y_$SELECT(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL")
- +12 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=Y
- +13 SET Y="TOTAL NUMBER OF UNAPPLIED DEPOSITS: "_RCUNAP
- SET HCNT=HCNT+1
- SET RCHDR(HCNT)=Y
- +14 SET Y="TOTAL AMOUNT OF UNAPPLIED DEPOSITS: $"_$FNUMBER(RCSUM,",",2)
- SET HCNT=HCNT+1
- SET RCHDR(HCNT)=Y
- +15 ;
- +16 ; PRCA*4.5*317 Shift each line 2 chars to the right
- +17 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=" DEPOSIT # DEPOSIT DATE TOT AMT OF DEPOSIT TOT AMT UNPOSTED"
- +18 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=" PAYER/ID"
- +19 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=$JUSTIFY("",4)_"TRACE #"_$JUSTIFY("",44)_"PAYMENT AMT RECEIPT #"
- +20 SET HCNT=HCNT+1
- SET RCHDR(HCNT)=$JUSTIFY("",6)_$EXTRACT("ERA MATCHED"_$JUSTIFY("",40),1,40)_" FMS DOC #/STATUS"
- +21 ; PRCA*4.5*317 End
- +22 ;
- +23 ; header line count
- SET RCHDR(0)=HCNT
- +24 QUIT
- +25 ;
- +26 ; extrinsic variable, name for header PRCA*4.5*298
- HDRNM() QUIT "Unapplied EFT Deposits Report"
- +1 ;
- EXCEL ; Print report formatted for export to Excel
- +1 NEW STR1
- +2 WRITE !,$GET(RCHDR(1)),!
- +3 SET RCDT=0
- FOR
- SET RCDT=$ORDER(^TMP(RCRPLST,$JOB,RCDT))
- if 'RCDT
- QUIT
- Begin DoDot:1
- +4 SET RCARDEP=0
- FOR
- SET RCARDEP=$ORDER(^TMP(RCRPLST,$JOB,RCDT,RCARDEP))
- if 'RCARDEP
- QUIT
- Begin DoDot:2
- +5 SET RCDATA(0)=$GET(^RCY(344.3,RCARDEP,0))
- +6 SET STR1=$PIECE(RCDATA(0),U,6)_$SELECT('$$HACEFT^RCDPEU(RCARDEP):"",1:"-HAC")_U_$$FMTE^XLFDT($PIECE(RCDATA(0),U,7))_U_$PIECE(RCDATA(0),U,8)_U
- +7 SET STR1=STR1_+$GET(^TMP(RCRPLST,$JOB,RCDT,RCARDEP))_U
- +8 SET RCEFTIEN=0
- FOR
- SET RCEFTIEN=$ORDER(^TMP(RCRPLST,$JOB,RCDT,RCARDEP,RCEFTIEN))
- if 'RCEFTIEN
- QUIT
- SET RCDATA=$GET(^(RCEFTIEN))
- SET RCEFT("DEP")=$GET(^RCY(344.31,RCEFTIEN,0))
- Begin DoDot:3
- +9 ;PRCA*4.5*298
- WRITE STR1
- if $PIECE(RCEFT("DEP"),U,2)=""
- SET $PIECE(RCEFT("DEP"),U,2)="NO PAYER NAME RECEIVED"
- +10 WRITE $PIECE(RCEFT("DEP"),U,2)_"/"_$PIECE(RCEFT("DEP"),U,3)_U_$PIECE(RCEFT("DEP"),U,4)_U
- +11 WRITE +$PIECE(RCEFT("DEP"),U,7)_U_$SELECT($PIECE(RCDATA,U,4)'="":$PIECE(RCDATA,U,4),1:"NO RECEIPT")_U
- +12 WRITE $PIECE(RCEFT("DEP"),U,10)_U
- +13 WRITE $SELECT($PIECE(RCDATA,U)=-1:"NO RECEIPT",$PIECE(RCDATA,U)=-2:"NO FMS DOCUMENT",1:$PIECE(RCDATA,U,2)_" - "_$PIECE(RCDATA,U,3))
- +14 WRITE !
- End DoDot:3
- End DoDot:2
- End DoDot:1
- if RCSTOP
- QUIT
- +15 QUIT
- +16 ;
- +17 ; PRCA*4.5*371 - Add subroutine
- RDET(DEF) ; Prompt for full report or just grand total
- +1 ; Input: DEF - Value to use a default
- +2 ; Returns: -1 - User ^ or timed out
- +3 ; D - User selected DETAIL REPORT
- +4 ; G - User selected GRAND TOTAL
- +5 NEW DA,DIR,DTOUT,DUOUT,X,Y,DIRUT,DIROUT,RCTYPE,RETURN
- +6 SET RCTYPE=""
- +7 SET DIR("?")="Enter the type of report to run"
- +8 SET DIR(0)="SA^D:DETAIL;G:GRAND TOTAL"
- +9 SET DIR("A")="(D)ETAIL REPORT or (G)RAND TOTAL?: "
- +10 SET DIR("B")=$SELECT($GET(DEF)'="":DEF,1:"D")
- +11 DO ^DIR
- +12 KILL DIR
- +13 IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT -1
- +14 if Y=""
- QUIT "A"
- +15 SET RETURN=$EXTRACT(Y)
- +16 QUIT RETURN
- +17 ;