| 1 | RCXFMST1 ;ALB/TMK-EDI Lockbox fms transfer (tr) cd sht gen ;31 Mar 03
 | 
|---|
| 2 |  ;;4.5;Accounts Receivable;**173,220,184,238**;Mar 20, 1995
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | GETTR(RCRECTDA,RCGECSDA) ;  extract transfer data for TR code sheet for
 | 
|---|
| 8 |  ;  a receipt in rcrectda
 | 
|---|
| 9 |  ;  rcgecsda is the ien for the gcs stack file 2100.1 for rebuilds
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  N TRANDA,AMOUNT,DETAIL,UNAPPLY,TOTAL,RCTOTAL,FUND,REVSRCE,VENDORID,RCSEQ,RESULT,GECSDATA,RCTRANS,UNAPPNUM,TRANNUMB
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ;  extract all payments on receipt
 | 
|---|
| 14 |  S RESULT=""
 | 
|---|
| 15 |  K ^TMP($J,"RCFMSCR")  ;  used for 215 report, not used here
 | 
|---|
| 16 |  D FMSLINES^RCXFMSC1(RCRECTDA,1)
 | 
|---|
| 17 |  K ^TMP($J,"RCFMSCR")
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;  unapplied payments to accounts
 | 
|---|
| 20 |  S TRANDA=0 F  S TRANDA=$O(^RCY(344,RCRECTDA,1,TRANDA)) Q:'TRANDA  D
 | 
|---|
| 21 |  .   ;  dollars applied in AR
 | 
|---|
| 22 |  .   I $P(^RCY(344,RCRECTDA,1,TRANDA,0),U,5) Q
 | 
|---|
| 23 |  .   ;  no dollars on transaction
 | 
|---|
| 24 |  .   S AMOUNT=$P(^RCY(344,RCRECTDA,1,TRANDA,0),U,4) I 'AMOUNT Q
 | 
|---|
| 25 |  .   ;
 | 
|---|
| 26 |  .   S UNAPPLY($$GETUNAPP^RCXFMSCR(RCRECTDA,TRANDA,1))=AMOUNT
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ;  no code sheets to send
 | 
|---|
| 29 |  I '$D(DETAIL),'$D(TOTAL),'$D(UNAPPLY) S RESULT="-1^No code sheets to send for this receipt" G QUIT
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ;  get the next common number in the series = station "-" nextnumber
 | 
|---|
| 32 |  ;  use (field 200 in file 344) if document previously sent
 | 
|---|
| 33 |  S TRANNUMB=$P($P($G(^RCY(344,RCRECTDA,2)),U),"-",2)
 | 
|---|
| 34 |  I TRANNUMB="" S TRANNUMB=$$ENUM^RCMSNUM
 | 
|---|
| 35 |  I TRANNUMB<0 S RESULT="0^Unable to lookup next transaction number" G QUIT
 | 
|---|
| 36 |  ;  remove the dash (i,e, 460-K1A05HY)
 | 
|---|
| 37 |  S TRANNUMB=$TR(TRANNUMB,"-")
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  ;  extract transfer from/to array for applied payments
 | 
|---|
| 40 |  S (RCTOTAL,RCSEQ)=0
 | 
|---|
| 41 |  S FUND="" F  S FUND=$O(TOTAL(FUND)) Q:FUND=""  D
 | 
|---|
| 42 |  .   S REVSRCE="" F  S REVSRCE=$O(TOTAL(FUND,REVSRCE)) Q:REVSRCE=""  D
 | 
|---|
| 43 |  .   .   S VENDORID="" F  S VENDORID=$O(TOTAL(FUND,REVSRCE,VENDORID)) Q:VENDORID=""  D
 | 
|---|
| 44 |  .   .   .   S RCSEQ=RCSEQ+1,RCTRANS($$TRFUND(),"8NZZ",RCSEQ)=FUND_U_REVSRCE_U_TOTAL(FUND,REVSRCE,VENDORID)_U_U_VENDORID
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  ;  extract unapplied payments
 | 
|---|
| 47 |  S UNAPPNUM="" F  S UNAPPNUM=$O(UNAPPLY(UNAPPNUM)) Q:UNAPPNUM=""  D
 | 
