1 | RMPRPIUT ;HINCIO/ODJ - STOCK TRANSFER TRANSACTION ;3/8/01
|
---|
2 | ;;3.0;PROSTHETICS;**61**;Feb 09, 1996
|
---|
3 | Q
|
---|
4 | ;
|
---|
5 | ;***** TRNF - create stock transfer transaction.
|
---|
6 | ; implements business rules for transferring stock
|
---|
7 | ; from one location to another.
|
---|
8 | ;
|
---|
9 | ; Inputs:
|
---|
10 | ; RMPR - array with following elements...
|
---|
11 | ; RMPR("QUANTITY")
|
---|
12 | ; RMPR("VENDOR IEN")
|
---|
13 | ;
|
---|
14 | ; RMPR5F - array with 'From' Location data elements (661.5)...
|
---|
15 | ; RMPR5F("IEN") - ien of 'From' Location
|
---|
16 | ;
|
---|
17 | ; RMPR5T - array with 'To' Location data elements (661.5)...
|
---|
18 | ; RMPR5T("IEN") - ien of 'To' Location
|
---|
19 | ;
|
---|
20 | ; RMPR11 - array with HCPCS Item data elements (661.11)...
|
---|
21 | ; RMPR11("STATION IEN") - Station number (ptr DIC(4,)
|
---|
22 | ; RMPR11("HCPCS") - HCPCS Code
|
---|
23 | ; RMPR11("ITEM") - HCPCS Item number
|
---|
24 | ;
|
---|
25 | ; Outputs:
|
---|
26 | ; RMPRERR - error status returned by function
|
---|
27 | ; 0 - no problems
|
---|
28 | ; 1 - insufficient stock level at 'From' Location
|
---|
29 | ; 19 - problem getting current stock level
|
---|
30 | ; 29 - problem creating 'From' transfer
|
---|
31 | ; 39 - problem creating 'To' transfer
|
---|
32 | ;
|
---|
33 | TRNF(RMPR,RMPR5F,RMPR5T,RMPR11) ;
|
---|
34 | N RMPRERR,RMPR6,RMPR7,RMPR7E,RMPR4,RMPRTCOS
|
---|
35 | S RMPRERR=0
|
---|
36 | S RMPR11("STATION")=RMPR11("STATION IEN")
|
---|
37 | S RMPR7("STATION IEN")=RMPR11("STATION IEN")
|
---|
38 | S RMPR7("LOCATION IEN")=RMPR5F("IEN")
|
---|
39 | S RMPR7("HCPCS")=RMPR11("HCPCS")
|
---|
40 | S RMPR7("ITEM")=RMPR11("ITEM")
|
---|
41 | S RMPR7("UNIT")=$G(RMPR5F("UNIT"))
|
---|
42 | S RMPR7("VENDOR IEN")=RMPR("VENDOR IEN")
|
---|
43 | ;
|
---|
44 | ; Lock file so that -ve stock not possible
|
---|
45 | L +^RMPR(661.7,"XSLHIDS",RMPR7("STATION IEN"),RMPR7("LOCATION IEN"),RMPR7("HCPCS"),RMPR7("ITEM"))
|
---|
46 | ;
|
---|
47 | ; Get item's total current stock for location and vendor
|
---|
48 | S RMPRERR=$$STOCK^RMPRPIUE(.RMPR7)
|
---|
49 | I RMPRERR S RMPRERR=19 G TRNFU ;error 19 problem getting cur. qty.
|
---|
50 | ;
|
---|
51 | ; If not enough available stock set error code 1 and exit
|
---|
52 | I RMPR("QUANTITY")>RMPR7("QOH") D G TRNFU
|
---|
53 | . S RMPRERR=1
|
---|
54 | . S RMPR("QOH")=RMPR7("QOH")
|
---|
55 | . Q
|
---|
56 | ;
|
---|
57 | ; Continue the transaction
|
---|
58 | S RMPR("STATION")=RMPR11("STATION IEN")
|
---|
59 | S RMPR("LOCATION")=RMPR5F("IEN")
|
---|
60 | S RMPR("HCPCS")=RMPR11("HCPCS")
|
---|
61 | S RMPR("ITEM")=RMPR11("ITEM")
|
---|
62 | S RMPRERR=$$QCOST(.RMPR,RMPR("QUANTITY"),.RMPRTCOS)
|
---|
63 | S RMPR("VALUE")=RMPRTCOS
|
---|
64 | ;
|
---|
65 | ; Create transfer 'OUT' transaction (661.6)
|
---|
66 | K RMPR6
|
---|
67 | S RMPR6("SEQUENCE")=1
|
---|
68 | S RMPR6("TRAN TYPE")=7
|
---|
69 | S RMPR6("COMMENT")=$G(RMPR("COMMENT"))
|
---|
70 | S RMPR6("QUANTITY")=0-RMPR("QUANTITY")
|
---|
71 | S RMPR6("VALUE")=0-RMPR("VALUE")
|
---|
72 | S RMPR6("USER")=RMPR("USER")
|
---|
73 | S RMPR6("LOCATION")=RMPR5F("IEN")
|
---|
74 | S RMPR6("UNIT")=$G(RMPR5F("UNIT"))
|
---|
75 | S RMPR6("VENDOR")=RMPR7("VENDOR IEN")
|
---|
76 | S RMPRERR=$$CRE^RMPRPIX6(.RMPR6,.RMPR11)
|
---|
77 | I RMPRERR S RMPRERR=29 G TRNFU ;error 29 'From' transfer 661.6 problem
|
---|
78 | ;
|
---|
79 | ; Create transfer 'IN' transaction (661.6)
|
---|
80 | S RMPR6("QUANTITY")=RMPR("QUANTITY")
|
---|
81 | S RMPR6("VALUE")=RMPR("VALUE")
|
---|
82 | S RMPR6("LOCATION")=RMPR5T("IEN")
|
---|
83 | S RMPR6("UNIT")=$G(RMPR5T("UNIT"))
|
---|
84 | S RMPRERR=$$CRE^RMPRPIX6(.RMPR6,.RMPR11)
|
---|
85 | I RMPRERR S RMPRERR=39 G TRNFU ;error 39 'To' transfer 661.6 problem
|
---|
86 | ;
|
---|
87 | ; See if need to create a PIP record in 661.4
|
---|
88 | I '$D(^RMPR(661.4,"ASLHI",RMPR11("STATION IEN"),RMPR5T("IEN"),RMPR11("HCPCS"),RMPR11("ITEM"))) D
|
---|
89 | . K RMPR4
|
---|
90 | . S RMPR4("RE-ORDER QTY")=0
|
---|
91 | . S RMPRERR=$$CRE^RMPRPIX4(.RMPR4,.RMPR11,.RMPR5T)
|
---|
92 | . Q
|
---|
93 | I RMPRERR S RMPRERR=39 G TRNFU
|
---|
94 | ;
|
---|
95 | ; Update current stock
|
---|
96 | K RMPR7E
|
---|
97 | S RMPR7E("TRNF QTY")=RMPR("QUANTITY")
|
---|
98 | S RMPR7E("TRNF VALUE")=RMPR("VALUE")
|
---|
99 | S RMPR7E("VENDOR IEN")=RMPR("VENDOR IEN")
|
---|
100 | S RMPR7E("UNIT")=$G(RMPR("UNIT"))
|
---|
101 | S RMPRERR=$$TRNF^RMPRPIUC(.RMPR11,.RMPR5F,.RMPR5T,.RMPR7E)
|
---|
102 | I RMPRERR S RMPRERR=49 G TRNFU ;error 49 current stock update problem
|
---|
103 | ;
|
---|
104 | ; exit points
|
---|
105 | TRNFU L -^RMPR(661.7,"XSLHIDS",RMPR7("STATION IEN"),RMPR7("LOCATION IEN"),RMPR7("HCPCS"),RMPR7("ITEM"))
|
---|
106 | TRNFX Q RMPRERR
|
---|
107 | ;
|
---|
108 | ; Work out total cost of quantity based on FIFO principles
|
---|
109 | QCOST(RMPRK,RMPRQTY,RMPRTCOS) ;
|
---|
110 | N RMPRERR,RMPR,RMPR6,RMPR7,RMPRVNDR,RMPRQ,RMPRUVAL,RMPROLD,RMPREOF
|
---|
111 | S RMPRERR=0
|
---|
112 | S RMPRTCOS=0
|
---|
113 | S RMPRQ=RMPRQTY
|
---|
114 | M RMPR=RMPRK
|
---|
115 | S RMPRVNDR=RMPRK("VENDOR IEN")
|
---|
116 | QCOST1 S RMPRERR=$$NEXT^RMPRPIXE(.RMPR,"XSLHIDS","",1,.RMPROLD,.RMPREOF)
|
---|
117 | I RMPRERR S RMPRERR=1 G QCOSTX
|
---|
118 | I RMPREOF G QCOSTX
|
---|
119 | I RMPR("STATION")'=RMPRK("STATION") G QCOSTX
|
---|
120 | I RMPR("LOCATION")'=RMPRK("LOCATION") G QCOSTX
|
---|
121 | I RMPR("HCPCS")'=RMPRK("HCPCS") G QCOSTX
|
---|
122 | I RMPR("ITEM")'=RMPRK("ITEM") G QCOSTX
|
---|
123 | K RMPR7 M RMPR7=RMPR
|
---|
124 | S RMPRERR=$$GET^RMPRPIX7(.RMPR7)
|
---|
125 | I RMPRERR S RMPRERR=1 G QCOSTX
|
---|
126 | K RMPR6 M RMPR6=RMPR S RMPR6("IEN")=""
|
---|
127 | S RMPRERR=$$GET^RMPRPIX6(.RMPR6)
|
---|
128 | S RMPRERR=$$VNDIEN^RMPRPIX6(.RMPR6)
|
---|
129 | I RMPRERR S RMPRERR=1 G QCOSTX
|
---|
130 | I RMPR6("VENDOR IEN")'=RMPRVNDR G QCOST1
|
---|
131 | S RMPRUVAL=$J(RMPR7("VALUE")/RMPR7("QUANTITY"),"",2)
|
---|
132 | S RMPRTCOS=RMPRTCOS+(RMPRQ*RMPRUVAL)
|
---|
133 | I RMPR7("QUANTITY")<RMPRQ S RMPRQ=RMPRQ-RMPR7("QUANTITY") G QCOST1
|
---|
134 | QCOSTX Q RMPRERR
|
---|