1 | RCRJRCO2 ;WISC/RFJ-start of the ar2 data collector ;3/7/00 12:17 PM
|
---|
2 | ;;4.5;Accounts Receivable;**96,152,156,174,191**;Mar 20, 1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | ;
|
---|
7 | DQ ; start queued task from taskmanager here
|
---|
8 | D START(PRCASITE,DATEBEG,DATEEND)
|
---|
9 | Q
|
---|
10 | ;
|
---|
11 | ;
|
---|
12 | START(PRCASITE,DATEBEG,DATEEND) ; start ar2 collector
|
---|
13 | N %,BATCNAME,STRTTIME,TOTAL,X,Y
|
---|
14 | ;
|
---|
15 | ; set start time
|
---|
16 | D NOW^%DTC S STRTTIME=%
|
---|
17 | ;
|
---|
18 | D STATEMNT,PAYDEP,IRS
|
---|
19 | ;
|
---|
20 | ; ---------- send to ndb ----------
|
---|
21 | K ^TMP($J,"RCRJRCORMM")
|
---|
22 | ; build the first two control lines in mail message
|
---|
23 | S Y=DATEBEG D DD^%DT
|
---|
24 | S BATCNAME="AR2-"_$E(Y,1,3)_$E(DATEBEG,6,7)_$TR($P(Y,",",2)," ")
|
---|
25 | S Y=DATEEND D DD^%DT
|
---|
26 | S BATCNAME=BATCNAME_"-"_$E(Y,1,3)_$E(DATEEND,6,7)_$TR($P(Y,",",2)," ")
|
---|
27 | S ^TMP($J,"RCRJRCORMM",1)="T$ "_PRCASITE_"$"_BATCNAME_"$$$$$*"
|
---|
28 | ; get end time (in %)
|
---|
29 | D NOW^%DTC
|
---|
30 | S ^TMP($J,"RCRJRCORMM",2)="S$ "_STRTTIME_"^"_%_"$0$5"
|
---|
31 | S ^TMP($J,"RCRJRCORMM",3)="D$ :1/1/"_TOTAL(1)_":2/2/"_TOTAL(2)_":3/3/"_TOTAL(3)_":4/4/"_TOTAL(4)_":5/5/"_TOTAL(5)
|
---|
32 | ;
|
---|
33 | S XMY("S.PRQN DATA COLLECTION MONITOR@FO-ALBANY.MED.VA.GOV")=""
|
---|
34 | S %=$$SENDMSG^RCRJRCOR("AR2 "_$E(DATEEND,4,5)_"/"_$E(DATEEND,2,3)_" NDB DATA FOR SITE "_PRCASITE,.XMY)
|
---|
35 | K ^TMP($J,"RCRJRCORMM")
|
---|
36 | Q
|
---|
37 | ;
|
---|
38 | ;
|
---|
39 | STATEMNT ; count statements
|
---|
40 | N ADMIN,COUNT,DA,DATA,DATE,DATESTRT,DATESTOP,DEBTOR,INTEREST,PRINBAL
|
---|
41 | S DATESTRT=9999999-DATEEND,DATESTOP=9999999.999999-DATEBEG
|
---|
42 | ;
|
---|
43 | S (COUNT,PRINBAL,INTEREST,ADMIN)=0
|
---|
44 | S DEBTOR=0 F S DEBTOR=$O(^RC(341,"AD",DEBTOR)) Q:'DEBTOR D
|
---|
45 | . S DATE=DATESTRT F S DATE=$O(^RC(341,"AD",DEBTOR,2,DATE)) Q:'DATE!(DATE>DATESTOP) D
|
---|
46 | . . S DA=0 F S DA=$O(^RC(341,"AD",DEBTOR,2,DATE,DA)) Q:'DA D
|
---|
47 | . . . S DATA=$G(^RC(341,DA,1))
|
---|
48 | . . . S COUNT=COUNT+1,PRINBAL=PRINBAL+$P(DATA,"^"),INTEREST=INTEREST+$P(DATA,"^",2),ADMIN=ADMIN+$P(DATA,"^",3)
|
---|
49 | ;
|
---|
50 | ; 1 is data collector index for statements
|
---|
51 | S TOTAL(1)=COUNT_"^"_PRINBAL_"^"_INTEREST_"^"_ADMIN
|
---|
52 | Q
|
---|
53 | ;
|
---|
54 | ;
|
---|
55 | PAYDEP ; process payments and deposits
|
---|
56 | N COUNT,DA,DATA0,DATECONF,DEPAMT,DEPCNT,DEPTICDA,TDATA0,TDATA1,TOTALAMT,TOTALDEP,TRANDA,TYPE
|
---|
57 | S (COUNT,TOTALAMT,DEPCNT,TOTALDEP)=0
|
---|
58 | S DA=0 F S DA=$O(^RCY(344,DA)) Q:'DA S DATA0=$G(^(DA,0)) I $P(DATA0,"^",8) D
|
---|
59 | . S TYPE=$P($G(^RC(341.1,+$P(DATA0,"^",4),0)),"^")
|
---|
60 | . I TYPE'["PAYMENT" Q
|
---|
61 | . ;
|
---|
62 | . ; count payment transactions and amount
|
---|
63 | . S DEPAMT=0
|
---|
64 | . S TRANDA=0 F S TRANDA=$O(^RCY(344,DA,1,TRANDA)) Q:'TRANDA D
|
---|
65 | . . S TDATA0=$G(^RCY(344,DA,1,TRANDA,0)),TDATA1=$G(^(1))
|
---|
66 | . . I $P(TDATA1,"^",2)'="" Q
|
---|
67 | . . S DEPAMT=DEPAMT+$P(TDATA0,"^",4)
|
---|
68 | . . I $P(TDATA0,"^",6)<DATEBEG!($P(TDATA0,"^",6)>DATEEND) Q
|
---|
69 | . . I $P(TDATA0,"^",4) S COUNT=COUNT+1,TOTALAMT=TOTALAMT+$P(TDATA0,"^",4)
|
---|
70 | . ;
|
---|
71 | . ; count total deposits and amount
|
---|
72 | . I 'DEPAMT Q
|
---|
73 | . S DEPTICDA=$P(DATA0,"^",6) I 'DEPTICDA Q
|
---|
74 | . S DATECONF=$P($P($G(^RCY(344.1,DEPTICDA,0)),U,11),".")
|
---|
75 | . I DATECONF<DATEBEG!(DATECONF>DATEEND) Q
|
---|
76 | . S TOTALDEP=TOTALDEP+DEPAMT
|
---|
77 | . I '$D(DEPCNT(DATECONF)) S DEPCNT(DATECONF)="",DEPCNT=DEPCNT+1
|
---|
78 | ;
|
---|
79 | ; 2 is data collector index for deposits
|
---|
80 | ; 3 is data collector index for payment transactions
|
---|
81 | S TOTAL(2)=DEPCNT_"^"_TOTALDEP
|
---|
82 | S TOTAL(3)=COUNT_"^"_TOTALAMT
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | ;
|
---|
86 | IRS ; count of irs letters and amounts
|
---|
87 | ; count of 1st party accounts and bills under $25 with total amt.
|
---|
88 | N AMOUNT,BILLDA,COUNT,COUNTED,DATA6,DEBTOR
|
---|
89 | N L25BCNT,L25ACNT,L25AMT,L25FLG,DEBAMT,DEBCNT,DATA7,P181DT
|
---|
90 | N BAMT,DATA0,I
|
---|
91 | S P181DT=$$FMADD^XLFDT(DATEEND,-181)
|
---|
92 | S (AMOUNT,COUNT,L25BCNT,L25ACNT,L25AMT)=0
|
---|
93 | S DEBTOR=0 F S DEBTOR=$O(^PRCA(430,"C",DEBTOR)) Q:'DEBTOR D
|
---|
94 | . S (COUNTED,DEBAMT,DEBCNT,L25FLG)=0
|
---|
95 | . S BILLDA=0 F S BILLDA=$O(^PRCA(430,"C",DEBTOR,BILLDA)) Q:'BILLDA D
|
---|
96 | . . S DATA6=$G(^PRCA(430,BILLDA,6))
|
---|
97 | . . ; if the first party account is still less than $25, get the
|
---|
98 | . . ; next active bill and add those dollars
|
---|
99 | . . D:'L25FLG
|
---|
100 | . . . ; not a 1st party account
|
---|
101 | . . . I $P($G(^RCD(340,DEBTOR,0)),U)'[";DPT(" S L25FLG=1 Q
|
---|
102 | . . . ; bill not activated for more than 180 days
|
---|
103 | . . . Q:$P(DATA6,U,21)>P181DT
|
---|
104 | . . . S DATA0=$G(^PRCA(430,BILLDA,0))
|
---|
105 | . . . ; bill not active or in suspended status
|
---|
106 | . . . ; not necessary to check for open status because of age of
|
---|
107 | . . . ; bill (should not be open for more than 30 days)
|
---|
108 | . . . I $P(DATA0,"^",8)'=16,$P(DATA0,"^",8)'=40 Q
|
---|
109 | . . . S DATA7=$G(^PRCA(430,BILLDA,7))
|
---|
110 | . . . S BAMT=0 F I=1:1:5 S BAMT=BAMT+$P(DATA7,U,I)
|
---|
111 | . . . ; no outstanding balance on the bill
|
---|
112 | . . . Q:'BAMT
|
---|
113 | . . . S DEBAMT=DEBAMT+BAMT
|
---|
114 | . . . ; accounts is greater than $25, do not count it
|
---|
115 | . . . I DEBAMT'<25 S L25FLG=1 Q
|
---|
116 | . . . S DEBCNT=DEBCNT+1
|
---|
117 | . . . Q
|
---|
118 | . . I $P(DATA6,"^",14)<DATEBEG!($P(DATA6,"^",14)>DATEEND) Q
|
---|
119 | . . I 'COUNTED S COUNT=COUNT+1,COUNTED=1
|
---|
120 | . . S AMOUNT=AMOUNT+$P(DATA6,"^",19)
|
---|
121 | . . Q
|
---|
122 | . ;increment account less than 25 totals
|
---|
123 | . I 'L25FLG,DEBAMT S L25ACNT=L25ACNT+1,L25AMT=L25AMT+DEBAMT,L25BCNT=L25BCNT+DEBCNT
|
---|
124 | . Q
|
---|
125 | ;
|
---|
126 | ; 4 is data collector index for irs letters and amounts
|
---|
127 | S TOTAL(4)=COUNT_"^"_AMOUNT
|
---|
128 | ;
|
---|
129 | ; 5 is data collector index for accounts less than $25, total
|
---|
130 | ; amount of accounts under $25, # of bills covered by those accounts
|
---|
131 | S TOTAL(5)=L25ACNT_"^"_L25AMT_"^"_L25BCNT
|
---|
132 | Q
|
---|