1 | RCRJRCOB ;WISC/RFJ-calculate a bills balance ;1 Mar 97
|
---|
2 | ;;4.5;Accounts Receivable;**68,96,103,153,156**;Mar 20, 1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | ;
|
---|
7 | BILLBAL(BILLDA,DATEEND) ; find bills balance on dateend
|
---|
8 | ; returns principal ^ interest ^ admin ^ mf ^ cc
|
---|
9 | N ACTDATE,ADMIN,CC,DATA1,DATA7,INTEREST,LASTTRAN,MF,PRINBAL,TRANDA,TYPE,VALUE
|
---|
10 | ;
|
---|
11 | ; bill activated after dateend
|
---|
12 | S ACTDATE=$P($P($G(^PRCA(430,BILLDA,6)),"^",21),".")
|
---|
13 | I 'ACTDATE!(ACTDATE>DATEEND) Q "^^^^"
|
---|
14 | ;
|
---|
15 | ; this lock cannot fail and must be executed to prevent bill
|
---|
16 | ; activity during the calculation of the bills balance
|
---|
17 | L +^PRCA(430,BILLDA)
|
---|
18 | ;
|
---|
19 | ; try and find last 433 transaction
|
---|
20 | S LASTTRAN=999999999999 F S LASTTRAN=$O(^PRCA(433,"C",BILLDA,LASTTRAN),-1) Q:'LASTTRAN S DATA1=$G(^PRCA(433,LASTTRAN,1)) I $P($P(DATA1,"^",9),".")'>DATEEND,$P(DATA1,"^",2)'=45 Q
|
---|
21 | ;
|
---|
22 | ; there are no transactions in file 433
|
---|
23 | I 'LASTTRAN D G UNLOCK
|
---|
24 | . S PRINBAL=+$P($G(^PRCA(430,BILLDA,0)),"^",3)
|
---|
25 | . S (INTEREST,ADMIN,MF,CC)=0
|
---|
26 | ;
|
---|
27 | ; the last transaction may not be in date order
|
---|
28 | S TRANDA=LASTTRAN F S TRANDA=$O(^PRCA(433,"C",BILLDA,TRANDA)) Q:'TRANDA I $P($P($G(^PRCA(433,TRANDA,1)),"^",9),".")'>DATEEND S LASTTRAN=TRANDA
|
---|
29 | ;
|
---|
30 | ; the last transaction was during time period, use bill balance
|
---|
31 | I '$O(^PRCA(433,"C",BILLDA,LASTTRAN)) D G UNLOCK
|
---|
32 | . S DATA7=$G(^PRCA(430,BILLDA,7))
|
---|
33 | . S PRINBAL=+$P(DATA7,"^")
|
---|
34 | . S INTEREST=+$P(DATA7,"^",2)
|
---|
35 | . S ADMIN=$P(DATA7,"^",3)
|
---|
36 | . S MF=$P(DATA7,"^",4)
|
---|
37 | . S CC=$P(DATA7,"^",5)
|
---|
38 | ;
|
---|
39 | ; calculate balance
|
---|
40 | S DATA7=$G(^PRCA(430,BILLDA,7))
|
---|
41 | S PRINBAL=+$P(DATA7,"^")
|
---|
42 | S INTEREST=+$P(DATA7,"^",2)
|
---|
43 | S ADMIN=$P(DATA7,"^",3)
|
---|
44 | S MF=$P(DATA7,"^",4)
|
---|
45 | S CC=$P(DATA7,"^",5)
|
---|
46 | ;
|
---|
47 | ; if the bill's status is write-off, balance and int = 0
|
---|
48 | I $P($G(^PRCA(430,BILLDA,0)),"^",8)=23 S (PRINBAL,INTEREST,ADMIN,MF,CC)=0
|
---|
49 | ;
|
---|
50 | S TRANDA=LASTTRAN
|
---|
51 | F S TRANDA=$O(^PRCA(433,"C",BILLDA,TRANDA)) Q:'TRANDA I $P($G(^PRCA(433,TRANDA,0)),"^",4)=2 D
|
---|
52 | . S VALUE=$$TRANBAL^RCRJRCOT(TRANDA) I VALUE="" Q
|
---|
53 | . ;
|
---|
54 | . S TYPE=$P($G(^PRCA(433,TRANDA,1)),"^",2)
|
---|
55 | . I TYPE=1!(TYPE=12)!(TYPE=13)!(TYPE=43) D Q
|
---|
56 | . . S PRINBAL=PRINBAL-$P(VALUE,"^")
|
---|
57 | . . S INTEREST=INTEREST-$P(VALUE,"^",2)
|
---|
58 | . . S ADMIN=ADMIN-$P(VALUE,"^",3)
|
---|
59 | . . S MF=MF-$P(VALUE,"^",4)
|
---|
60 | . . S CC=CC-$P(VALUE,"^",5)
|
---|
61 | . I TYPE=2!(TYPE=8)!(TYPE=9)!(TYPE=10)!(TYPE=11)!(TYPE=14)!(TYPE=29)!(TYPE=34)!(TYPE=35)!(TYPE=41) D Q
|
---|
62 | . . S PRINBAL=PRINBAL+$P(VALUE,"^")
|
---|
63 | . . S INTEREST=INTEREST+$P(VALUE,"^",2)
|
---|
64 | . . S ADMIN=ADMIN+$P(VALUE,"^",3)
|
---|
65 | . . S MF=MF+$P(VALUE,"^",4)
|
---|
66 | . . S CC=CC+$P(VALUE,"^",5)
|
---|
67 | ;
|
---|
68 | ; do not allow balances to be negative
|
---|
69 | I PRINBAL<0 S PRINBAL=0
|
---|
70 | ; for transaction type 2,9,14, admin could not be broken out separate
|
---|
71 | ; if its negative, add it to interest
|
---|
72 | I ADMIN<0 S INTEREST=INTEREST+ADMIN,ADMIN=0
|
---|
73 | I INTEREST<0 S ADMIN=ADMIN+INTEREST,INTEREST=0
|
---|
74 | ;
|
---|
75 | UNLOCK ; come here to unlock global and return results
|
---|
76 | L -^PRCA(430,BILLDA)
|
---|
77 | ;
|
---|
78 | Q PRINBAL_"^"_INTEREST_"^"_ADMIN_"^"_MF_"^"_CC
|
---|
79 | ;
|
---|
80 | ;
|
---|
81 | CURRENT(BILLDA,DATEEND,AYEAROLD) ; finds a bills balance and age
|
---|
82 | N DA,DATA4,COUNTCUR,CURRAMT,FUTURAMT,INTEREST,NONCURR,PRINBAL,RCVALUE,TOTREPAY
|
---|
83 | ;
|
---|
84 | ; find a bills balance
|
---|
85 | S RCVALUE=$$BILLBAL(BILLDA,DATEEND)
|
---|
86 | ;
|
---|
87 | ; count as a current receivable
|
---|
88 | D CURRENT^RCRJRCOC(BILLDA,RCVALUE)
|
---|
89 | ;
|
---|
90 | S PRINBAL=$P(RCVALUE,"^"),INTEREST=$P(RCVALUE,"^",2)+$P(RCVALUE,"^",3)+$P(RCVALUE,"^",4)+$P(RCVALUE,"^",5)
|
---|
91 | ; if no repay plan date or its greater than date range or no amt due
|
---|
92 | S DATA4=$G(^PRCA(430,BILLDA,4))
|
---|
93 | I '$P(DATA4,"^")!($P($P(DATA4,"^"),".")>DATEEND)!('$P(DATA4,"^",3)) D SETTOTAL^RCRJRCO1(2,PRINBAL,INTEREST),AGE Q
|
---|
94 | ;
|
---|
95 | ; total number of repayment due dates
|
---|
96 | S TOTREPAY=$P($G(^PRCA(430,BILLDA,5,0)),"^",3)
|
---|
97 | I 'TOTREPAY D SETTOTAL^RCRJRCO1(2,PRINBAL,INTEREST),AGE Q
|
---|
98 | ;
|
---|
99 | ; count the number of current repayments (less than yr old)
|
---|
100 | S DA=0 F COUNTCUR=0:1 S DA=$O(^PRCA(430,BILLDA,5,DA)) Q:'DA!($P($G(^(DA,0)),"^")>AYEAROLD)
|
---|
101 | ;
|
---|
102 | ; how many repayments are non-current
|
---|
103 | S NONCURR=TOTREPAY-COUNTCUR
|
---|
104 | ; all are current
|
---|
105 | I 'NONCURR D SETTOTAL^RCRJRCO1(2,PRINBAL,INTEREST),AGE Q
|
---|
106 | ;
|
---|
107 | ; future amount = noncurrent bills * repayment amount due
|
---|
108 | S FUTURAMT=NONCURR*$P(DATA4,"^",3),CURRAMT=PRINBAL-FUTURAMT
|
---|
109 | ; no current amt (all future)
|
---|
110 | I 'CURRAMT D SETTOTAL^RCRJRCO1(12,FUTURAMT,INTEREST),AGE Q
|
---|
111 | ;
|
---|
112 | D SETTOTAL^RCRJRCO1(2,CURRAMT,INTEREST)
|
---|
113 | D SETTOTAL^RCRJRCO1(12,FUTURAMT,0)
|
---|
114 | D AGE
|
---|
115 | Q
|
---|
116 | ;
|
---|
117 | ;
|
---|
118 | AGE ; finds the age of delinquents
|
---|
119 | ; the date the 2nd letter was sent
|
---|
120 | N DAYSDIFF,LETRDATE
|
---|
121 | S LETRDATE=$P($P($G(^PRCA(430,BILLDA,6)),"^",2),".")
|
---|
122 | I 'LETRDATE!(LETRDATE>DATEEND) Q
|
---|
123 | ;
|
---|
124 | S DAYSDIFF=$$FMDIFF^XLFDT(DATEEND,LETRDATE,1)
|
---|
125 | ; pass criteria 2 based on days difference
|
---|
126 | D SETTOTAL^RCRJRCO1($S(DAYSDIFF<31:3,DAYSDIFF<61:4,DAYSDIFF<91:5,DAYSDIFF<121:6,DAYSDIFF<181:7,DAYSDIFF<366:8,DAYSDIFF<731:9,DAYSDIFF<1096:10,1:11),PRINBAL,INTEREST)
|
---|
127 | Q
|
---|