|---|
| 48 |  .   S RCSEQ=RCSEQ+1,RCTRANS($$TRFUND(),"8NZZ",RCSEQ)=3875_U_U_UNAPPLY(UNAPPNUM)_U_UNAPPNUM
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 |  ;  build the TR document
 | 
|---|
| 51 |  S RESULT=$$BUILDTR(.RCTRANS,.DETAIL,+$G(GECSDATA),TRANNUMB,RCRECTDA)
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | QUIT Q RESULT
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | BUILDTR(RCTRANS,RCDETAIL,RCGECSDA,TRANNUMB,RCRECTDA) ;  generate a tr code
 | 
|---|
| 56 |  ;  sheet for transferring dollars out of 528704/8NZZ
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  ;  rctrans(fund,rsc,seq) = data array passed
 | 
|---|
| 59 |  ;    fund=fund to transfer from (always 528704)
 | 
|---|
| 60 |  ;    rsc = rsc to transfer from (always 8NZZ)
 | 
|---|
| 61 |  ;    seq = sequence to make record unique for each 'transferred to' rsc
 | 
|---|
| 62 |  ;    data = fund to transfer to (piece 1)
 | 
|---|
| 63 |  ;           rsc  to transfer to (piece 2)
 | 
|---|
| 64 |  ;           dollars to transfer (piece 3)
 | 
|---|
| 65 |  ;           unapplied deposit # for suspense (fund to transfer to=3875)
 | 
|---|
| 66 |  ;           vendor id (piece 5)
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ;  rcgecsda is the ien for the gcs stack file 2100.1 for rebuilds
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  ;  trannumb is the document identifier
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  ;  rcrectda is the ien of the receipt (file 344)
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  ;  rcdetail array contains accrual data for BD transactions
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  N COUNT,DATA,DESCRIP,FISCALYR,FUND,GECSFMS,LINE,REVSRCE,TR2,X,Y,RCSUSP,BILLDA,FMSTYPE,AMOUNT,RCSEQ
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  S FISCALYR=$$FY^RCFN01(DT)
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  ;  build detail lines
 | 
|---|
| 81 |  S COUNT=0
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  S FMSTYPE="" F  S FMSTYPE=$O(RCDETAIL(FMSTYPE)) Q:FMSTYPE=""  D
 | 
|---|
| 84 |  .   S BILLDA=0 F  S BILLDA=$O(RCDETAIL(FMSTYPE,BILLDA)) Q:'BILLDA  D
 | 
|---|
| 85 |  .    .   S AMOUNT=RCDETAIL(FMSTYPE,BILLDA)
 | 
|---|
| 86 |  .    . ; Decrease from 528704/8NZZ
 | 
|---|
| 87 |  .    .   S COUNT=COUNT+1
 | 
|---|
| 88 |  .    .   S LINE(COUNT)=$$DEC(COUNT,FISCALYR,TRANNUMB,AMOUNT)
 | 
|---|
| 89 |  .    . ; Send BD
 | 
|---|
| 90 |  .    .   S COUNT=COUNT+1
 | 
|---|
| 91 |  .    .   S LINE(COUNT)="LIN^~CRA^"_$S($L(COUNT)=1:"00",$L(COUNT)=2:"0",1:"")_COUNT
 | 
|---|
| 92 |  .    .   S $P(LINE(COUNT),U,20)=$J(AMOUNT,0,2)
 | 
|---|
| 93 |  .    .   S $P(LINE(COUNT),U,21)="I"
 | 
