1 | RCDPUREC ;WISC/RFJ-receipt utilities ;1 Jun 99
|
---|
2 | ;;4.5;Accounts Receivable;**114,148,169,173,208,222**;Mar 20, 1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | ;
|
---|
7 | ADDRECT(TRANDATE,RCDEPTDA,PAYTYPDA) ; add a receipt
|
---|
8 | ;
|
---|
9 | ; if deposit or payment type is missing, do not add the receipt
|
---|
10 | I 'RCDEPTDA!('PAYTYPDA) Q 0
|
---|
11 | ;
|
---|
12 | N DA,DATA,RCDPFLAG,RECEIPT,TYPE
|
---|
13 | ; if a receipt has already been added for this transmission date
|
---|
14 | ; and deposit number, do not add a new one
|
---|
15 | S DA=0 F S DA=$O(^RCY(344,"AD",+RCDEPTDA,DA)) Q:'DA S DATA=$G(^RCY(344,DA,0)) I $P($P(DATA,"^",3),".")=TRANDATE,$P(DATA,"^",4)=PAYTYPDA S RCDPFLAG=1 Q
|
---|
16 | I $G(RCDPFLAG) Q DA
|
---|
17 | ;
|
---|
18 | Q $$BLDRCPT(TRANDATE,RCDEPTDA,PAYTYPDA)
|
---|
19 | ;
|
---|
20 | BLDRCPT(TRANDATE,RCDEPTDA,PAYTYPDA) ; Build a receipt with/without deposit
|
---|
21 | ;
|
---|
22 | N TYPE,RECEIPT
|
---|
23 | ; build unique receipt number for date
|
---|
24 | S TYPE=$E($G(^RC(341.1,PAYTYPDA,0))) I TYPE="" S TYPE="Z"
|
---|
25 | I TYPE="C",$G(RCDEPTDA)["ERACHK" S RCDEPTDA=+RCDEPTDA,TYPE="E" ; ERA plus paper check EDI Lockbox receipt
|
---|
26 | ; lockbox receipt in the form of L980901A0, do not include century
|
---|
27 | F D Q:RECEIPT'=""
|
---|
28 | . S RECEIPT=$$NEXT(TYPE_$E(TRANDATE,2,7)) ;get last two digits from 00 to ZZ
|
---|
29 | . L +^RCY(344,"B",RECEIPT):2 I '$T S RECEIPT=""
|
---|
30 | ;
|
---|
31 | ; add it
|
---|
32 | N %,%DT,D0,DA,DD,DI,DIC,DIE,DLAYGO,DO,DQ,DR,X,Y
|
---|
33 | S DIC="^RCY(344,",DIC(0)="L",DLAYGO=344
|
---|
34 | ; .02 = opened by .03 = date opened = transmission dt
|
---|
35 | ; .04 = type of payment .06 = deposit ticket
|
---|
36 | ; .14 = status (set to 1:open)
|
---|
37 | S DIC("DR")=".02////"_DUZ_";.03///"_TRANDATE_";.04////"_PAYTYPDA_$S(RCDEPTDA:";.06////"_RCDEPTDA,1:"")_";.14////1;"
|
---|
38 | S X=RECEIPT
|
---|
39 | D FILE^DICN
|
---|
40 | L -^RCY(344,"B",RECEIPT)
|
---|
41 | I Y>0 Q +Y
|
---|
42 | Q 0
|
---|
43 | ;
|
---|
44 | ;
|
---|
45 | NEXT(RECEIPT) ; get next 2 digits in sequence 00 to ZZ for receipt
|
---|
46 | ;
|
---|
47 | ; start with 00
|
---|
48 | I '$D(^RCY(344,"B",RECEIPT_"00")) Q RECEIPT_"00"
|
---|
49 | ;
|
---|
50 | N DIGIT1,DIGIT2,LAST
|
---|
51 | ; get the last one used and increment by 1
|
---|
52 | S LAST=$O(^RCY(344,"B",RECEIPT_"ZZ"),-1) ;example L2980901ZZ
|
---|
53 | S DIGIT1=$A($E(LAST,8)),DIGIT2=$A($E(LAST,9))
|
---|
54 | ; increment the ascii value of last digit
|
---|
55 | S DIGIT2=DIGIT2+1
|
---|
56 | ; ascii 48=0, 57=9, 65=A, 90=Z
|
---|
57 | I DIGIT2>57,DIGIT2<65 S DIGIT2=65 ;an A
|
---|
58 | ; digit2 above a Z, set digit2 to a 0 and increment digit 1
|
---|
59 | I DIGIT2>90 S DIGIT2=48,DIGIT1=DIGIT1+1
|
---|
60 | I DIGIT1>57,DIGIT1<65 S DIGIT1=65 ;an A
|
---|
61 | ; digit 1 is above a Z, reset and reuse the Z
|
---|
62 | I DIGIT1>90 S DIGIT1=90,DIGIT2=90
|
---|
63 | ;
|
---|
64 | Q RECEIPT_$C(DIGIT1)_$C(DIGIT2)
|
---|
65 | ;
|
---|
66 | ;
|
---|
67 | SELRECT(ADDNEW,RCDEPTDA) ; select a receipt
|
---|
68 | ; if $g(addnew) allow adding a new receipt
|
---|
69 | ; if $g(rcdeptda) allow selection of receipts for the deposit only
|
---|
70 | ; if $g(addnew) and $g(rcdeptda) deposit number auto set for new receipt
|
---|
71 | ; returns -1 for timeout or ^, 0 for no selection, or ien of receipt
|
---|
72 | N %,%Y,C,D0,DA,DI,DIC,DIE,DIK,DG,DLAYGO,DQ,DR,DTOUT,DUOUT,RCREFLUP,X,Y,RCDE,RCLB,RC1,RC2,RCREQ,RCY
|
---|
73 | S DIC="^RCY(344,",DIC(0)="QEAM",DIC("A")="Select RECEIPT: "
|
---|
74 | S DIC("W")="D DICW^RCDPUREC"
|
---|
75 | ; set screen to select receipts linked to deposit and to screen out
|
---|
76 | ; selection of EDI Lockbox-type receipts unless an EFT is associated
|
---|
77 | ; with the deposit and the receipt is not associated with an ERA
|
---|
78 | S RCDE=+$O(^RCY(344.3,"ARDEP",+$G(RCDEPTDA),0))
|
---|
79 | I $G(RCDEPTDA) D
|
---|
80 | . S DIC("S")="N Z S Z=$G(^(0)) I $S('$$EDILBEV^RCDPEU($P(Z,U,4)):'RCDE,1:RCDE&'$P(Z,U,18)),($P(Z,U,6)=""""!($P(Z,U,6)=RCDEPTDA))"
|
---|
81 | . S DIC("A")="Select RECEIPT (for deposit "_$P(^RCY(344.1,RCDEPTDA,0),"^")_"): "
|
---|
82 | ; use special lookup on input
|
---|
83 | I '$G(RCDEPTDA) S RCREFLUP=1
|
---|
84 | ; add new entries
|
---|
85 | S RC1="TYPE NOT VALID FOR THIS RECEIPT",RC2=">>AN EFT REFERENCE IS REQUIRED"
|
---|
86 | I $G(ADDNEW) D
|
---|
87 | . S DIC("A")="Select RECEIPT (or add a new one): "
|
---|
88 | . S DIC(0)="QEALM",DLAYGO=344
|
---|
89 | . S DIC("DR")="S RCREQ=0;.02////"_DUZ_";.03///NOW;.14////1;@4;.04"_$S(RCDE:"////"_$$LBEVENT^RCDPEU(),1:"")
|
---|
90 | . S DIC("DR")=DIC("DR")_";S RCLB=$$EDILBEV^RCDPEU(+X) S:'RCLB Y=""@6"";I $G(RCDEPTDA) S Y=$S('RCDE:""@8"",1:""@6"");W !,RC2 S RCREQ=1;.17;S Y=""@99"""
|
---|
91 | . S DIC("DR")=DIC("DR")_";@6;.06"_$S($G(RCDEPTDA):"////"_RCDEPTDA,1:"")_";S:'RCDE Y=""@99"";.17////"_+RCDE_";S Y=""@99"";@8;W *7,!,RC1 S Y=""@4"";@99"
|
---|
92 | . S DIC("DR")=DIC("DR")_";"
|
---|
93 | D ^DIC
|
---|
94 | S RCY=Y
|
---|
95 | I RCY<0,'$G(DUOUT),'$G(DTOUT) S RCY=0
|
---|
96 | I $P(RCY,U,3),$G(RCREQ) D
|
---|
97 | . I '$P($G(^RCY(344,+RCY,0)),U,17) D Q
|
---|
98 | .. W !,*7,"NO EFT REFERENCED - RECEIPT NOT ADDED"
|
---|
99 | .. S DA=+RCY,DIK="^RCY(344," D ^DIK
|
---|
100 | .. S RCY=0
|
---|
101 | . S DIE="^RCY(344.31,",DA=$P(^RCY(344,+RCY,0),U,17),DR=".08////2" D ^DIE
|
---|
102 | Q +RCY
|
---|
103 | ;
|
---|
104 | ;
|
---|
105 | DICW ; write identifier code for receipt lookup
|
---|
106 | N DATA
|
---|
107 | S DATA=$G(^RCY(344,Y,0)) I DATA="" Q
|
---|
108 | ; opened by
|
---|
109 | W ?13,"by: ",$E($P($G(^VA(200,+$P(DATA,"^",2),0)),"^"),1,15)
|
---|
110 | ; date opened
|
---|
111 | I '$P(DATA,"^",3) S $P(DATA,"^",3)="???????"
|
---|
112 | W ?35," on: ",$E($P(DATA,"^",3),4,5),"/",$E($P(DATA,"^",3),6,7),"/",$E($P(DATA,"^",3),2,3)
|
---|
113 | ; type of payment
|
---|
114 | W ?50," ",$E($P($G(^RC(341.1,+$P(DATA,"^",4),0)),"^"),1,18)
|
---|
115 | ; status
|
---|
116 | W ?70," ",$S($P(DATA,"^",14):"OPEN",1:"CLOSED")
|
---|
117 | Q
|
---|
118 | ;
|
---|
119 | ;
|
---|
120 | LOOKUP ; special lookup on receipts, called from ^dd(344,.01,7.5)
|
---|
121 | ; if rcreflup flag not set, do not use special lookup
|
---|
122 | I '$D(RCREFLUP) Q
|
---|
123 | ; user entered O.? for lookup on open receipts
|
---|
124 | I X["O."!(X["o.") S DIC("S")="I $P(^(0),U,14)" S X="?" Q
|
---|
125 | ; user entered C.? for lookup on closed receipts
|
---|
126 | I X["C."!(X["c.") S DIC("S")="I '$P(^(0),U,14)" S X="?" Q
|
---|
127 | K DIC("S")
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | ;
|
---|
131 | EDITREC(DA,DR) ; edit the receipt (dr = string of fields to ask)
|
---|
132 | N D,D0,DI,DIC,DIE,DQ,X,Y,RCDR1,RCDR2,RCDR3,DIPA,RCDA
|
---|
133 | S (DIC,DIE)="^RCY(344,",RCDA=DA
|
---|
134 | I $G(DR)="" N DR D
|
---|
135 | . S DR=".01;.04;"_$S($P($G(^RCY(344,RCDA,0)),U,17):"",1:"I $P($G(^RCY(344,DA,0)),U,17) S Y=""@1001"";.06;@1001;")_"D LBT^RCDPUREC(.Y);.18;@99"
|
---|
136 | ;
|
---|
137 | I $G(DR)[".04;" D ; Add a check to DR string for type of payment edit
|
---|
138 | . D EDIT4^RCDPURE1(RCDA,DR,.RCDR1,.RCDR2,.RCDR3)
|
---|
139 | . S DR=$S($E(RCDR1,$L(RCDR1))'=";":RCDR1,1:$E(RCDR1,1,$L(RCDR1)-1)),DR(1,344,1)=RCDR2,DR(1,344,2)=RCDR3
|
---|
140 | ;
|
---|
141 | D ^DIE
|
---|
142 | I $P($G(^RCY(344,RCDA,0)),U,6),$P(^(0),U,17),$$EDILBEV^RCDPEU(+$P(^(0),U,4)) S DIE="^RCY(344,",DR=".06///@" D ^DIE ; Delete deposit if EDI LB event and EFT referenced
|
---|
143 | I $D(^RCY(344,RCDA,0)) D LASTEDIT(RCDA)
|
---|
144 | Q
|
---|
145 | ;
|
---|
146 | LBT(Y) ; Determine if Y should be set to @99 ; DR string too long
|
---|
147 | ; Assume DA,RCM3 is set
|
---|
148 | N Z,Z0
|
---|
149 | S Z0=$G(^RCY(344,DA,0)),Z=($P(Z0,U,4)=$$LBEVENT^RCDPEU())
|
---|
150 | ; Don't allow to edit ERA reference if worklist created it
|
---|
151 | I $P($G(^RCY(344.49,+$P(Z0,U,18),0)),U,2)=DA S Y="@99" Q
|
---|
152 | ; only ask for ERA if not EDI lockbox and deposit # exists
|
---|
153 | I $S(Z:1,1:'$P($G(^RCY(344,DA,0)),U,6)) S Y="@99" Q
|
---|
154 | W !,RCM3
|
---|
155 | Q
|
---|
156 | ;
|
---|
157 | TYP(Y) ; Determine where to jump to in the 'type' edit of the template
|
---|
158 | ; DR string too long
|
---|
159 | ; Assumes RCP,RCNO,RCN4,RCO4,DA defined
|
---|
160 | N RCCHANGE
|
---|
161 | I $S(RCN4=RCO4&(RCN4'=14):1,RCN4'=14&(RCO4'=14):1,1:0) S Y=RCP+2 G TYPQ
|
---|
162 | ; To get here, the type was changed and it either was 14 or is now 14
|
---|
163 | S RCCHANGE=(RCN4'=RCO4)
|
---|
164 | I RCCHANGE D G:Y TYPQ
|
---|
165 | . ; Type can't be changed if the old type was EDI Lockbox and there is
|
---|
166 | . ; an ERA detail record associated with it
|
---|
167 | . I RCO4=14,$P($G(^RCY(344,DA,0)),U,18) S Y=RCP+1 Q
|
---|
168 | . ; Type can't be changed to EDI Lockbox if rcpt detail already exists
|
---|
169 | . I RCN4=14,$O(^RCY(344,DA,1,0)) S Y=RCP+1 Q
|
---|
170 | . ; If type changed to EDI LOCKBOX, must have an EFT reference
|
---|
171 | I RCN4'=14 S Y=RCP+2 G TYPQ
|
---|
172 | TYPQ I '$G(Y) D
|
---|
173 | . ; If ERA is matched to EFT, don't allow to edit EFT
|
---|
174 | . I $P($G(^RCY(344,DA,0)),U,17),$P($G(^(0)),U,18),$D(^RCY(344.31,"AERA",+$P($G(^RCY(344,DA,0)),U,18),+$P($G(^RCY(344,DA,0)),U,17))) S Y=RCP+2 Q
|
---|
175 | . S RCNE=$$ASK17^RCDPUREC(DA) I 'RCNE S RCNO=1,Y=RCP+1
|
---|
176 | I $G(Y) S Y="@"_Y
|
---|
177 | Q
|
---|
178 | ;
|
---|
179 | LASTEDIT(DA) ; set when receipt last edit
|
---|
180 | N %DT,D,D0,DI,DIC,DIE,DQ,DR,X,Y
|
---|
181 | S (DIC,DIE)="^RCY(344,"
|
---|
182 | S DR=".11////"_DUZ_";.12///NOW;"
|
---|
183 | D ^DIE
|
---|
184 | Q
|
---|
185 | ;
|
---|
186 | ;
|
---|
187 | MARKPROC(DA,FMSDOCNO) ; mark receipt as processed, set receipt as closed,
|
---|
188 | ; store fms document number if passed
|
---|
189 | N %DT,D,D0,DI,DIC,DIE,DQ,DR,X,Y
|
---|
190 | S (DIC,DIE)="^RCY(344,"
|
---|
191 | S DR=".07////"_DUZ_";.08///NOW;.14////0;"
|
---|
192 | I $G(FMSDOCNO)'="" S DR=DR_"200////"_FMSDOCNO_";"
|
---|
193 | D ^DIE
|
---|
194 | Q
|
---|
195 | ;
|
---|
196 | ;
|
---|
197 | FMSSTAT(RCRECTDA) ; return the fms cr document ^ status ^ if sent before lockbox
|
---|
198 | N FMSDOCNO,PRELOCK,STATUS
|
---|
199 | ; get the fms document from the receipt
|
---|
200 | S FMSDOCNO=$P($G(^RCY(344,RCRECTDA,2)),"^")
|
---|
201 | ; if not on receipt, it may be earlier than lockbox and on deposit
|
---|
202 | I FMSDOCNO="" S FMSDOCNO=$P($G(^RCY(344.1,+$P($G(^RCY(344,RCRECTDA,0)),"^",6),2)),"^") I FMSDOCNO'="" S PRELOCK=1
|
---|
203 | S STATUS=$$STATUS^GECSSGET(FMSDOCNO)
|
---|
204 | I STATUS=-1 S STATUS="NOT ENTERED"
|
---|
205 | ;
|
---|
206 | ; if the cr document is entered, check to see if entered on line
|
---|
207 | I FMSDOCNO'="",$P($G(^RCY(344,RCRECTDA,2)),"^",2) S STATUS="ON LINE ENTRY"
|
---|
208 | ;
|
---|
209 | ; if the cr document is missing, set status to not sent
|
---|
210 | I FMSDOCNO="" S FMSDOCNO="NOT SENT"
|
---|
211 | ;
|
---|
212 | Q FMSDOCNO_"^"_STATUS_"^"_$G(PRELOCK)
|
---|
213 | ;
|
---|
214 | ASK17(DA) ; Ask,return the EFT detail record for a receipt
|
---|
215 | ; DA = the ien of the RECEIPT (file 344)
|
---|
216 | N DIR,X,Y
|
---|
217 | S DIR(0)="PAO^RCY(344.31,:AEMQ",DIR("?",1)="Select the EFT that contained the deposited money that this receipt details",DIR("?",2)="An EFT detail record can only be associated with one receipt"
|
---|
218 | S DIR("?")="This is required if the type of payment is EDI LOCKBOX"
|
---|
219 | S DIR("A")=" EFT DETAIL RECORD: ",DIR("S")="I $S('$O(^RCY(344,""AEFT"",+Y,0)):1,1:$O(^(0))=DA)"
|
---|
220 | S:$P($G(^RCY(344,DA,0)),U,17) DIR("B")=$P(^(0),U,17)
|
---|
221 | D ^DIR K DIR
|
---|
222 | I $D(DUOUT)!$D(DTOUT)!Y=""!(Y<0) Q 0
|
---|
223 | Q +Y
|
---|
224 | ;
|
---|