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

RCBEPAYC.m

Go to the documentation of this file.
RCBEPAYC ;WISC/RFJ-check a payment before processing                 ;1 Jun 00
 ;;4.5;Accounts Receivable;**153**;Mar 20, 1995
 ;;Per VHA Directive 10-93-142, this routine should not be modified.
 Q
 ;
 ;
CHECKPAY(RCRECTDA,RCPAYDA) ;  check a payment before processing.  this call
 ;  is normally used to check a payment and verify that the billed
 ;  amount is not less than the paid amount.
 ;  returns 1^error if the payment cannot be processed
 ;
 N RCACCT,RCBILAMT,RCDATA,RCPAYAMT,X
 ;
 S RCDATA=$G(^RCY(344,RCRECTDA,1,RCPAYDA,0))
 I RCDATA="" Q "1^Unable to find payment"
 ;
 S RCACCT=$P(RCDATA,"^",3)
 I RCACCT="" Q "1^Account not defined"
 ;
 ;  get the payment amount (amount paid minus amount processed)
 ;  if no payment amount, do not return error
 S RCPAYAMT=$P(RCDATA,"^",4)-$P(RCDATA,"^",5) I RCPAYAMT'>0 Q 0
 ;
 ;  if first party bill, everything is ok, quit
 I $P(RCDATA,"^",3)["DPT(" Q 0
 I $P(RCDATA,"^",3)["PRCA(430,",$P($G(^RCD(340,+$P($G(^PRCA(430,+$P(RCDATA,"^",3),0)),"^",9),0)),"^")["DPT(" Q 0
 ;
 ;  === third party bills ===
 ;
 ;  bill not activated or open
 S X=$P($G(^PRCA(430,+$P(RCDATA,"^",3),0)),"^",8)
 I X'=42,X'=16 Q "1^Bill not activated or open"
 ;
 ;  calculate dollars on receivable
 S X=$G(^PRCA(430,+$P(RCDATA,"^",3),7))
 S RCBILAMT=$P(X,"^")+$P(X,"^",2)+$P(X,"^",3)+$P(X,"^",4)+$P(X,"^",5)
 ;
 ;  does the payment exceed the billed amount?
 ;  pending payments is not greater than bill balance, payment ok, quit
 I RCPAYAMT'>RCBILAMT Q 0
 ;
 ;  pending payments exceed balance of the bill, return error
 Q "1^Pending Payments of "_$J(RCPAYAMT,0,2)_" is greater than the balance of the bill "_$J(RCBILAMT,0,2)