| 1 | RCDPURET ;WISC/RFJ-receipt utilities (transactions) ;1 Jun 99 | 
|---|
| 2 | ;;4.5;Accounts Receivable;**114,141,169,173,196,221**;Mar 20, 1995 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | ; | 
|---|
| 7 | SELTRAN(DA) ;  select a transaction for a receipt | 
|---|
| 8 | ;  returns -1 for timeout or ^, 0 for no selection, or ien of trans | 
|---|
| 9 | N %,DIC,DTOUT,DUOUT,RCDATA,X,Y | 
|---|
| 10 | S DIC="^RCY(344,"_DA_",1,",DIC(0)="QEAM",DIC("A")="Select Receipt TRANSACTION #: " | 
|---|
| 11 | S DIC("W")="S RCDATA=@(DIC_Y_"",0)"") W:$P(RCDATA,U,3) ?8,""  "",$P(@(U_$P($P(RCDATA,U,3),"";"",2)_+$P(RCDATA,U,3)_"",0)""),U) W ?40,""  $ "",$J($P(RCDATA,U,4),0,2)" | 
|---|
| 12 | D ^DIC | 
|---|
| 13 | I Y<0,'$G(DTOUT),'$G(DUOUT) S Y=0 | 
|---|
| 14 | Q +Y | 
|---|
| 15 | ; | 
|---|
| 16 | ; | 
|---|
| 17 | ADDTRAN(RECTDA) ;  add transaction for receipt (in da) | 
|---|
| 18 | N %DT,%T,D0,DA,DD,DI,DIC,DIE,DINUM,DLAYGO,DO,DQ,DR,X,Y | 
|---|
| 19 | I '$D(^RCY(344,RECTDA,1,0)) S ^(0)="^344.01A^" | 
|---|
| 20 | ; | 
|---|
| 21 | ;  find next transaction number | 
|---|
| 22 | S X=$O(^RCY(344,RECTDA,1,9999999),-1) | 
|---|
| 23 | F X=X+1:1 Q:'$D(^RCY(344,RECTDA,1,X,0)) | 
|---|
| 24 | S DINUM=X | 
|---|
| 25 | ; | 
|---|
| 26 | S DA(1)=RECTDA | 
|---|
| 27 | S DIC="^RCY(344,"_RECTDA_",1,",DIC(0)="L",DLAYGO=344.01 | 
|---|
| 28 | S DIC("DR")=".12////"_DUZ_";.06///TODAY;" | 
|---|
| 29 | D FILE^DICN | 
|---|
| 30 | Q +Y | 
|---|
| 31 | ; | 
|---|
| 32 | ; | 
|---|
| 33 | EDITTRAN(RECTDA,TRANDA) ;  edit a receipt transaction | 
|---|
| 34 | ;  returns 1 for success, or 0 (error message) | 
|---|
| 35 | I '$D(^RCY(344,RECTDA,1,TRANDA,0)) Q 0 | 
|---|
| 36 | ; | 
|---|
| 37 | N %,%DT,%T,%Y,C,D,D0,D1,DA,DATA,DDH,DI,DIC,DICR,DIE,DIG,DIH,DIPGM,DIU,DIV,DIW,DG,DQ,DR,DZ,RCAMOUNT,RCTYPE,RESULT,X,Y | 
|---|
| 38 | N RCXAMONT,RCXSUSP,RCXADJ,RCERA,RCADJ,RCXERA | 
|---|
| 39 | ; | 
|---|
| 40 | ;  build dr string based on type of payment on receipt | 
|---|
| 41 | S RCTYPE=$P($G(^RC(341.1,+$P(^RCY(344,RECTDA,0),"^",4),0)),"^",2) | 
|---|
| 42 | S RCADJ=0,RCERA=+$O(^RCY(344.4,"AREC",RECTDA,0)) | 
|---|
| 43 | S DR="" | 
|---|
| 44 | I RCERA,$D(^RCY(344.49,+RCERA,0)),$P(^RCY(344,RECTDA,1,TRANDA,0),"^",28) D  ; Worklist has a dec adj associated with it | 
|---|
| 45 | . N Z | 
|---|
| 46 | . S Z=$$EXTERNAL^DILFD(344.01,.09,,$P($G(^RCY(344,RECTDA,1,TRANDA,0)),U,9)) | 
|---|
| 47 | . S RCADJ=1,RCXERA="W !,""NOTE: This payment has an EEOB Worklist dec adj associated with it."",!,""BILL NUMBER: "_Z_" (uneditable)""",DR="X RCXERA;" | 
|---|
| 48 | E  D | 
|---|
| 49 | . ;  patient name or bill number | 
|---|
| 50 | . S DR=".09;" | 
|---|
| 51 | S DR=DR_"S Y=$S('$P(^RCY(344,DA(1),1,DA,0),U,9):""@1"",1:""@2"");" | 
|---|
| 52 | ;  ask comment if no acct (unapplied) | 
|---|
| 53 | S RCXSUSP="W !?5,""NOTE: This payment will be posted to the station's suspense fund.""" | 
|---|
| 54 | S DR=DR_"@1;X RCXSUSP;1.02;S Y=""@3"";" | 
|---|
| 55 | ;  payment amount | 
|---|
| 56 | S RCXAMONT="W !,""  Amount Owed: $"",$J($$PAYDEF^RCDPURET($P(^RCY(344,DA(1),1,DA,0),U,9)),0,2)" | 
|---|
| 57 | S DR=DR_"@2;X RCXAMONT;@3;.04;" | 
|---|
| 58 | ;  date of payment | 
|---|
| 59 | S DR=DR_".06;" | 
|---|
| 60 | ;  type of payment = district counsel (3), check (4), | 
|---|
| 61 | ;                    dept of justice  (5), irs (11), | 
|---|
| 62 | ;                    lockbox (12) | 
|---|
| 63 | I RCTYPE=3!(RCTYPE=4)!(RCTYPE=5)!(RCTYPE=11)!(RCTYPE=12)!(RCTYPE=13) D | 
|---|
| 64 | .   S DR=DR_".07d;"     ; check number | 
|---|
| 65 | .   S DR=DR_".08d;"     ; bank number | 
|---|
| 66 | .   S DR=DR_".1d;"      ; date of check | 
|---|
| 67 | ;  type of payment = credit card (7) | 
|---|
| 68 | I RCTYPE=7 D | 
|---|
| 69 | .   S DR=DR_".11d;"     ; credit card number | 
|---|
| 70 | .   S DR=DR_".02d;"     ; confirmation number | 
|---|
| 71 | ; | 
|---|
| 72 | S (DIC,DIE)="^RCY(344,"_RECTDA_",1," | 
|---|
| 73 | S DA=TRANDA,DA(1)=RECTDA | 
|---|
| 74 | ;  edited by | 
|---|
| 75 | S DR=DR_".14////"_DUZ | 
|---|
| 76 | D ^DIE | 
|---|
| 77 | D LASTEDIT^RCDPUREC(RECTDA) | 
|---|
| 78 | ; | 
|---|
| 79 | ;  check for missing fields | 
|---|
| 80 | S DATA=^RCY(344,RECTDA,1,TRANDA,0) | 
|---|
| 81 | S RESULT=1 | 
|---|
| 82 | I RESULT,'$P(DATA,"^",4) S RESULT="Payment Amount is ZERO." | 
|---|
| 83 | I RESULT,'$P(DATA,"^",6) S RESULT="Date of Payment NOT entered." | 
|---|
| 84 | I RESULT,RCTYPE=13,$$TRACE($P(DATA,"^",3))="" S RESULT="TOP TRACE NUMBER NOT ENTERED" | 
|---|
| 85 | I RESULT,RCTYPE=7,$P(DATA,"^",11)="" W !,"WARNING: Credit Card Number NOT entered." | 
|---|
| 86 | I RESULT,$P(DATA,"^",6)<$P(DATA,"^",10) W !,"WARNING: Date of check is greater than the date of payment." | 
|---|
| 87 | ; | 
|---|
| 88 | ;  if field is missing, delete the transaction | 
|---|
| 89 | I 'RESULT D DELETRAN(RECTDA,TRANDA) | 
|---|
| 90 | ; | 
|---|
| 91 | ;  if transaction okay, print receipt | 
|---|
| 92 | I RESULT D RECEIPT^RCDPRECT(RECTDA,TRANDA) | 
|---|
| 93 | ; | 
|---|
| 94 | Q RESULT | 
|---|
| 95 | ; | 
|---|
| 96 | ; | 
|---|
| 97 | EDITACCT(RECTDA,TRANDA) ;  edit the account on a receipt | 
|---|
| 98 | N C,D,D0,D1,DA,DDH,DI,DIC,DICR,DIE,DIG,DIH,DIPGM,DISYS,DIU,DIV,DIW,DQ,DR,DZ,X | 
|---|
| 99 | S DR=".09;" | 
|---|
| 100 | S (DIC,DIE)="^RCY(344,"_RECTDA_",1," | 
|---|
| 101 | S DA=TRANDA,DA(1)=RECTDA | 
|---|
| 102 | D ^DIE | 
|---|
| 103 | D LASTEDIT^RCDPUREC(RECTDA) | 
|---|
| 104 | Q | 
|---|
| 105 | ; | 
|---|
| 106 | ; | 
|---|
| 107 | DELEACCT(RECTDA,TRANDA) ;  delete the account on a receipt | 
|---|
| 108 | N D,D0,D1,DA,DI,DIC,DICR,DIE,DIG,DIH,DIU,DIV,DIW,DQ,DR,X | 
|---|
| 109 | S DR=".09///@;.03///@;" | 
|---|
| 110 | S (DIC,DIE)="^RCY(344,"_RECTDA_",1," | 
|---|
| 111 | S DA=TRANDA,DA(1)=RECTDA | 
|---|
| 112 | D ^DIE | 
|---|
| 113 | D LASTEDIT^RCDPUREC(RECTDA) | 
|---|
| 114 | Q | 
|---|
| 115 | ; | 
|---|
| 116 | ; | 
|---|
| 117 | EDITFMS(RECTDA,TRANDA,DEFAULT) ;  edit fms document number for clearing suspense | 
|---|
| 118 | N C,D,D0,D1,DA,DDH,DI,DIC,DICR,DIE,DIG,DIH,DIPGM,DISYS,DIU,DIV,DIW,DQ,DR,DZ,X | 
|---|
| 119 | S DR=".26;" | 
|---|
| 120 | I $G(DEFAULT)'="" S DR=".26////"_DEFAULT_";" | 
|---|
| 121 | S (DIC,DIE)="^RCY(344,"_RECTDA_",1," | 
|---|
| 122 | S DA=TRANDA,DA(1)=RECTDA | 
|---|
| 123 | D ^DIE | 
|---|
| 124 | Q | 
|---|
| 125 | ; | 
|---|
| 126 | ; | 
|---|
| 127 | MOVETRAN(RCOLDREC,RCOLDTRA,RCNEWREC) ;  move a transactions data | 
|---|
| 128 | N %DT,%T,D0,D1,DA,DG,DIC,DICR,DIK,DIU,RCNEWTRA,RESULT,X,Y | 
|---|
| 129 | ; | 
|---|
| 130 | ;  add new transaction to 2nd receipt | 
|---|
| 131 | W !,"Adding a NEW payment transaction to receipt "_$P(^RCY(344,RCNEWREC,0),"^")_": " | 
|---|
| 132 | S RCNEWTRA=$$ADDTRAN(RCNEWREC) | 
|---|
| 133 | I 'RCNEWTRA Q "Unable to ADD a new payment transaction." | 
|---|
| 134 | ; | 
|---|
| 135 | W "# ",RCNEWTRA | 
|---|
| 136 | ; | 
|---|
| 137 | ;  move data to selected receipt and re-index entry | 
|---|
| 138 | S ^RCY(344,RCNEWREC,1,RCNEWTRA,0)=RCNEWTRA_"^"_$P(^RCY(344,RCOLDREC,1,RCOLDTRA,0),"^",2,99) | 
|---|
| 139 | S DIK="^RCY(344,"_RCNEWREC_",1,",DA(1)=RCNEWREC,DA=RCNEWTRA | 
|---|
| 140 | D IX^DIK | 
|---|
| 141 | ; | 
|---|
| 142 | S RESULT=$$EDITTRAN(RCNEWREC,RCNEWTRA) | 
|---|
| 143 | Q RESULT | 
|---|
| 144 | ; | 
|---|
| 145 | ; | 
|---|
| 146 | CANCTRAN(RECTDA,RECTRAN) ;  cancel a transaction | 
|---|
| 147 | N D,D0,DA,DI,DIC,DIE,DQ,DR,RCDATA,X,Y | 
|---|
| 148 | S (DIC,DIE)="^RCY(344,"_RECTDA_",1," | 
|---|
| 149 | S RCDATA="Cancelled by: "_$P(^VA(200,DUZ,0),"^")_"    Amount: $ "_$J($P(^RCY(344,RECTDA,1,RECTRAN,0),"^",4),0,2) | 
|---|
| 150 | S DR="1.01////^S X=RCDATA;.04////^S X=0;.05////^S X=0;1.02;" | 
|---|
| 151 | S DA=RECTRAN,DA(1)=RECTDA | 
|---|
| 152 | D ^DIE | 
|---|
| 153 | D LASTEDIT^RCDPUREC(RECTDA) | 
|---|
| 154 | Q | 
|---|
| 155 | ; | 
|---|
| 156 | ; | 
|---|
| 157 | DELETRAN(RECTDA,TRANDA) ;  delete a transaction | 
|---|
| 158 | N %,D0,D1,DA,DIC,DICR,DIG,DIH,DIK,DIU,DIV,DIW,X,Y | 
|---|
| 159 | S DIK="^RCY(344,"_RECTDA_",1,",DA(1)=RECTDA,DA=TRANDA | 
|---|
| 160 | D ^DIK | 
|---|
| 161 | D LASTEDIT^RCDPUREC(RECTDA) | 
|---|
| 162 | Q | 
|---|
| 163 | ; | 
|---|
| 164 | ; | 
|---|
| 165 | SETUNAPP(RECTDA,TRANDA,UNAPPNUM) ;  store the unapplied deposit number | 
|---|
| 166 | N D,D0,DA,DI,DIC,DIE,DQ,DR,X,Y | 
|---|
| 167 | S (DIC,DIE)="^RCY(344,"_RECTDA_",1," | 
|---|
| 168 | S DR=".25////"_UNAPPNUM_";" | 
|---|
| 169 | S DA=TRANDA,DA(1)=RECTDA | 
|---|
| 170 | D ^DIE | 
|---|
| 171 | Q | 
|---|
| 172 | ; | 
|---|
| 173 | ; | 
|---|
| 174 | PAYDEF(DEBTOR) ;  get default for payment amount (used in input templates for payments) | 
|---|
| 175 | N X | 
|---|
| 176 | I 'DEBTOR Q 0 | 
|---|
| 177 | I DEBTOR[";DPT(" S X=$$BAL^PRCAFN(DEBTOR) | 
|---|
| 178 | I DEBTOR[";PRCA(430,",",112,107,102,"[(","_$P($G(^PRCA(430.3,+$P($G(^PRCA(430,+DEBTOR,0)),"^",8),0)),"^",3)_",") S X=$G(^PRCA(430,+DEBTOR,7)),X=$P(X,"^")+$P(X,"^",2)+$P(X,"^",3)+$P(X,"^",4)+$P(X,"^",5) | 
|---|
| 179 | Q +$G(X) | 
|---|
| 180 | ; | 
|---|
| 181 | ; | 
|---|
| 182 | PENDPAY(DEBTOR) ;  return pending payments for a debtor | 
|---|
| 183 | ;  returns ^tmp($j,"rcdpurec","pp",rectda,tranda)=data in 344.01 | 
|---|
| 184 | ;  and the total pending payment dollars | 
|---|
| 185 | N DATA,RECTDA,TOTAL,TRANDA | 
|---|
| 186 | K ^TMP($J,"RCDPUREC","PP") | 
|---|
| 187 | ;  look at open receipts | 
|---|
| 188 | S RECTDA=0 F  S RECTDA=$O(^RCY(344,"ASTAT",1,RECTDA)) Q:'RECTDA  D | 
|---|
| 189 | .   S TRANDA=0 F  S TRANDA=$O(^RCY(344,"AACCT",DEBTOR,RECTDA,TRANDA)) Q:'TRANDA  D | 
|---|
| 190 | .   .   S DATA=$G(^RCY(344,RECTDA,1,TRANDA,0)) I DATA="" Q | 
|---|
| 191 | .   .   ;  total paid = total processed | 
|---|
| 192 | .   .   I +$P(DATA,"^",4)=+$P(DATA,"^",5) Q | 
|---|
| 193 | .   .   S ^TMP($J,"RCDPUREC","PP",RECTDA,TRANDA)=DATA | 
|---|
| 194 | .   .   S TOTAL=$G(TOTAL)+$P(DATA,"^",4) | 
|---|
| 195 | Q +$G(TOTAL) | 
|---|
| 196 | TRACE(DEBTOR) ;ENTER TOP TRACE NUMBER FOR TOP RECEIPTS | 
|---|
| 197 | N TRACE,DIC,DIE,DR,DA | 
|---|
| 198 | S TRACE="" G TRACEQ:'DEBTOR | 
|---|
| 199 | S DA=$S(DEBTOR["DPT(":$O(^RCD(340,"B",DEBTOR,0)),1:$P($G(^PRCA(430,+DEBTOR,0)),U,9)) | 
|---|
| 200 | G TRACEQ:'DA | 
|---|
| 201 | S (DIC,DIE)="^RCD(340,",DR=6.07 D ^DIE | 
|---|
| 202 | S TRACE=$P($G(^RCD(340,DA,6)),"^",7) | 
|---|
| 203 | TRACEQ Q TRACE | 
|---|