| 1 | RMPRPIUF ;HINCIO/ODJ - APIs for Current Stock file 661.7 ;3/8/01
 | 
|---|
| 2 |  ;;3.0;PROSTHETICS;**61**;Feb 09, 1996
 | 
|---|
| 3 |  Q
 | 
|---|
| 4 |  ;*****
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; Inputs:
 | 
|---|
| 7 |  ;    RMPR - an array with the following elements...
 | 
|---|
| 8 |  ;    RMPR("STATION IEN")  - Station ien (ptr ^DIC(4,)
 | 
|---|
| 9 |  ;    RMPR("LOCATION IEN") - Location ien (ptr ^RMPR(661.5,)
 | 
|---|
| 10 |  ;    RMPR("VENDOR IEN")   - Vendor ien
 | 
|---|
| 11 |  ;    RMPR("HCPCS")        - HCPCS code (eg E0111)
 | 
|---|
| 12 |  ;    RMPR("ITEM")         - HCPCS Item number (eg 1)
 | 
|---|
| 13 |  ;    RMPR("ISSUED QTY")   - Quantity Issued
 | 
|---|
| 14 |  ;    RMPR("ISSUED VALUE") - Issue Value
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ;    RMPRERR - function return...
 | 
|---|
| 17 |  ;               0 - no errors
 | 
|---|
| 18 |  ;               1 - null Station ien input
 | 
|---|
| 19 |  ;               2 - null Location ien input
 | 
|---|
| 20 |  ;               3 - null HCPCS code input
 | 
|---|
| 21 |  ;               4 - null Item input
 | 
|---|
| 22 |  ;               5 - issued qty not greater than 0
 | 
|---|
| 23 |  ;               6 - problem with 661.7 file
 | 
|---|
| 24 |  ;               7 - null Vendor input
 | 
|---|
| 25 |  ;               8 - problem with 661.6 file
 | 
|---|
| 26 | FIFO(RMPR) ;
 | 
|---|
| 27 |  N RMPRERR,RMPRK,RMPROLD,RMPREOF,RMPR7,RMPR7I,RMPRIBAL,RMPRVBAL
 | 
|---|
| 28 |  N RMPRUVAL,RMPRI,RMPR6,RMPR6I,RMPR7U
 | 
|---|
| 29 |  S RMPRERR=0
 | 
|---|
| 30 |  S RMPRK("STATION")=$G(RMPR("STATION IEN"))
 | 
|---|
| 31 |  I RMPRK("STATION")="" S RMPRERR=1 G FIFOX
 | 
|---|
| 32 |  S RMPRK("LOCATION")=$G(RMPR("LOCATION IEN"))
 | 
|---|
| 33 |  I RMPRK("LOCATION")="" S RMPRERR=2 G FIFOX
 | 
|---|
| 34 |  S RMPRK("HCPCS")=$G(RMPR("HCPCS"))
 | 
|---|
| 35 |  I RMPRK("HCPCS")="" S RMPRERR=3 G FIFOX
 | 
|---|
| 36 |  S RMPRK("ITEM")=$G(RMPR("ITEM"))
 | 
|---|
| 37 |  I RMPRK("ITEM")="" S RMPRERR=4 G FIFOX
 | 
|---|
| 38 |  I $G(RMPR("VENDOR IEN"))="" S RMPRERR=7 G FIFOX
 | 
|---|
| 39 |  I '+$G(RMPR("ISSUED QTY")) S RMPRERR=5 G FIFOX
 | 
|---|
| 40 |  S RMPRIBAL=RMPR("ISSUED QTY") ; init issued qty. balance
 | 
|---|
| 41 |  S RMPRVBAL=+$G(RMPR("ISSUED VALUE")) ; init issue value balance
 | 
|---|
| 42 |  S RMPRUVAL=RMPRVBAL/RMPRIBAL ; unit cost per issued item
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; Lock 661.7
 | 
|---|
| 45 |  L +^RMPR(661.7,"XSLHIDS",RMPR("STATION IEN"),RMPR("LOCATION IEN"),RMPR("HCPCS"),RMPR("ITEM"))
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ; Primary loop on all records for Stn, Loc, HCPCS and Item until stock
 | 
|---|
| 48 |  ; depleted by the issued amount
 | 
|---|
| 49 | FIFOA S RMPRERR=$$NEXT^RMPRPIXE(.RMPRK,"XSLHIDS","",1,.RMPROLD,.RMPREOF)
 | 
|---|
| 50 |  I RMPRERR S RMPRERR=6 G FIFOU
 | 
|---|
| 51 |  I RMPREOF G FIFOU
 | 
|---|
| 52 |  I RMPRK("ITEM")'=RMPROLD("ITEM") G FIFOU
 | 
|---|
| 53 |  I RMPRK("HCPCS")'=RMPROLD("HCPCS") G FIFOU
 | 
|---|
| 54 |  I RMPRK("LOCATION")'=RMPROLD("LOCATION") G FIFOU
 | 
|---|
| 55 |  I RMPRK("STATION")'=RMPROLD("STATION") G FIFOU
 | 
|---|
| 56 |  K RMPR7 S RMPR7("IEN")=RMPRK("IEN")
 | 
|---|
| 57 |  S RMPRERR=$$GET^RMPRPIX7(.RMPR7) ; read in current stock rec.
 | 
|---|
| 58 |  I RMPRERR S RMPRERR=6 G FIFOU
 | 
|---|
| 59 |  K RMPR7I
 | 
|---|
| 60 |  S RMPRERR=$$ETOI^RMPRPIX7(.RMPR7,.RMPR7I)
 | 
|---|
| 61 |  I RMPRERR S RMPRERR=6 G FIFOU
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; 2nd Loop on 661.6 transactions so as to match vendor
 | 
|---|
| 64 |  S RMPRI=""
 | 
|---|
| 65 | FIFOB S RMPRI=$O(^RMPR(661.6,"XHDS",RMPR7I("HCPCS"),RMPR7I("DATE&TIME"),RMPR7I("SEQUENCE"),RMPRI))
 | 
|---|
| 66 |  I RMPRI="" G FIFOA
 | 
|---|
| 67 |  K RMPR6 S RMPR6("IEN")=RMPRI S RMPRERR=$$GET^RMPRPIX6(.RMPR6)
 | 
|---|
| 68 |  I RMPRERR S RMPRERR=8 G FIFOU
 | 
|---|
| 69 |  S RMPRERR=$$VNDIEN^RMPRPIX6(.RMPR6)
 | 
|---|
| 70 |  I RMPRERR S RMPRERR=8 G FIFOU
 | 
|---|
| 71 |  I RMPR6("VENDOR IEN")'=RMPR("VENDOR IEN") G FIFOB
 | 
|---|
| 72 |  K RMPR7U
 | 
|---|
| 73 |  S RMPR7U("IEN")=RMPR7("IEN")
 | 
|---|
| 74 |  S RMPR7U("QUANTITY")=RMPR7("QUANTITY")
 | 
|---|
| 75 |  S RMPR7U("VALUE")=RMPR7("VALUE")
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  ; If issued balance less than on-hand quantity then update
 | 
|---|
| 78 |  ; the on-hand record
 | 
|---|
| 79 |  I RMPRIBAL<RMPR7U("QUANTITY") D
 | 
|---|
| 80 |  . S RMPR7U("QUANTITY")=RMPR7U("QUANTITY")-RMPRIBAL
 | 
|---|
| 81 |  . S RMPR7U("VALUE")=RMPR7U("VALUE")-RMPRVBAL
 | 
|---|
| 82 |  . S RMPRERR=$$UPD^RMPRPIX7(.RMPR7U,)
 | 
|---|
| 83 |  . S RMPRIBAL=0
 | 
|---|
| 84 |  . Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ; If issued balance not less than on-hand quantity then delete
 | 
|---|
| 87 |  ; the on-hand record
 | 
|---|
| 88 |  E  D
 | 
|---|
| 89 |  . S RMPRIBAL=RMPRIBAL-RMPR7U("QUANTITY")
 | 
|---|
| 90 |  . S RMPRVBAL=RMPRVBAL-($J(RMPR7U("QUANTITY")*RMPRUVAL,0,2))
 | 
|---|
| 91 |  . S RMPRERR=$$DEL^RMPRPIX7(.RMPR7U)
 | 
|---|
| 92 |  . Q
 | 
|---|
| 93 |  I RMPRERR S RMPRERR=6 G FIFOU
 | 
|---|
| 94 |  G:RMPRIBAL FIFOB ; next transaction if still got issue balance
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  ; exit points
 | 
|---|
| 97 | FIFOU L -^RMPR(661.7,"XSLHIDS",RMPR("STATION IEN"),RMPR("LOCATION IEN"),RMPR("HCPCS"),RMPR("ITEM"))
 | 
|---|
| 98 | FIFOX Q RMPRERR
 | 
|---|