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

RCDPBTLM.m

Go to the documentation of this file.
  1. RCDPBTLM ;WISC/RFJ - bill transactions List Manager top routine ;1 Jun 99
  1. ;;4.5;Accounts Receivable;**114,148,153,168,169,198,247,271,276,315,372**;Mar 20, 1995;Build 9
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ; Reference to $$REC^IBRFN supported by DBIA 2031
  1. ;
  1. ; called from menu option (19)
  1. ;
  1. N RCBILLDA,RCDPFXIT
  1. ;
  1. F D Q:'RCBILLDA
  1. . W !! S RCBILLDA=$$SELBILL
  1. . I RCBILLDA<1 S RCBILLDA=0 Q
  1. . D EN^VALM("RCDP TRANSACTIONS LIST")
  1. . ; fast exit
  1. . I $G(RCDPFXIT) S RCBILLDA=0
  1. Q
  1. ;
  1. ;
  1. INIT ; initialization for list manager list
  1. ; requires rcbillda
  1. ; PRCA*3.5*315 - Replaced "^" with VA Standard Variable U throughout
  1. N ADMIN,DATE,RCLINE,RCLIST,RCTOTAL,RCTRAN,RCTRANDA
  1. K ^TMP("RCDPBTLM",$J),^TMP("VALM VIDEO",$J)
  1. ;
  1. ; fast exit
  1. I $G(RCDPFXIT) S VALMQUIT=1 Q
  1. ;
  1. ; set the List Manager line number
  1. S RCLINE=0
  1. ; set the List Manager transaction number
  1. S RCTRAN=0
  1. ;
  1. ; get transactions and balance for bill
  1. S RCTOTAL=$$GETTRANS(RCBILLDA)
  1. ;
  1. S DATE="" F S DATE=$O(RCLIST(DATE)) Q:'DATE D
  1. . S RCTRANDA="" F S RCTRANDA=$O(RCLIST(DATE,RCTRANDA)) Q:RCTRANDA="" D
  1. . . S RCLINE=RCLINE+1
  1. . . ;
  1. . . ; create an index array for transaction lookup in list
  1. . . I RCTRANDA D
  1. . . . S RCTRAN=RCTRAN+1
  1. . . . S ^TMP("RCDPBTLM",$J,"IDX",RCTRAN,RCTRAN)=RCTRANDA
  1. . . . D SET^RCDPAPLI(RCTRAN,RCLINE,1,80,0,IORVON,IORVOFF)
  1. . . ;
  1. . . D SET^RCDPAPLI($S(RCTRANDA:RCTRANDA,1:" "),RCLINE,5,80) ; PRCA*4.5*315 Incr left margin
  1. . . D SET^RCDPAPLI($E(DATE,4,5)_"/"_$E(DATE,6,7)_"/"_$E(DATE,2,3),RCLINE,17,25)
  1. . . D SET^RCDPAPLI($TR($P(RCLIST(DATE,RCTRANDA),U),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz"),RCLINE,27,51)
  1. . . D SET^RCDPAPLI($J($P(RCLIST(DATE,RCTRANDA),U,2),9,2),RCLINE,53,62)
  1. . . D SET^RCDPAPLI($J($P(RCLIST(DATE,RCTRANDA),U,3),9,2),RCLINE,62,71)
  1. . . ; add marshal fee and court cost to create admin dollars
  1. . . S ADMIN=$P(RCLIST(DATE,RCTRANDA),U,4)+$P(RCLIST(DATE,RCTRANDA),U,5)+$P(RCLIST(DATE,RCTRANDA),U,6)
  1. . . D SET^RCDPAPLI($J(ADMIN,9,2),RCLINE,71,80)
  1. ;
  1. ; show totals
  1. S RCLINE=RCLINE+1
  1. D SET^RCDPAPLI(" --------- -------- --------",RCLINE,1,80)
  1. S RCLINE=RCLINE+1
  1. D SET^RCDPAPLI(" TOTAL BALANCE FOR BILL",RCLINE,1,80)
  1. D SET^RCDPAPLI($J($P(RCTOTAL,U,1),9,2),RCLINE,53,62)
  1. D SET^RCDPAPLI($J($P(RCTOTAL,U,2),9,2),RCLINE,62,71)
  1. D SET^RCDPAPLI($J($P(RCTOTAL,U,3)+$P(RCTOTAL,U,4)+$P(RCTOTAL,U,5),9,2),RCLINE,71,80)
  1. ;
  1. ; compare totals to what is stored in the file
  1. N RCDATA7,RCFOUT
  1. S RCDATA7=$G(^PRCA(430,RCBILLDA,7))
  1. ; for a write-off bill, the balance should equal all zeros, for
  1. ; these bills, node 7 is the write-off amount, so for the out of
  1. ; balance check to work, node 7 needs to be adjusted to all zeros
  1. I $P(^PRCA(430,RCBILLDA,0),U,8)=23 S RCDATA7="0^0^0^0^0"
  1. I +$P(RCDATA7,U,1)'=+$P(RCTOTAL,U,1) S RCFOUT=1
  1. I +$P(RCDATA7,U,2)'=+$P(RCTOTAL,U,2) S RCFOUT=1
  1. I ($P(RCDATA7,U,3)+$P(RCDATA7,U,4)+$P(RCDATA7,U,5))'=+$P(RCTOTAL,U,3) S RCFOUT=1
  1. I $G(RCFOUT) D
  1. . S RCLINE=RCLINE+1
  1. . D SET^RCDPAPLI(" ",RCLINE,1,80)
  1. . S RCLINE=RCLINE+1
  1. . D SET^RCDPAPLI(" STORED BALANCE FOR BILL (** INCORRECT **)",RCLINE,1,80)
  1. . D SET^RCDPAPLI($J($P(RCDATA7,U,1),9,2),RCLINE,53,62)
  1. . D SET^RCDPAPLI($J($P(RCDATA7,U,2),9,2),RCLINE,62,71)
  1. . D SET^RCDPAPLI($J($P(RCDATA7,U,3)+$P(RCDATA7,U,4)+$P(RCDATA7,U,5),9,2),RCLINE,71,80)
  1. ;
  1. ; set valmcnt to number of lines in the list
  1. S VALMCNT=RCLINE
  1. D HDR
  1. Q
  1. ;
  1. ;
  1. HDR ; header code for list manager display
  1. ; requires rcbillda
  1. N %,DATA,RCDEBTDA,RCDPDATA
  1. ;
  1. D DIQ430^RCDPBPLM(RCBILLDA,".01;8;")
  1. ;
  1. S RCDEBTDA=$P(^PRCA(430,RCBILLDA,0),U,9)
  1. S DATA=$$ACCNTHDR^RCDPAPLM(RCDEBTDA)
  1. ;
  1. S %="",$P(%," ",80)=""
  1. ; PRCA*4.5*276 - get EEOB indicator for 1st/3rd party payment and attach to bill when applicable
  1. S PRCOUT=$$COMP3^PRCAAPR(RCBILLDA)
  1. I PRCOUT'="%" S PRCOUT=$$IBEEOBCK^PRCAAPR1(RCBILLDA)
  1. S VALMHDR(1)=$E("Bill #: "_$G(PRCOUT)_$G(RCDPDATA(430,RCBILLDA,.01,"E"))_%,1,25)_"Account: "_$P(DATA,U)_$P(DATA,U,2)
  1. S VALMHDR(2)=$E("Status: "_$G(RCDPDATA(430,RCBILLDA,8,"E"))_%,1,25)_$E(" Addr: "_$P(DATA,U,4)_", "_$P(DATA,U,7)_", "_$P(DATA,U,8)_" "_$P(DATA,U,9)_%,1,55)
  1. ; PRCA*4.5*276 - show caption for user
  1. S VALMSG="|% EEOB | Enter ?? for more actions |" ; PRCA*4.5*276
  1. Q
  1. S VALMHDR(3)=" "_IORVON_$E("Bill Balance: "_$J($P(RCTOTAL,U)+$P(RCTOTAL,U,2)+$P(RCTOTAL,U,3)+$P(RCTOTAL,U,4)+$P(RCTOTAL,U,5),0,2)_%,1,23)_IORVOFF_" Phone: "_$P(DATA,U,10)
  1. Q
  1. ;
  1. ;
  1. EXIT ; exit list manager option and clean up
  1. K ^TMP("RCDPBTLM",$J),^TMP("RCDPBTLMX",$J)
  1. Q
  1. ;
  1. ;
  1. SELBILL() ; select a bill
  1. ; returns -1 for timeout or ^, 0 for no selection, or ien of bill
  1. N %,%Y,C,DIC,DTOUT,DUOUT,RCBEFLUP,X,Y
  1. N DPTNOFZY,DPTNOFZK S (DPTNOFZY,DPTNOFZK)=1
  1. N RCY,DIR,DIRUT
  1. ; allow user to get the record using bill# or ECME#
  1. S DIR("A")="Select (B)ILL or (E)CME#: "
  1. S DIR(0)="SA^B:BILL NUMBER;E:ECME#"
  1. S DIR("B")="B"
  1. D ^DIR K DIR I $D(DIRUT) Q 0
  1. S RCY=Y
  1. I RCY="E" Q $$SELECME
  1. S DIC="^PRCA(430,",DIC(0)="QEAM",DIC("A")="Select BILL: "
  1. S DIC("W")="D DICW^RCBEUBI1"
  1. ; special lookup on input
  1. S RCBEFLUP=1
  1. D ^DIC
  1. I Y<0,'$G(DUOUT),'$G(DTOUT) S Y=0
  1. Q +Y
  1. ;
  1. ;
  1. GETTRANS(BILLDA) ; original amount goes first for bill
  1. ; returns list of transactions in
  1. ; rclist(date,tranda)=trantype ^ principle ^ interest ^ admin
  1. ; returns principle balance ^ interest balance ^ admin balance
  1. ; ^ marshall fee balance ^ court cost balance
  1. N %,ADMBAL,AMTDISP,CCBAL,DATA0,DATA1,DATE,INTBAL,MFBAL,PRINBAL,RCDPDATA,RCUSER,TRANDA,VALUE
  1. ;
  1. D DIQ430^RCDPBPLM(BILLDA,"3;60;")
  1. ;
  1. K RCLIST
  1. S (ADMBAL,CCBAL,INTBAL,MFBAL,PRINBAL)=0
  1. S PRINBAL=RCDPDATA(430,BILLDA,3,"I")
  1. ; loop transaction and add to list
  1. S TRANDA=0 F S TRANDA=$O(^PRCA(433,"C",BILLDA,TRANDA)) Q:'TRANDA D
  1. . S DATA0=$G(^PRCA(433,TRANDA,0)) ;PRCA*4.5*315 Needed for User ID
  1. . S RCUSER=$P(DATA0,U,9) ;PRCA*4.5*315
  1. . S RCUSER=$$GET1^DIQ(200,RCUSER_",",1) ;PRCA*4.5*315
  1. . S DATA1=$G(^PRCA(433,TRANDA,1))
  1. . S DATE=$P(DATA1,U,9) I 'DATE Q
  1. . S VALUE=$$TRANVALU(TRANDA) ;PRCA*4.5*315 (was I VALUE="" Q)
  1. . S RCLIST($P(DATE,"."),TRANDA)=$P($G(^PRCA(430.3,+$P(DATA1,U,2),0)),U)_VALUE
  1. . S $P(RCLIST($P(DATE,"."),TRANDA),U,7)=RCUSER ;PRCA*4.5*315
  1. . ;
  1. . ; calculate bill's balance
  1. . S PRINBAL=PRINBAL+$P(VALUE,U,2)
  1. . S INTBAL=INTBAL+$P(VALUE,U,3)
  1. . S ADMBAL=ADMBAL+$P(VALUE,U,4)
  1. . S MFBAL=MFBAL+$P(VALUE,U,5)
  1. . S CCBAL=CCBAL+$P(VALUE,U,6)
  1. ;
  1. S DATE=$G(RCDPDATA(430,BILLDA,60,"I"))
  1. ; check to make sure activation date is not greater than first transaction
  1. S %=$O(RCLIST(0)) I DATE>% S DATE=%
  1. S RCLIST(+$P(DATE,"."),0)="original amount^"_RCDPDATA(430,BILLDA,3,"I")
  1. ;
  1. Q PRINBAL_U_INTBAL_U_ADMBAL_U_MFBAL_U_CCBAL
  1. ;
  1. ;
  1. TRANVALU(TRANDA) ; return the transaction value as displayed (with + or - sign)
  1. N TYPE,VALUE
  1. S VALUE=$$TRANBAL^RCRJRCOT(TRANDA)
  1. ; no dollars on transaction
  1. I '$P(VALUE,U),'$P(VALUE,U,2),'$P(VALUE,U,3),'$P(VALUE,U,4),'$P(VALUE,U,5) Q ""
  1. ; check type for payments, etc, make values (-) to subtract
  1. S TYPE=$P($G(^PRCA(433,TRANDA,1)),U,2)
  1. I TYPE=2!(TYPE=8)!(TYPE=9)!(TYPE=10)!(TYPE=11)!(TYPE=14)!(TYPE=29)!(TYPE=34)!(TYPE=35)!(TYPE=41) D
  1. . S $P(VALUE,U,1)=-$P(VALUE,U,1)
  1. . S $P(VALUE,U,2)=-$P(VALUE,U,2)
  1. . S $P(VALUE,U,3)=-$P(VALUE,U,3)
  1. . S $P(VALUE,U,4)=-$P(VALUE,U,4)
  1. . S $P(VALUE,U,5)=-$P(VALUE,U,5)
  1. ;
  1. ; the following transaction types should not change the bills balance
  1. ; return the amount displayed in the description and 0 for value
  1. ; refer to RC 3, refer to DOJ 4, reestablish 5, returned 6 and 32
  1. ; repayment plan 25, amended 33, suspended 47, unsuspended 46
  1. K AMTDISP
  1. I TYPE=3!(TYPE=4)!(TYPE=5)!(TYPE=6)!(TYPE=25)!(TYPE=32)!(TYPE=33)!(TYPE=46)!(TYPE=47) D
  1. . S AMTDISP=" ($"_$J($P(VALUE,U)+$P(VALUE,U,2)+$P(VALUE,U,3)+$P(VALUE,U,4)+$P(VALUE,U,5),0,2)_")"
  1. . S VALUE=""
  1. Q $G(AMTDISP)_U_VALUE
  1. ;
  1. SELECME() ;
  1. ; function takes the user input of the ECME # to return a valid ien of file 430
  1. ; if an invalid ECME is evaluated then the process keeps asking the user for ECME #
  1. ; until a valid ECME# is entered or until the user enters a U or null value
  1. ; output - returns the IEN of the record entry in the ACCOUNT RECEIVABLE file (#430) or "??"
  1. N RCECME,RCBILL,DIR,DIRUT,Y
  1. S DIR(0)="FO^1:12^I X'?1.12N W !!,""Cannot contain alpha characters"" K X"
  1. S DIR("A")="Select ECME#"
  1. RET D ^DIR I $D(DIRUT) Q 0
  1. S RCECME=$S(+Y>0:Y,1:0)
  1. S RCBILL=$$REC^IBRFN(RCECME) ; IA 2031
  1. I RCBILL<0 W !!,"??" G RET
  1. E W !!,$P($G(^PRCA(430,+RCBILL,0)),U)," "
  1. Q RCBILL
  1. ;RCDPBTLM