|---|
| 94 |  .    .   S $P(LINE(COUNT),U,23)=$S(FMSTYPE'=75:FMSTYPE,$$GETFUNDB^RCXFMSUF(BILLDA,1)["5287":33,1:75)
 | 
|---|
| 95 |  .    .   S $P(LINE(COUNT),U,24)="BD"
 | 
|---|
| 96 |  .    .   S $P(LINE(COUNT),U,25)=$TR($P(^PRCA(430,BILLDA,0),U),"-")
 | 
|---|
| 97 |  .    .   S $P(LINE(COUNT),U,26)=$$LINE^RCXFMSC1(BILLDA)
 | 
|---|
| 98 |  .    .   S $P(LINE(COUNT),U,27)="~"
 | 
|---|
| 99 |  .    ;
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  S FUND=$$TRFUND(),REVSRCE="8NZZ"
 | 
|---|
| 102 |  S RCSEQ=0 F  S RCSEQ=$O(RCTRANS(FUND,REVSRCE,RCSEQ)) Q:'RCSEQ  D
 | 
|---|
| 103 |  .   S DATA=RCTRANS(FUND,REVSRCE,RCSEQ)
 | 
|---|
| 104 |  .   ;  if no value, quit
 | 
|---|
| 105 |  .   I '$P(DATA,U,3) Q
 | 
|---|
| 106 |  .   ;
 | 
|---|
| 107 |  .   ;  create line to transfer from (decrease)
 | 
|---|
| 108 |  .   S COUNT=COUNT+1
 | 
|---|
| 109 |  .   S LINE(COUNT)=$$DEC(COUNT,FISCALYR,TRANNUMB,$P(DATA,U,3))
 | 
|---|
| 110 |  .   ;
 | 
|---|
| 111 |  .   ;  create line to transfer to (increase)
 | 
|---|
| 112 |  .   S COUNT=COUNT+1
 | 
|---|
| 113 |  .   S RCSUSP=($P(DATA,U)=3875)
 | 
|---|
| 114 |  .   S LINE(COUNT)="LIN^~CRA^"_$S($L(COUNT)=1:"00",$L(COUNT)=2:"0",1:"")_COUNT
 | 
|---|
| 115 |  .   S $P(LINE(COUNT),U,4)=FISCALYR
 | 
|---|
| 116 |  .   S $P(LINE(COUNT),U,4)=$S($E(FUND,1,4)=5287:"05",1:FISCALYR)
 | 
|---|
| 117 |  .   S $P(LINE(COUNT),U,6)=$P(DATA,U)
 | 
|---|
| 118 |  .   S $P(LINE(COUNT),U,7)=$E(TRANNUMB,1,3) ; station #
 | 
|---|
| 119 |  .   I 'RCSUSP S $P(LINE(COUNT),U,10)=$P(DATA,U,2)
 | 
|---|
| 120 |  .   ;
 | 
|---|
| 121 |  .   ;  vendor id
 | 
|---|
| 122 |  .   I 'RCSUSP S $P(LINE(COUNT),U,18)=$P(DATA,U,5)
 | 
|---|
| 123 |  .   ;
 | 
|---|
| 124 |  .   S $P(LINE(COUNT),U,20)=$J($P(DATA,U,3),0,2)
 | 
|---|
| 125 |  .   S $P(LINE(COUNT),U,21)="I"
 | 
|---|
| 126 |  .   S $P(LINE(COUNT),U,23)=$S('RCSUSP:33,1:24)
 | 
|---|
| 127 |  .   S $P(LINE(COUNT),U,24)=$S('RCSUSP:"~",1:"~CRB")
 | 
|---|
| 128 |  .   I RCSUSP D
 | 
|---|
| 129 |  .   .   S $P(LINE(COUNT),U,32)=$P(DATA,U,4)
 | 
|---|
| 130 |  .   .   S $P(LINE(COUNT),U,33)="~"
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  ;  build tr2
 | 
|---|
| 133 |  N FMSDT S FMSDT=$$FMSDATE^RCBEUTRA(DT)
 | 
|---|
| 134 |  S TR2="CR2^"_$E(FMSDT,2,3)_U_$E(FMSDT,4,5)_U_$E(FMSDT,6,7)_"^^^^^^E^^^"
 | 
|---|
| 135 |  ;  deposit number which is equal to the gcs id
 | 
|---|
| 136 |  ;  $j(0,0,2) is the document total which is zero
 | 
|---|
| 137 |  S TR2=TR2_$P(TRANNUMB,U)_"^^"_$J(0,0,2)_"^^"
 | 
|---|
| 138 |  ;  deposit/transfer date
 | 
|---|
| 139 |  S TR2=TR2_$E(DT,2,3)_U_$E(DT,4,5)_U_$E(DT,6,7)_"^~"
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 |  ;  put together document in gcs
 | 
|---|
| 142 |  N D0,DA,DI,DIC,DIE,DIQ2,DQ,DR
 | 
|---|
| 143 |  S DESCRIP="EDI Lockbox Detail Receipt: "_$P(^RCY(344,RCRECTDA,0),U)
 | 
|---|
| 144 |  I 'RCGECSDA D CONTROL^GECSUFMS("A",$E(TRANNUMB,1,3),TRANNUMB,"TR",10,0,"",DESCRIP)
 | 
|---|
| 145 |  I RCGECSDA D REBUILD^GECSUFM1(RCGECSDA,"A",10,"N","Rebuild "_DESCRIP) S GECSFMS("DA")=RCGECSDA
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  ;  store document in gcs
 | 
|---|
| 148 |  D SETCS^GECSSTAA(GECSFMS("DA"),TR2)
 | 
|---|
| 149 |  F COUNT=1:1 Q:'$D(LINE(COUNT))  D SETCS^GECSSTAA(GECSFMS("DA"),LINE(COUNT))
 | 
|---|
| 150 |  D SETCODE^GECSSDCT(GECSFMS("DA"),"D RETN^RCFMFN02")
 | 
|---|
| 151 |  D SETSTAT^GECSSTAA(GECSFMS("DA"),"Q")
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 |  ;  add/update entry in file 347 for unprocessed document report
 | 
|---|
| 154 |  N %DT,%X,D,DA347,D0,DI,DQ,DIC,ERROR,FMSDOCNO,X
 | 
|---|
| 155 |  S FMSDOCNO="TR-"_$P(GECSFMS("CTL"),U,9)
 | 
|---|
| 156 |  S DA347=$O(^RC(347,"C",FMSDOCNO,0))
 | 
|---|
| 157 |  ;  if not in the file, addit   fmsdocid   tr   id
 | 
|---|
| 158 |  I 'DA347 D OPEN^RCFMDRV1(FMSDOCNO,9,"TR-"_$P($G(^RCY(344,RCRECTDA,0)),U),.DA347,.ERROR)
 | 
|---|
| 159 |  I DA347 D SSTAT^RCFMFN02(FMSDOCNO,1)
 | 
|---|
| 160 |  ;
 | 
|---|
| 161 |  ;  return 1 for success ^ fms document id
 | 
|---|
| 162 |  Q 1_"^TR-"_$P(GECSFMS("CTL"),U,9)
 | 
|---|
| 163 |  ;
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 | DEC(COUNT,FISCALYR,TRANNUMB,AMOUNT) ; Add decrease from 528704/8NZZ
 | 
|---|
| 166 |  ; Returns LINE with decrease TR info
 | 
|---|
| 167 |  ; FISCALYR/TRANNUMB from above
 | 
|---|
| 168 |  ; COUNT = line counter
 | 
|---|
| 169 |  ; AMOUNT = amount to be transferred
 | 
|---|
| 170 |  ;
 | 
|---|
| 171 |  S LINE="LIN^~CRA^"_$S($L(COUNT)=1:"00",$L(COUNT)=2:"0",1:"")_COUNT
 | 
|---|
| 172 |  S $P(LINE,U,4)=FISCALYR
 | 
|---|
| 173 |  S $P(LINE,U,6)=$$TRFUND()
 | 
|---|
| 174 |  S $P(LINE,U,4)=$S($E($P(LINE,U,6),1,4)=5287:"05",1:FISCALYR)
 | 
|---|
| 175 |  S $P(LINE,U,7)=$E(TRANNUMB,1,3) ; station #
 | 
|---|
| 176 |  S $P(LINE,U,10)="8NZZ"
 | 
|---|
| 177 |  ;
 | 
|---|
| 178 |  ;  vendor id
 | 
|---|
| 179 |  S $P(LINE,U,18)="MCCFVALUE"
 | 
|---|
| 180 |  S $P(LINE,U,20)=$J(AMOUNT,0,2)
 | 
|---|
| 181 |  S $P(LINE,U,21)="D"
 | 
|---|
| 182 |  S $P(LINE,U,23)=33
 | 
|---|
| 183 |  S $P(LINE,U,24)="~"
 | 
|---|
| 184 |  Q LINE
 | 
|---|
| 185 |  ;
 | 
|---|
| 186 | TRFUND() ; Determine if fund should be 5287 or 528704, based on date
 | 
|---|
| 187 |  I DT<3030926 Q 5287
 | 
|---|
| 188 |  I DT<$$ADDPTEDT^PRCAACC() Q 5287.4
 | 
|---|
| 189 |  Q 528704
 | 
|---|
| 190 |  ;
 | 
|---|