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