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

PRCA399C.m

Go to the documentation of this file.
PRCA399C ;MNTVBB/RGB - Restores any changes to AR files to allow re-testing ; FEB 05, 2022
 ;;4.5;Accounts Receivable;**399**;Feb 05, 2022;Build 67
 ;;Per VA Directive 6402, this routine should not be modified.
 ;
 Q
EN(PRCADEB) D NOW^%DTC S ^XTMP("PRCA399",$J,999,"FBEGINDEBTORCHECK")=%
 S (PRCANFLG,PRCAZ,PRCAX,PRCAXX,PRCAXXX)=0,PRCAW=^XTMP("PRCA399",$J,2,0)
RD S ^XTMP("PRCA399",$J,999,"FBEGCHKDEB")=PRCADEB
 W:PRCAW !!!,"DEBTOR: ",PRCADEB
 S (PRCAPBAL,PRCABBAL,PRCATBAL,PRCAAMT)=0,PRCAHDEB=PRCADEB K ^TMP("PRCAGT",$J)
 S PRCADAT=0  ;$O(^XTMP("PRCA399",$J,2,4,PRCADEB,0))-.001
 ;S PRCARCDT=9999999.999999-PRCADAT,PRCAPBAL=0
 D BBAL(PRCADEB,.PRCABBAL) S PRCADAT=0   ;I PRCARCDT S PRCADAT=9999999.999999-PRCARCDT
A1 W:PRCAW !,"DATE USED: ",PRCADAT
 S PRCAPBAL=0
 ;D PBAL(PRCADEB,PRCARCDT,.PRCAPBAL) I PRCARCDT S PRCADAT=9999999.999999-PRCARCDT
 F PRCAXX="PB","INT","ADM","MF","CT" S PRCAPBAL(PRCAXX)=0
 W:PRCAW !,"BACK0"
 D EN^PRCA399D(PRCADEB,PRCADAT)
 D TBAL^PRCA399D(PRCADEB,.PRCATBAL)
 K ^TMP("PRCAGT",$J)
A17 I (PRCAPBAL+PRCATBAL=PRCABBAL) S PRCAY=1 W:PRCAW !!,"This patient's account is currently in balance!"
 E  S PRCAY=0,^XTMP("PRCA399",$J,9,1,PRCADEB)=PRCAPBAL_U_PRCATBAL_U_PRCABBAL_U_U_U_$G(^XTMP("PRCA399",$J,2,1,PRCADEB,0)) W:PRCAW !!,"This patient's account is currently out of balance!"
 I PRCAW W !!,PRCAPBAL," + ",PRCATBAL," = ",PRCABBAL,"    (",$G(^XTMP("PRCA399",$J,2,1,PRCADEB,0)),")  NEG:",$S(PRCANFLG=0:"NO",1:"YES")
 I PRCAW W !,"DEBTOR: ",PRCADEB R:'PRCAXXX&PRCAW PRCAXXX:1
 S ^XTMP("PRCA399",$J,9,2,PRCADEB)=PRCAPBAL_U_PRCATBAL_U_PRCABBAL_U_U_U_$G(^XTMP("PRCA399",$J,2,1,PRCADEB,0))
 S ^XTMP("PRCA399",$J,999,"FENDCHKDEB")=PRCADEB_U_PRCAPBAL_U_PRCATBAL_U_PRCABBAL
 K PRCATBAL,PRCABBAL,PRCADT,PRCASEL,PRCADB,PRCAPBAL,PRCAAC,PRCAADM
 K PRCABAL,PRCABEG,PRCABILL,PRCABN,PRCAZ,PRCAX,PRCAXX,PRCADEB,PRCANFLG
 K PRCAAMT,PRCAWKDT,PRCAXXX,PRCAW
 Q
BBAL(PRCADB,PRCABAL,PRCADT) ;get bills balances return array
 S (PRCABAL,PRCAPB,PRCAINT,PRCAADM,PRCAMF,PRCACT,PRCAPNEG,PRCATTY)=0,PRCALET3="",PRCACFLG=$D(PRCACSBB)
 G:'PRCADB BBALQ
 S PRCAAC=+$O(^PRCA(430.3,"AC",102,0)),PRCAOP=+$O(^PRCA(430.3,"AC",112,0))
 S PRCAPRE=+$O(^PRCA(430.2,"AC",33,0)),PRCARVW=+$O(^PRCA(430.3,"AC",113,0))
