| [613] | 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
 | 
|---|