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