XXX F PRCASTAT=PRCAAC,PRCAOP F PRCABN=0:0 S PRCABN=$O(^PRCA(430,"AS",PRCADB,PRCASTAT,PRCABN)) Q:'PRCABN  D
 .S PRCABAL=$G(^XTMP("PRCA399",$J,1,1,PRCABN,8)),PRCACS=$D(^PRCA(430,"TCSP",PRCABN)) ; set flag for CS bills
AA .I $D(^PRCA(430,PRCABN,6)) S PRCALET3=$P(^(6),U,3) S ^TMP("PRCAGU",$J,PRCADB,PRCABN)="" S:'$D(^XTMP("PRCA399",$J,2,1,PRCADB,0,PRCABN)) ^XTMP("PRCA399",$J,2,1,PRCADB,0,PRCABN)="0^0" ;I LET3="" S ^TMP("PRCAGU",$J,PRCADB,PRCABN)=""
 .I $P(^PRCA(430,PRCABN,0),U,2)=PRCAPRE S PRCAPB=PRCAPB-PRCABAL W:PRCAW !,PRCABN,"  PREPAY: ",PRCABAL,"  ",PRCAPB Q
 .I $D(^XTMP("PRCA399",$J,1,1,PRCABN,8)) W:PRCAW !,PRCABN,"     BILL BAL: ",PRCABAL S PRCABAL=^XTMP("PRCA399",$J,1,1,PRCABN,8) W:PRCAW !,PRCABN,"     CALC BAL: ",PRCABAL R:PRCAW PRCAX:10
BB .S PRCATBAL=0 F PRCAI=1:1:5 S PRCATBAL=PRCATBAL+$P(PRCABAL,U,PRCAI)
 .Q:PRCATBAL=0
 .S PRCAPB=PRCAPB+$P(PRCABAL,U,1),PRCAINT=PRCAINT+$P(PRCABAL,U,2),PRCAADM=PRCAADM+$P(PRCABAL,U,3),PRCAMF=PRCAMF+$P(PRCABAL,U,4),PRCACT=PRCACT+$P(PRCABAL,U,5)
 .; for CS bills, update the CS bill balance
DD .I PRCACS S PRCACSBB=$G(PRCACSBB)+$P(PRCABAL,U,1)+$P(PRCABAL,U,2)+$P(PRCABAL,U,3)+$P(PRCABAL,U,4)+$P(PRCABAL,U,5)
 I $D(^XTMP("PRCA399",$J,2,1,PRCADB,0)) D      ;temp to account for new calc prepay
 .S PRCAPNEG=0 F PRCAI=1,2 S PRCAPNEG=PRCAPNEG+$P(^XTMP("PRCA399",$J,2,1,PRCADB,0),U,PRCAI)
 .Q:+PRCAPNEG=0
 .W:PRCAW !,"BILL PRE/NEG BBAL: ",PRCAPNEG R:PRCAW PRCAXXX:10 S PRCAPB=PRCAPB-PRCAPNEG
 S PRCABAL=PRCAPB+PRCAINT+PRCAADM+PRCAMF+PRCACT W:PRCAW !,"BBAL: ",PRCABAL_"="_PRCAPB_"+"_PRCAINT_"+"_PRCAADM_"+"_PRCAMF_"+"_PRCACT R:PRCAW PRCAXXX:10
 F PRCAX="PRCAPB","PRCAINT","PRCAADM","PRCAMF","PRCACT" S PRCABAL(PRCAX)=@PRCAX
BBALQ I 'PRCACFLG K PRCACSBB
 K PRCAADM,PRCAAC,PRCACT,PRCAI,PRCAINT,PRCAMF,PRCAOP,PRCAPB,PRCAPRE,PRCASTAT,PRCACS,PRCACFLG
 K PRCADBT,PRCAI,PRCAHDEB,PRCAHYY,PRCALET3,PRCAPDAT,PRCAPNEG,PRCASTS,PRCATTY
 K PRCZABDT,PRCAHHY,PRCAPPTX,PRCAPPYB
 Q PRCABAL
