| 1 | RCBEIB ;WISC/RFJ-integrated billing entry points ;1 Jun 00
|
---|
| 2 | ;;4.5;Accounts Receivable;**157**;Mar 20, 1995
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | ;
|
---|
| 7 | CANCEL(RCBILLDA,RCCANDAT,RCCANDUZ,RCCANAMT,RCCANCOM) ; this entry point is
|
---|
| 8 | ; called when a bill is cancelled in IB
|
---|
| 9 | ; input rcbillda = ien of bill to cancel
|
---|
| 10 | ; rccandat = (optional) the date the bill was cancelled
|
---|
| 11 | ; rccanduz = (optional) the user cancelling the bill
|
---|
| 12 | ; rccanamt = (optional) amount being cancelled
|
---|
| 13 | ; rccancom = (optional) comments
|
---|
| 14 | ;
|
---|
| 15 | ; if the optional fields are passed, they will be stored in the
|
---|
| 16 | ; comment field (98) of the bill.
|
---|
| 17 | ;
|
---|
| 18 | ; returns 1 if bill is cancelled in AR
|
---|
| 19 | ; 0^error message if process fails to cancel bill in AR
|
---|
| 20 | ;
|
---|
| 21 | N ACTDATE,COMMENT,DATA,INTADM,LINE,PIECE,RCBALANC,RCDATA0,RCDATE,RCFCANC,RCLIST,RCOMMENT,RCPAYAMT,RCPAYMNT,RCTRANDA,VALUE,X,XMDUN,XMY,Y
|
---|
| 22 | ;
|
---|
| 23 | ; lock the bill
|
---|
| 24 | L +^PRCA(430,RCBILLDA):10
|
---|
| 25 | I '$T Q "0^AR bill is locked by another process"
|
---|
| 26 | ;
|
---|
| 27 | S RCDATA0=$G(^PRCA(430,RCBILLDA,0))
|
---|
| 28 | I RCDATA0="" L -^PRCA(430,RCBILLDA) Q "0^AR bill not found"
|
---|
| 29 | ;
|
---|
| 30 | ; add comments to bill
|
---|
| 31 | S RCOMMENT(1)="Bill was cancelled in IB on "_$$FMTE^XLFDT($$NOW^XLFDT)_".",LINE=2
|
---|
| 32 | S Y=$G(RCCANDAT) I Y S Y=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3),LINE=LINE+1,RCOMMENT(LINE)=" Cancel Date: "_Y
|
---|
| 33 | S Y=$G(RCCANDUZ) I Y S Y=$P($G(^VA(200,+RCCANDUZ,0)),"^"),LINE=LINE+1,RCOMMENT(LINE)=" Cancel By: "_Y
|
---|
| 34 | S Y=$G(RCCANAMT) I Y S Y=$J(Y,0,2),LINE=LINE+1,RCOMMENT(LINE)=" Cancel Amount: "_Y
|
---|
| 35 | I $G(RCCANCOM)'="" S LINE=LINE+1,RCOMMENT(LINE)=" Comments: "_RCCANCOM
|
---|
| 36 | I LINE'=2 S RCOMMENT(2)="The following information was passed from IB:"
|
---|
| 37 | D ADDCOMM^RCBEUBIL(RCBILLDA,.RCOMMENT)
|
---|
| 38 | ;
|
---|
| 39 | ; test to see if the bill is active in AR
|
---|
| 40 | S ACTDATE=$P($G(^PRCA(430,RCBILLDA,6)),"^",21)
|
---|
| 41 | ;
|
---|
| 42 | ; === bill not activated ===
|
---|
| 43 | ; set status to cancelled bill (26)
|
---|
| 44 | I 'ACTDATE D CHGSTAT^RCBEUBIL(RCBILLDA,26) L -^PRCA(430,RCBILLDA) Q 1
|
---|
| 45 | ;
|
---|
| 46 | ; === bill is activated ===
|
---|
| 47 | ;
|
---|
| 48 | ; get the balance of the bill
|
---|
| 49 | S RCBALANC=$$GETTRANS^RCDPBTLM(RCBILLDA)
|
---|
| 50 | ;
|
---|
| 51 | ; calculate payments made
|
---|
| 52 | S RCDATE="",RCPAYAMT=0,RCPAYMNT=""
|
---|
| 53 | F S RCDATE=$O(RCLIST(RCDATE)) Q:'RCDATE D
|
---|
| 54 | . S RCTRANDA=0
|
---|
| 55 | . F S RCTRANDA=$O(RCLIST(RCDATE,RCTRANDA)) Q:'RCTRANDA D
|
---|
| 56 | . . I RCLIST(RCDATE,RCTRANDA)'["PAYMENT" Q
|
---|
| 57 | . . F PIECE=2:1:6 D
|
---|
| 58 | . . . ; total payments
|
---|
| 59 | . . . S RCPAYAMT=RCPAYAMT+$P(RCLIST(RCDATE,RCTRANDA),"^",PIECE)
|
---|
| 60 | . . . ; total payments by prin ^ int ^ adm ^ mf ^ cc
|
---|
| 61 | . . . S $P(RCPAYMNT,"^",PIECE-1)=$P(RCPAYMNT,"^",PIECE-1)+$P(RCLIST(RCDATE,RCTRANDA),"^",PIECE)
|
---|
| 62 | ;
|
---|
| 63 | ; if the current bill status is active, cancel it
|
---|
| 64 | I $P(^PRCA(430,RCBILLDA,0),"^",8)=16!($P(^PRCA(430,RCBILLDA,0),"^",8)=42) D
|
---|
| 65 | . ; if there is a principal balance, decrease it
|
---|
| 66 | . S COMMENT(1)="Bill cancelled in IB. Automatic decrease adjustment created."
|
---|
| 67 | . I $P(RCBALANC,"^") S RCTRANDA=$$INCDEC^RCBEUTR1(RCBILLDA,-$P(RCBALANC,"^"),.COMMENT) I 'RCTRANDA Q
|
---|
| 68 | . ;
|
---|
| 69 | . ; create an int/adm charge (minus)
|
---|
| 70 | . ; determine if there is an interest ^ admin ^ mf ^ cc charge
|
---|
| 71 | . ; set value = interest ^ admin ^ mf ^ cc (and make negative)
|
---|
| 72 | . S INTADM=0,VALUE=""
|
---|
| 73 | . F PIECE=2:1:5 S INTADM=INTADM+$P(RCBALANC,"^",PIECE),VALUE=VALUE_(-$P(RCBALANC,"^",PIECE))_"^"
|
---|
| 74 | . I INTADM S RCTRANDA=$$INTADM^RCBEUTR1(RCBILLDA,VALUE,.COMMENT) I 'RCTRANDA Q
|
---|
| 75 | . ;
|
---|
| 76 | . ; mark bill as cancellation (39)
|
---|
| 77 | . D CHGSTAT^RCBEUBIL(RCBILLDA,39)
|
---|
| 78 | ;
|
---|
| 79 | ; recheck status to see if bill was cancelled
|
---|
| 80 | ; set rcfcanc to indicate bill could not be canceled
|
---|
| 81 | S RCDATA0=$G(^PRCA(430,RCBILLDA,0))
|
---|
| 82 | I $P(RCDATA0,"^",8)'=39,$P(RCDATA0,"^",8)'=26 S RCFCANC="AR could not automatically CANCEL the bill. User action is required."
|
---|
| 83 | ;
|
---|
| 84 | ; if the bill was cancelled in AR and no payments, do not send mail
|
---|
| 85 | I $G(RCFCANC)="",'RCPAYAMT L -^PRCA(430,RCBILLDA) Q 1
|
---|
| 86 | ;
|
---|
| 87 | ;
|
---|
| 88 | ; bill could not be cancelled in AR or payments made,
|
---|
| 89 | ; send mailman message to user
|
---|
| 90 | K ^TMP($J,"RCRJRCORMM")
|
---|
| 91 | S ^TMP($J,"RCRJRCORMM",1,0)="Integrated Billing has cancelled bill "_$P(RCDATA0,"^")_"."
|
---|
| 92 | S ^TMP($J,"RCRJRCORMM",2,0)=" "
|
---|
| 93 | S ^TMP($J,"RCRJRCORMM",3,0)=" BILL: "_$P(RCDATA0,"^")_" STATUS: "_$P($G(^PRCA(430.3,+$P(^PRCA(430,RCBILLDA,0),"^",8),0)),"^")
|
---|
| 94 | S DATA=$$ACCNTHDR^RCDPAPLM($P(RCDATA0,"^",9))
|
---|
| 95 | S ^TMP($J,"RCRJRCORMM",4,0)=" ACCOUNT: "_$P(DATA,"^")_" "_$P(DATA,"^",2)
|
---|
| 96 | S ^TMP($J,"RCRJRCORMM",5,0)=" "
|
---|
| 97 | S ^TMP($J,"RCRJRCORMM",6,0)=" Principal Interest Admin"
|
---|
| 98 | S ^TMP($J,"RCRJRCORMM",7,0)=" Current Balance: "_$J($P(RCBALANC,"^"),10,2)_$J($P(RCBALANC,"^",2),10,2)_$J($P(RCBALANC,"^",3)+$P(RCBALANC,"^",4)+$P(RCBALANC,"^",5),10,2)
|
---|
| 99 | S LINE=7
|
---|
| 100 | ;
|
---|
| 101 | ; if payments made, show amount paid
|
---|
| 102 | I RCPAYAMT S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)=" Payments Made: "_$J(-$P(RCPAYMNT,"^"),10,2)_$J(-$P(RCPAYMNT,"^",2),10,2)_$J(-$P(RCPAYMNT,"^",3)-$P(RCPAYMNT,"^",4)-$P(RCPAYMNT,"^",5),10,2)
|
---|
| 103 | ;
|
---|
| 104 | ; if comments passed from IB, include them
|
---|
| 105 | I $D(RCOMMENT(2)) D
|
---|
| 106 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)=" "
|
---|
| 107 | . F X=1:1 Q:'$D(RCOMMENT(X)) S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)=RCOMMENT(X)
|
---|
| 108 | ;
|
---|
| 109 | ; if the bill could not be cancelled in AR, let user know the error
|
---|
| 110 | I $G(RCFCANC)'="" D
|
---|
| 111 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)=" "
|
---|
| 112 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)="* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
|
---|
| 113 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)=RCFCANC
|
---|
| 114 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)="* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
|
---|
| 115 | ;
|
---|
| 116 | ; if a payment has been made, let user know it needs to be refunded
|
---|
| 117 | I RCPAYAMT D
|
---|
| 118 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)=" "
|
---|
| 119 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)="* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
|
---|
| 120 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)="In AR, a payment of $ "_$J(-RCPAYAMT,0,2)_" has been collected and needs to be REFUNDED."
|
---|
| 121 | . S LINE=LINE+1,^TMP($J,"RCRJRCORMM",LINE,0)="* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
|
---|
| 122 | ;
|
---|
| 123 | ; send report
|
---|
| 124 | S XMY("G.PRCA ADJUSTMENT TRANS")=""
|
---|
| 125 | S X=$$SENDMSG^RCRJRCOR("AR User Action Required "_$P(RCDATA0,"^"),.XMY)
|
---|
| 126 | K ^TMP($J,"RCRJRCORMM")
|
---|
| 127 | ;
|
---|
| 128 | L -^PRCA(430,RCBILLDA)
|
---|
| 129 | ;
|
---|
| 130 | Q $S($G(RCFCANC)'="":"0^"_RCFCANC,1:1)
|
---|