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

RCDPEM7.m

Go to the documentation of this file.
  1. RCDPEM7 ;OIFO-BAYPINES/PJH - OVERDUE EFT AND ERA BULLETINS ; 6/7/19 7:24am
  1. ;;4.5;Accounts Receivable;**276,298,303,304,321,326,345,349**;Mar 20, 1995;Build 44
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. EN ; Main entry point for overdue EFT/ERA bulletins
  1. ;
  1. N TODAY,ERACNT,ERATOT,ERA1CNT,ERA2CNT,ERA1TOT,ERA2TOT,EFTCNT,EFTTOT,RCPROG,RCSUSCNT,RCSUSAMT,RCMXDYS
  1. ;Clear workfiles
  1. S RCPROG="RCDPEM7" K ^TMP(RCPROG,$J)
  1. ;Set counters and totals
  1. S (EFTCNT,ERACNT,ERA1CNT,ERA2CNT,EFTTOT,ERATOT,ERA1TOT,ERA2TOT,RCSUSCNT,RCSUSAMT)=0
  1. ;Cuttoff of 12:00 am today
  1. S TODAY=$P($$NOW^XLFDT,".")
  1. I $E(TODAY,6,7)="01" D ; PRCA*4.5*349 Things to run on the first of the month
  1. . D BULL^RCDPEFA4("M") ; PRCA*4.5*349 Monthy 1st Party Decrease Stats
  1. ;
  1. ;Verify this is correct day for bulletins - PRCA*4.5*321
  1. N X
  1. S X=TODAY
  1. D DW^%DTC
  1. I $$GET1^DIQ(344.61,"1,",.1)'=X Q
  1. ;
  1. ;Retrieve the max days allowed in suspense parameter
  1. S RCMXDYS=$$GET1^DIQ(342,"1,",7.04)
  1. ;
  1. ;Scan for overdue ERA and unposted ERA
  1. D ERASCAN
  1. ;Scan for overdue EFT
  1. D EFTSCAN
  1. ;Scan for overdue Suspended ERA's - PRCA*4.5*304
  1. D SUSPSCAN
  1. ;Bulletins
  1. D BULLETIN
  1. ;
  1. D BULL^RCDPEFA4("W") ; PRCA*4.5*349 Weekly 1st party auto-decrease stats
  1. ;Clear workfiles
  1. K ^TMP(RCPROG,$J)
  1. Q
  1. ;
  1. ERASCAN ;Scan ERA
  1. N AMT,ERAIEN,FDATE,PNAME,REC0,SUB,STATUS,TRACE ; PRCA*4.5*326
  1. ;Scan for unmatched ERA
  1. S ERAIEN=0,STATUS=0,SUB="ERA"
  1. F S ERAIEN=$O(^RCY(344.4,"AMATCH",STATUS,ERAIEN)) Q:'ERAIEN D
  1. .S REC0=$G(^RCY(344.4,ERAIEN,0))
  1. .;Get ERA file date/time
  1. .S FDATE=$P(REC0,U,7) Q:'FDATE
  1. .;Ignore if <31 days overdue
  1. .Q:$$FMDIFF^XLFDT(TODAY,FDATE,1)<31
  1. .;Trace, Payer Name and Amount
  1. .S PNAME=$P(REC0,U,6),AMT=$P(REC0,U,5),TRACE=$P(REC0,U,2) ; PRCA*4.5*326
  1. .I $L(PNAME)>35 S PNAME=$E(PNAME,1,35) ; limit size of the name
  1. .;Update count and totals
  1. .S ERACNT=ERACNT+1,ERATOT=ERATOT+AMT
  1. . ; PRCA*4.5*303 added the FDATE subscript to the global so that the line
  1. . ; items collate in date ascending order.
  1. . ;Save ERA#, Payer Name, File Date, Trace# and Amount Paid
  1. .S ^TMP(RCPROG,$J,"ERA",FDATE,ERACNT)=$$ERAL(ERAIEN,PNAME,FDATE,AMT)
  1. .S ^TMP(RCPROG,$J,"ERA",FDATE,ERACNT,"TR")=" "_TRACE ; PRCA*4.5*326
  1. ;
  1. ;Scan for Matched/Unposted ERA
  1. S SUB="ERA1"
  1. F STATUS=-1,1,2,3 D
  1. . S ERAIEN=0 F S ERAIEN=$O(^RCY(344.4,"AMATCH",STATUS,ERAIEN)) Q:'ERAIEN D
  1. .. S REC0=$G(^RCY(344.4,ERAIEN,0))
  1. .. ;Get ERA file date/time
  1. .. S FDATE=$P(REC0,U,7) Q:'FDATE
  1. .. ;Ignore if <31 days overdue
  1. .. Q:$$FMDIFF^XLFDT(TODAY,FDATE,1)<31
  1. .. ;Ignore if not unposted posted
  1. .. Q:$P($G(^RCY(344.4,ERAIEN,0)),U,14)>0
  1. .. ;Payer Name, Trace and Amount
  1. .. S PNAME=$P(REC0,U,6),AMT=$P(REC0,U,5),TRACE=$P(REC0,U,2) ; PRCA*4.5*326
  1. .. I $L(PNAME)>35 S PNAME=$E(PNAME,1,35) ; limit size of the name
  1. .. ; PRCA*4.5*303 Split into "ACH" and not "ACH"
  1. .. ;Update count and totals
  1. .. S:$P(REC0,U,15)="ACH" ERA1CNT=ERA1CNT+1,ERA1TOT=ERA1TOT+AMT
  1. .. S:$P(REC0,U,15)'="ACH" ERA2CNT=ERA2CNT+1,ERA2TOT=ERA2TOT+AMT
  1. .. ;PRCA*4.5*303 added the FDATE subscript to the global so that the line
  1. .. ;items collate in date ascending order.
  1. .. ; BEGIN PRCA*4.5*326
  1. .. ;Save ERA#, Payer Name, File Date, Trace# and Amount Paid
  1. .. I $P(REC0,U,15)="ACH" D
  1. ... S ^TMP(RCPROG,$J,"ERA1",FDATE,ERA1CNT)=$$ERAL(ERAIEN,PNAME,FDATE,AMT)
  1. ... S ^TMP(RCPROG,$J,"ERA1",FDATE,ERA1CNT,"TR")=" "_TRACE
  1. ..I $P(REC0,U,15)'="ACH" D
  1. ... S ^TMP(RCPROG,$J,"ERA2",FDATE,ERA2CNT)=$$ERAL(ERAIEN,PNAME,FDATE,AMT)
  1. ... S ^TMP(RCPROG,$J,"ERA2",FDATE,ERA2CNT,"TR")=" "_TRACE
  1. .. ; END PRCA*4.5*326
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. EFTSCAN ;Scan EFT
  1. N DEPN,EFTIEN,IEN3443,EFTDATE,TRACE,REC0,REC31,REC4,STATUS,PAYER,DEPAMT
  1. ;Scan for unmatched EFT
  1. S EFTIEN=0,STATUS=0
  1. ; PRCA*4.5*303 Check all statuses report on unmatched EFTs, Matched EFTs with unposted ERAs
  1. ; 4-7-2016 Removed F STATUS=-1,0,1 per issue identifying duplicate EFTs this will need to be
  1. ; addressed in another project
  1. S STATUS=0 F S EFTIEN=$O(^RCY(344.31,"AMATCH",STATUS,EFTIEN)) Q:'EFTIEN D
  1. .S REC31=$G(^RCY(344.31,EFTIEN,0))
  1. .;PRCA*4.5*303 Get zero node of the associated ERA if matched
  1. .S REC4=$S($P(REC31,U,10)'="":$G(^RCY(344.4,$P(REC31,U,10),0)),1:"")
  1. .;Get pointer to EFT file
  1. .S IEN3443=$P(REC31,U) Q:'IEN3443
  1. .S REC0=$G(^RCY(344.3,IEN3443,0))
  1. .;Get EFT file date
  1. .S EFTDATE=$P(REC0,U,2) Q:'EFTDATE
  1. .;Ignore if <15 days overdue
  1. .Q:$$FMDIFF^XLFDT(TODAY,EFTDATE,1)<15
  1. .;PRCA*4.5*303 - if we have a ERA check to see if we include this record or quit
  1. .I REC4'="" Q:$P(REC4,U,14)'=0 ; Not posted status is 0 - everything else is ignored
  1. .;Deposit number and payment amount
  1. .S DEPN=$P(REC0,U,6),DEPAMT=$P(REC31,U,7)
  1. .;Payer ID and Trace from EFT detail file
  1. .S PAYER=$P(REC31,U,2),TRACE=$P(REC31,U,4) S:PAYER="" PAYER="NO PAYER NAME RECEIVED" ; PRCA*4.5*298
  1. .;If payer and trace combined are >40 truncate payer name first
  1. .I $L(PAYER_TRACE)>40 D
  1. ..I $L(PAYER)>20 S PAYER=$E(PAYER,1,20) ; limit size of the name
  1. ..Q:$L(PAYER_TRACE)<41
  1. ..S TRACE=$E(TRACE,1,20) ; limit size of the trace
  1. .;Update count and totals
  1. .S EFTCNT=EFTCNT+1,EFTTOT=EFTTOT+DEPAMT
  1. .; PRCA*4.5*303 added EFTDATE to the subscripts before EFTCNT so report will sort in
  1. .; date ascending order.
  1. .;Save Deposit No, Receipt, Payer ID, EFT Date and Deposit Amount
  1. .S ^TMP(RCPROG,$J,"EFT",EFTDATE,EFTCNT)=$$EFTL(DEPN,TRACE,PAYER,EFTDATE,DEPAMT)
  1. Q
  1. ;
  1. ; PRCA*4.5*304
  1. ; Scan for ERA's older than allowed by parameter
  1. SUSPSCAN ;
  1. N RCCT,RCDATA,RCSDATE,RCDATA0,RCDATA2,RCDATA3,RCMAXDAY,RCRECTDA,RCTRANDA
  1. N RCDEP,RCTRACE,RCPAYER,RCEFTDT,RCDEPAMT,RCDAYS,RCUSER,RCREC,RCDISP,RCRSN,RCSREC
  1. ;
  1. ;initialize counters
  1. S (RCSUSAMT,RCSUSCNT)=0
  1. ;
  1. ;calculate the last date to stop gathering entries on
  1. S RCMAXDAY=TODAY-RCMXDYS
  1. ;
  1. ;Loop through the In Suspense index
  1. S (RCRECTDA,RCCT)=0
  1. F S RCRECTDA=$O(^RCY(344,"AN",RCRECTDA)) Q:'RCRECTDA D
  1. . S RCDATA=$G(^RCY(344,RCRECTDA,0))
  1. . S RCREC=$P(RCDATA,U)
  1. . S RCTRANDA=0 F S RCTRANDA=$O(^RCY(344,"AN",RCRECTDA,RCTRANDA)) Q:'RCTRANDA D
  1. . . S RCDATA0=$G(^RCY(344,RCRECTDA,1,RCTRANDA,0))
  1. . . S RCDATA2=$G(^RCY(344,RCRECTDA,1,RCTRANDA,2))
  1. . . S RCDATA3=$G(^RCY(344,RCRECTDA,1,RCTRANDA,3))
  1. . . ;get date into suspense
  1. . . S RCSDATE=$P(RCDATA3,U,2)
  1. . . S RCDAYS=$$FMTH^XLFDT(TODAY,1)-$$FMTH^XLFDT(RCSDATE,1)
  1. . . Q:RCSDATE=""
  1. . . ;
  1. . . ;if younger than the cutoff date, quit
  1. . . Q:RCDAYS'>RCMXDYS
  1. . . ;
  1. . . ; get the user and disposition
  1. . . S RCUSER=$$GET1^DIQ(200,$P(RCDATA3,U,3)_",",1,"E")
  1. . . S RCDISP=$$UP^XLFSTR($$GET1^DIQ(344.01,RCTRANDA_","_RCRECTDA_",",3.01))
  1. . . ;
  1. . . ;Suspense status has been cleared quit
  1. . . Q:$P(RCDATA2,U,6)'=""
  1. . . ;
  1. . . ;Extract needed info for report
  1. . . S RCEFTDT=$P(RCDATA0,U,6),RCDEPAMT=$P(RCDATA0,U,4)
  1. . . ;
  1. . . ;update counter and amount info
  1. . . S RCSUSCNT=RCSUSCNT+1
  1. . . S RCSUSAMT=RCSUSAMT+RCDEPAMT
  1. . . S RCRSN=$E($P($G(^RCY(344,RCRECTDA,1,RCTRANDA,1)),U,2),1,12)
  1. . . S RCSREC=RCREC_"@"_RCTRANDA
  1. . . ;
  1. . . ;update temporary array
  1. . . S ^TMP(RCPROG,$J,"SUSPENSE",RCSDATE,RCSUSCNT)=$$ESUSPL(RCSDATE,RCDAYS,RCUSER,RCSREC,RCDEPAMT,RCDISP,RCRSN)
  1. ;
  1. Q
  1. ;
  1. BULLETIN ;Create bulletins only if overdue EFT/ERA found
  1. ;
  1. N ARRAY,SBJ,SUB,CNT,CNT1,RCPROG1,GLB,RCMXDYS,IDX
  1. S RCPROG1="RCDPEM7A",GLB=$NA(^TMP(RCPROG1,$J,"XMTEXT"))
  1. ;
  1. ;Unmatched ERA bulletins
  1. I ERACNT D
  1. .;Build header
  1. .S SUB="ERA" K @GLB
  1. .S SBJ="EDI LBOX-STA# "_$P($$SITE^VASITE,"^",3)_"-ACTION REQ-Unmatched ERAs > 30 days"
  1. .S @GLB@(1)="The listed ERAs were received more than 30 days ago and have not yet been"
  1. .S @GLB@(2)="matched."
  1. .S @GLB@(3)=" "
  1. .S @GLB@(4)="Total # of ERAs - "_ERACNT
  1. .S @GLB@(5)="Total Dollar Amount - "_"$"_$FN(ERATOT,",",2)
  1. .S @GLB@(6)=" "
  1. .S @GLB@(7)="ERA# PAYER NAME FILE DATE AMOUNT PAID"
  1. .S @GLB@(8)=" TRACE#" ; PRCA*4.5*326
  1. .;
  1. .;Move unmatched ERA search findings into message
  1. .S CNT=0,CNT1=9,SUB="ERA" ; PRCA*4.5*326
  1. .S IDX="" F S IDX=$O(^TMP(RCPROG,$J,SUB,IDX)) Q:'IDX F S CNT=$O(^TMP(RCPROG,$J,SUB,IDX,CNT)) Q:'CNT D
  1. ..S CNT1=CNT1+1,@GLB@(CNT1)=^TMP(RCPROG,$J,SUB,IDX,CNT)
  1. ..S CNT1=CNT1+1,@GLB@(CNT1)=^TMP(RCPROG,$J,SUB,IDX,CNT,"TR") ; PRCA*4.5*326
  1. .S @GLB@(CNT1+1)="** END OF REPORT **"
  1. .D SEND
  1. .K @GLB
  1. ;
  1. ;Unposted "ACH" ERA bulletins
  1. ; PRCA*4.5*303 - modified this bulletin to show only "ACH" expected payments
  1. I ERA1CNT D
  1. .;Build header
  1. .S SUB="ERA1" K @GLB
  1. .; PRCA*4.5*303 - Changed SBJ to make sure it was less than 65 characters
  1. .S SBJ="EDI LBOX-STA# "_$P($$SITE^VASITE,"^",3)_"-ACTION REQ-EFT:Matched/Not Posted ERA>30 days"
  1. .S @GLB@(1)="The listed ERAs were received more than 30 days ago and have been matched but"
  1. .S @GLB@(2)="have not been posted"
  1. .S @GLB@(3)=" "
  1. .S @GLB@(4)="Total # of ERAs - ""MATCHED TO EFT"" - "_ERA1CNT
  1. .S @GLB@(5)="Total Dollar Amount - "_"$"_$FN(ERA1TOT,",",2)
  1. .S @GLB@(6)=" "
  1. .S @GLB@(7)="ERA# PAYER NAME FILE DATE AMOUNT PAID"
  1. .S @GLB@(8)=" TRACE#" ; PRCA*4.5*326
  1. .;
  1. .;Move unposted ERA search findings into message
  1. .S CNT=0,CNT1=9,IDX="" ; PRCA*4.5*326
  1. .F S IDX=$O(^TMP(RCPROG,$J,SUB,IDX)) Q:'IDX F S CNT=$O(^TMP(RCPROG,$J,SUB,IDX,CNT)) Q:'CNT D
  1. ..S CNT1=CNT1+1
  1. ..S @GLB@(CNT1)=^TMP(RCPROG,$J,SUB,IDX,CNT)
  1. ..S CNT1=CNT1+1 ; PRCA*4.5*326
  1. ..S @GLB@(CNT1)=^TMP(RCPROG,$J,SUB,IDX,CNT,"TR") ; PRCA*4.5*326
  1. .S @GLB@(CNT1+1)="** END OF REPORT **"
  1. .D SEND
  1. .K @GLB
  1. ;
  1. ;Unposted "CHK" ERA bulletins or ERAs, that don't match "ACH"
  1. ; PRCA*4.5*303 - modified this bulletin to show "CHK" expected payments (or don't match "ACH")
  1. I ERA2CNT D
  1. .;Build header
  1. .S SUB="ERA2" K @GLB
  1. .; PRCA*4.5*303 - Changed SBJ to make sure it was less than 65 characters
  1. .S SBJ="EDI LBOX-STA# "_$P($$SITE^VASITE,"^",3)_"-ACTION REQ-PAPER:Matched/Not Posted ERA>30 days"
  1. .S @GLB@(1)="The listed ERAs were received more than 30 days ago and have been matched but"
  1. .S @GLB@(2)="have not been posted"
  1. .S @GLB@(3)=" "
  1. .S @GLB@(4)="Total # of ERAs - ""MATCHED TO PAPER CHECK"" - "_ERA2CNT
  1. .S @GLB@(5)="Total Dollar Amount - "_"$"_$FN(ERA2TOT,",",2)
  1. .S @GLB@(6)=" "
  1. .S @GLB@(7)="ERA# PAYER NAME FILE DATE AMOUNT PAID"
  1. .S @GLB@(8)=" TRACE#" ; PRCA*4.5*326
  1. .;
  1. .;Move unposted ERA search findings into message
  1. .S CNT=0,CNT1=9,IDX="" ; PRCA*4.5*326
  1. .F S IDX=$O(^TMP(RCPROG,$J,SUB,IDX)) Q:'IDX F S CNT=$O(^TMP(RCPROG,$J,SUB,IDX,CNT)) Q:'CNT D
  1. ..S CNT1=CNT1+1,@GLB@(CNT1)=^TMP(RCPROG,$J,SUB,IDX,CNT)
  1. ..S CNT1=CNT1+1,@GLB@(CNT1)=^TMP(RCPROG,$J,SUB,IDX,CNT,"TR") ; PRCA*4.5*326
  1. .S @GLB@(CNT1+1)="** END OF REPORT **"
  1. .D SEND
  1. .K @GLB
  1. ;
  1. ;Unmatched EFT bulletins
  1. ; PRCA*4.5*303 - Changed logic to send "No EFTs more than 14 days..." message if no EFTs
  1. ;I EFTCNT D
  1. ;Build header
  1. S SUB="EFT" K @GLB
  1. S SBJ="EDI LBOX-STA# "_$P($$SITE^VASITE,"^",3)_"-ACTION REQ-EFTs > 14 days"
  1. I EFTCNT=0 D G B1
  1. . S @GLB@(1)="**** There are NO EFTs more than 14 days old that have not yet been matched."
  1. . S @GLB@(2)=" "
  1. . S @GLB@(3)="Total # of EFTs - "_EFTCNT
  1. . S @GLB@(4)="Total Dollar Amount - $"_$FN(0,",",2)
  1. . S @GLB@(5)=" "
  1. . S @GLB@(6)="** END OF REPORT **"
  1. ;
  1. I EFTCNT>0 D
  1. .S @GLB@(1)="The following EFTs were received more than 14 days ago and have not yet"
  1. .S @GLB@(2)="been matched."
  1. .S @GLB@(3)=" "
  1. .S @GLB@(4)="Total # of EFTs - "_EFTCNT
  1. .S @GLB@(5)="Total Dollar Amount - "_"$"_$FN(EFTTOT,",",2)
  1. .S @GLB@(6)=" "
  1. .S @GLB@(7)="DEPOSIT# PAYER NAME/TRACE# EFT DATE DEPOSIT AMT"
  1. .;
  1. .;Move EFT search findings into message
  1. .S CNT=0,CNT1=8,SUB="EFT",IDX=""
  1. .F S IDX=$O(^TMP(RCPROG,$J,SUB,IDX)) Q:'IDX F S CNT=$O(^TMP(RCPROG,$J,SUB,IDX,CNT)) Q:'CNT D
  1. ..S CNT1=CNT1+1,@GLB@(CNT1)=^TMP(RCPROG,$J,SUB,IDX,CNT)
  1. .S @GLB@(CNT1+1)="** END OF REPORT **"
  1. B1 ;
  1. D SEND
  1. K @GLB
  1. ;
  1. ;PRCA*4.5*304 - Add suspense bulletin
  1. ; Suspense bulletins
  1. ;
  1. ; Send bulletin if items in suspense
  1. I RCSUSCNT D
  1. . ;
  1. . N DT
  1. . ;Retrieve the parameter
  1. . S RCMXDYS=$$GET1^DIQ(342,"1,",7.04)
  1. . ;
  1. . ;Build header
  1. . S SUB="SUSPENSE" K @GLB
  1. . S SBJ="EDI LBOX-STA# "_$P($$SITE^VASITE,"^",3)_"-SUSPENSE ENTRIES OVERDUE FOR PROCESSING"
  1. . S @GLB@(1)="The following entries have been in Suspense past the #days allowed by site"
  1. . S @GLB@(2)="parameter - which is currently set at "_RCMXDYS_" days."
  1. . S @GLB@(3)=" "
  1. . S @GLB@(4)="Total # of Overdue Entries in Suspense - "_RCSUSCNT
  1. . S @GLB@(5)="Total Dollar Amount Overdue in Suspense - "_"$"_$FN(RCSUSAMT,",",2)
  1. . S @GLB@(6)=" "
  1. . S @GLB@(7)="SUSP DATE #DAYS USER RECEIPT# AMOUNT DISP REASON"
  1. . ;
  1. . ;Move Suspense search findings into message
  1. . S CNT=0,CNT1=8,SUB="SUSPENSE",DT=0
  1. . F S DT=$O(^TMP(RCPROG,$J,SUB,DT)) Q:'DT D
  1. . . F S CNT=$O(^TMP(RCPROG,$J,SUB,DT,CNT)) Q:'CNT D
  1. . . . S CNT1=CNT1+1,@GLB@(CNT1)=^TMP(RCPROG,$J,SUB,DT,CNT)
  1. . S @GLB@(CNT1+1)="** END OF REPORT **"
  1. . D SEND
  1. . K @GLB
  1. Q
  1. ;
  1. SEND ;Transmit mail message
  1. N XMDUZ,XMTEXT,XMSUB,XMY,XMINSTR
  1. S XMDUZ=DUZ,XMTEXT=GLB,XMSUB=SBJ,XMY("I:G.RCDPE AUDIT")=""
  1. S XMINSTR("FROM")="POSTMASTER"
  1. S XMINSTR("FLAGS")="P"
  1. D SENDMSG^XMXAPI(XMDUZ,XMSUB,XMTEXT,.XMY,.XMINSTR)
  1. Q
  1. ;
  1. ERAL(X1,X2,X3,X4) ;Format ERA Message line
  1. N SPACE
  1. S SPACE=$J("",80)
  1. S X1=X1_$E(SPACE,1,12-$L(X1))
  1. S X2=X1_$E(X2,1,43)_$E(SPACE,1,43-$L(X2))
  1. S X3=$$FMTE^XLFDT(X3,"2D")
  1. S X4="$"_$FN(X4,",",2)
  1. Q X2_$J(X3,8)_$J(X4,15)
  1. ;
  1. EFTL(X1,X2,X3,X4,X5) ;Format EFT Message line
  1. N SPACE
  1. S SPACE=$J("",80)
  1. S X1=X1_$E(SPACE,1,10-$L(X1))_" "
  1. S X2=X3_"/"_X2 ;Payer and Trace
  1. S X2=X1_$E(X2,1,41)_$E(SPACE,1,42-$L(X2))
  1. S X4=$$FMTE^XLFDT(X4,"2D")
  1. S X5="$"_$FN(X5,",",2)
  1. Q X2_$J(X4,8)_$J(X5,15)
  1. ;
  1. ;PRCA*4.5*304
  1. ESUSPL(X1,X2,X3,X4,X5,X6,X7) ;Format Suspense Message line
  1. N SPACE
  1. S SPACE=$J("",80)
  1. ;spacing for Suspense Date
  1. S X1=$$FMTE^XLFDT(X1,"2D")
  1. S X1=X1_$E(SPACE,1,10-$L(X1))
  1. ;spacing for # days in suspense
  1. S X2=$E(SPACE,1,6-$L(X2))_X2
  1. ;spacing for USER
  1. S X3=" "_X3_$E(SPACE,1,5-$L(X3))
  1. ;spacing for RECEIPT NUMBER_TRANS #
  1. S X4=$E(X4_SPACE,1,16)
  1. ;spacing for amount in suspense
  1. S X5=$J("$"_$FN(X5,",",2),13)_" "
  1. ;spacing for STATUS
  1. S X6=X6_$E(SPACE,1,12-$L(X6))
  1. ;spacing for REASON
  1. S X7=X7_$E(SPACE,1,12-$L(X7))
  1. ;return concatenated string
  1. Q X1_X2_X3_X4_X5_X6_X7
  1. ;