PBAL(PRCADB,PRCARCDT,PRCAPBAL,PRCASTMT) ;get previous balance and date of last transaction
 W:PRCAW !,"PBAL"
 S PRCAEVN=0,PRCAI=0,PRCAY=0 G:'PRCADB PBALQ
 S:'PRCARCDT PRCARCDT=+$O(^RC(341,"AD",PRCADB,+$O(^RC(341.1,"AC",2,0)),0))
 S PRCAEVN=$O(^RC(341,"AD",PRCADB,+$O(^RC(341.1,"AC",2,0)),PRCARCDT,0))
 I '$G(PRCAEVN) S:$G(PRCASTMT) PRCADAT=PRCAPDAT G PBALQ       ;PRCA*4.5*348
 S PRCAY=$G(^RC(341,PRCAEVN,1)) F PRCAI=1:1:5 S PRCAPBAL=PRCAPBAL+$P(PRCAY,U,PRCAI)
 W:PRCAW !,"EVENT BAL: ",PRCAPBAL,?22,9999999.999999-PRCADAT,"    ",PRCAY R:PRCAW PRCAXXX:10
 S PRCAPBAL=0 K PRCAEVN,PRCAI,PRCAY
PBALQ Q
LST(PRCADB,TYPE,PRCASTMT) ;Get last type of event for DBtor   PRCA*4.5*348
 ;PRCASTMT   Set to 1 when called from statement compiler for no event 2 condition handling
 NEW PRCAY,PRCABIL,PRCATX,PRCADT,PRCATX0,PRCABDT,PRCABLDT     ;PRCA*4.5*348
OLD D NOW^%DTC
 S PRCAY=-1 G:'$G(PRCADB)!'$G(TYPE) Q4
 S:PRCADBT?1N.N1";"1A.A1"(" PRCADBT=$O(^RCD(340,"B",PRCADBT,0))
 S TYPE=+$O(^RC(341.1,"AC",TYPE,0)),PRCAY=0
A11 S PRCAY=+$O(^RC(341,"AD",PRCADB,TYPE,PRCAY)) G Q4:'PRCAY I $D(^XTMP("PRCA399",$J,2,1,PRCADB))&(+PRCAY<(6789471.999999)) G A11    ;I 'PRCAY,'$G(PRCASTMT) S PRCAY=-1 G Q4
 I 'PRCAY,$G(PRCASTMT) D  G Q4
 . S PRCABIL=0,PRCABLDT=0 F  S PRCABIL=$O(^PRCA(430,"C",PRCADB,PRCABIL)) Q:'PRCABIL  D
 . . I ":16:42:"[(":"_$P($G(^PRCA(430,PRCABIL,0)),"^",8)_":") D
 . . . S PRCABDT=$P($G(^PRCA(430,PRCABIL,6)),"^",21)
 . . . I 'PRCABLDT S PRCABLDT=PRCABIL_U_PRCABDT Q
 . . . I PRCABDT<$P(PRCABLDT,U,2) S PRCABLDT=PRCABIL_U_PRCABDT
 . S PRCAY=$S(PRCABLDT:$P(PRCABLDT,U,2),1:%) S PRCAY=PRCAY-.000001
 . F PRCADT=PRCAY:0 S PRCADT=$O(^PRCA(433,"ATD",PRCADB,PRCADT)) Q:'PRCADT  F PRCATX=0:0 S PRCATX=$O(^PRCA(433,"ATD",PRCADB,PRCADT,PRCATX)) Q:'PRCATX  D
 . . S PRCATX0=$G(^PRCA(433,PRCATX,0)) Q:'PRCATX0
 . . S PRCZABDT=$P($G(^PRCA(430,$P(PRCATX0,U,2),6)),U,21)
 . . I PRCABDT,PRCABDT<PRCAY S PRCAY=PRCABDT-.000001,PRCADT=PRCAY,PRCATX="Z"
 . S PRCAY=PRCAY_"^0",PRCAPBAL=0
 S PRCAY=9999999.999999-PRCAY_"^"_$O(^RC(341,"AD",PRCADB,TYPE,PRCAY,0))
Q4 S (PRCAHHY,PRCADAT)=PRCAY Q PRCAY