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