| 1 | RMPRPIU8 ;HINCIO/ODJ - PIP STOCK RECEIPT UPDATE UTILITY ;3/8/01 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**61**;Feb 09, 1996 | 
|---|
| 3 | Q | 
|---|
| 4 | ; | 
|---|
| 5 | ;***** REC - Create a Stock Receipt Transaction for existing item | 
|---|
| 6 | ;            Implements business rules for creating a receipt | 
|---|
| 7 | ;            of an existing PIP HCPCS Item. | 
|---|
| 8 | ;            called by RMPRPIYG,RMPRPIY6 | 
|---|
| 9 | ; | 
|---|
| 10 | ; Inputs: | 
|---|
| 11 | ;    RMPR6  - Transaction (661.6) array elements | 
|---|
| 12 | ;    RMPR6("VENDOR")   - Vendor ien | 
|---|
| 13 | ;    RMPR6("QUANTITY") - Receipt Quantity | 
|---|
| 14 | ;    RMPR6("VALUE")    - Total $ value of received qty. | 
|---|
| 15 | ;    RMPR6("COMMENT")  - (optional) comment | 
|---|
| 16 | ; | 
|---|
| 17 | ;    RMPR11 - HCPCS Item (661.11) array elements | 
|---|
| 18 | ;    RMPR11("STATION") - Station ien | 
|---|
| 19 | ;    RMPR11("HCPCS")   - HCPCS code | 
|---|
| 20 | ;    RMPR11("ITEM")    - HCPCS Item number | 
|---|
| 21 | ; | 
|---|
| 22 | ;    RMPR5  - Location (661.5) array elements... | 
|---|
| 23 | ;    RMPR5("IEN") - Location ien (ptr ^RMPR(661.5,) | 
|---|
| 24 | ; | 
|---|
| 25 | ;    RMPRUPO - flag true=> update, false=> dont update orders | 
|---|
| 26 | ;    RMPR41  - array for orders | 
|---|
| 27 | ; | 
|---|
| 28 | ; Outputs: | 
|---|
| 29 | ;    RMPRERR - returned by function | 
|---|
| 30 | ;               0 - no errors | 
|---|
| 31 | ;              19 - problem creating 661.6 rec. | 
|---|
| 32 | ;              29 - problem creating 661.7 rec. | 
|---|
| 33 | ;              39 - problem creating 661.9 rec. | 
|---|
| 34 | ;              49 - problem updating 661.41 orders | 
|---|
| 35 | ; | 
|---|
| 36 | REC(RMPR6,RMPR11,RMPR5,RMPRUPO,RMPR41) ; | 
|---|
| 37 | N RMPRERR,RMPR6I,RMPRDIEN,RMPR7,RMPR9,RMPR41N,RMPRTOD,X | 
|---|
| 38 | S RMPRERR=0 | 
|---|
| 39 | D NOW^%DTC S RMPRTOD=X ;today's date | 
|---|
| 40 | ; | 
|---|
| 41 | ; Lock current stock to prevent simultaneous access at HCPCS Item level | 
|---|
| 42 | L +^RMPR(661.7,"XSHIDS",RMPR11("STATION"),RMPR11("HCPCS"),RMPR11("ITEM")) | 
|---|
| 43 | ; | 
|---|
| 44 | ; init. data elements for 661.6 transaction rec. | 
|---|
| 45 | S RMPR6("COMMENT")=$G(RMPR6("COMMENT")) | 
|---|
| 46 | S RMPR6("SEQUENCE")=1 | 
|---|
| 47 | S RMPR6("TRAN TYPE")=1 ;receipt | 
|---|
| 48 | S RMPR6("LOCATION")=RMPR5("IEN") | 
|---|
| 49 | S RMPR6("USER")=$G(DUZ) | 
|---|
| 50 | S RMPR6("DATE&TIME")="" | 
|---|
| 51 | I RMPR6("QUANTITY")=0 G RECU | 
|---|
| 52 | ; | 
|---|
| 53 | ; Create 661.6 transaction rec. | 
|---|
| 54 | S RMPRERR=$$CRE^RMPRPIX6(.RMPR6,.RMPR11) | 
|---|
| 55 | I RMPRERR S RMPRERR=19 G RECU ;error 19 problem with 661.6 | 
|---|
| 56 | ; | 
|---|
| 57 | ; Update 661.7 current stock rec. | 
|---|
| 58 | S RMPR7("DATE&TIME")=RMPR6("DATE&TIME") | 
|---|
| 59 | S RMPR7("SEQUENCE")=RMPR6("SEQUENCE") | 
|---|
| 60 | S RMPR7("QUANTITY")=RMPR6("QUANTITY") | 
|---|
| 61 | S RMPR7("VALUE")=RMPR6("VALUE") | 
|---|
| 62 | S RMPR7("UNIT")=RMPR6("UNIT") | 
|---|
| 63 | S RMPR7("LOCATION")=RMPR6("LOCATION") | 
|---|
| 64 | S RMPRERR=$$CRE^RMPRPIX7(.RMPR7,.RMPR11) | 
|---|
| 65 | I RMPRERR S RMPRERR=29 G RECU ;error 29 problem with 661.7 create | 
|---|
| 66 | ; | 
|---|
| 67 | ; Update 661.9 daily running balance record | 
|---|
| 68 | S RMPR9("STA")=RMPR11("STATION") | 
|---|
| 69 | S RMPR9("HCP")=RMPR11("HCPCS") | 
|---|
| 70 | S RMPR9("ITE")=RMPR11("ITEM") | 
|---|
| 71 | S RMPR9("RDT")=$P(RMPR6("DATE&TIME"),".",1) | 
|---|
| 72 | S RMPR9("TQTY")=RMPR6("QUANTITY") | 
|---|
| 73 | S RMPR9("TCST")=RMPR6("VALUE") | 
|---|
| 74 | S RMPRERR=$$UPCR^RMPRPIXJ(.RMPR9) | 
|---|
| 75 | I RMPRERR S RMPRERR=39 G RECU ;error 39 problem with 661.9 | 
|---|
| 76 | ; | 
|---|
| 77 | ; Update the orders file | 
|---|
| 78 | I RMPRUPO,+$G(RMPR41("IEN")) D | 
|---|
| 79 | . I RMPR6("QUANTITY")'<RMPR41("BALANCE QTY") D | 
|---|
| 80 | .. S RMPR41N("RECEIVE QTY")=RMPR41("ORDER QTY") | 
|---|
| 81 | .. Q | 
|---|
| 82 | . E  D | 
|---|
| 83 | .. S RMPR41N("RECEIVE QTY")=RMPR41("RECEIVE QTY")+RMPR6("QUANTITY") | 
|---|
| 84 | .. Q | 
|---|
| 85 | . S RMPR41N("STATUS")="R" | 
|---|
| 86 | . S RMPR41N("ORDER QTY")=RMPR41("ORDER QTY") | 
|---|
| 87 | . S RMPR41N("DATE RECEIVE")=RMPRTOD | 
|---|
| 88 | . S RMPR41N("VENDOR")=RMPR41("VENDOR IEN") | 
|---|
| 89 | . S RMPR41N("IEN")=RMPR41("IEN") | 
|---|
| 90 | . S RMPRERR=$$UPD^RMPRPIXN(.RMPR41N,) | 
|---|
| 91 | . Q | 
|---|
| 92 | I RMPRERR S RMPRERR=49 G RECU ;error 49 problem updating 661.41 orders | 
|---|
| 93 | ; | 
|---|
| 94 | ; Exit points | 
|---|
| 95 | RECU L -^RMPR(661.7,"XSHIDS",RMPR11("STATION"),RMPR11("HCPCS"),RMPR11("ITEM")) | 
|---|
| 96 | RECX Q RMPRERR | 
|---|
| 97 | ; | 
|---|
| 98 | ;***** UPORD - Update Orders file for receipted item | 
|---|
| 99 | ;              reduce outstanding balance starting with earliest, | 
|---|
| 100 | ;              if outstanding balance reduced to 0 change status to R | 
|---|
| 101 | ; | 
|---|
| 102 | ; Inputs: | 
|---|
| 103 | ;    RMPRS - Station ien | 
|---|
| 104 | ;    RMPRH - HCPCS code | 
|---|
| 105 | ;    RMPRI - HCPCS Item number | 
|---|
| 106 | ;    RMPRQ - Received Quantity | 
|---|
| 107 | ;    RMPRV - Vendor ien | 
|---|
| 108 | ; | 
|---|
| 109 | ; Outputs: | 
|---|
| 110 | ;    RMPRERR - returned by function | 
|---|
| 111 | ;               0 - no problems | 
|---|
| 112 | ;              99 - problem with update | 
|---|
| 113 | ; | 
|---|
| 114 | UPORD(RMPRS,RMPRH,RMPRI,RMPRQ,RMPRV) ; | 
|---|
| 115 | N RMPRERR,RMPRD,RMPR41U,RMPR41,X,Y,RMPRTOD,RMPRX | 
|---|
| 116 | S RMPRERR=0 | 
|---|
| 117 | D NOW^%DTC S RMPRTOD=X ;today's date | 
|---|
| 118 | ; | 
|---|
| 119 | ; loop on Order dates in chronologial order until receipt balance=0 | 
|---|
| 120 | ; process Open orders only and only those which match Vendor | 
|---|
| 121 | S RMPRD="" | 
|---|
| 122 | F  S RMPRD=$O(^RMPR(661.41,"ASSHID",RMPRS,"O",RMPRH,RMPRI,RMPRD)) Q:RMPRD=""  D  Q:RMPRERR!(RMPRQ=0) | 
|---|
| 123 | . S RMPRX="" | 
|---|
| 124 | . F  S RMPRX=$O(^RMPR(661.41,"ASSHID",RMPRS,"O",RMPRH,RMPRI,RMPRD,RMPRX)) Q:RMPRX=""  D  Q:RMPRERR!(RMPRQ=0) | 
|---|
| 125 | .. S RMPR41("IEN")=RMPRX | 
|---|
| 126 | .. S RMPRERR=$$GETI^RMPRPIXN(.RMPR41,) | 
|---|
| 127 | .. Q:RMPR41("VENDOR")'=RMPRV | 
|---|
| 128 | .. ; | 
|---|
| 129 | .. ; balance less than or equal to received qty. so order completely | 
|---|
| 130 | .. ; received | 
|---|
| 131 | .. I RMPR41("BALANCE QTY")'>RMPRQ D | 
|---|
| 132 | ... S RMPR41U("IEN")=RMPR41("IEN") | 
|---|
| 133 | ... S RMPR41U("RECEIVE QTY")=RMPR41("ORDER QTY") | 
|---|
| 134 | ... S RMPR41U("STATUS")="R" ;set status to received | 
|---|
| 135 | ... S RMPR41U("DATE RECEIVE")=RMPRTOD ;set receive date to today | 
|---|
| 136 | ... S RMPRQ=RMPRQ-RMPR41("BALANCE QTY") | 
|---|
| 137 | ... S RMPRERR=$$UPD^RMPRPIXN(.RMPR41U,) ;update order | 
|---|
| 138 | ... Q | 
|---|
| 139 | .. ; | 
|---|
| 140 | .. ; balance more than receipt balance so just add to received qty. | 
|---|
| 141 | .. E  D | 
|---|
| 142 | ... S RMPR41U("IEN")=RMPR41("IEN") | 
|---|
| 143 | ... S RMPR41U("RECEIVE QTY")=RMPR41("RECEIVE QTY")+RMPRQ | 
|---|
| 144 | ... S RMPR41U("DATE RECEIVE")=RMPRTOD ;set receive date to today | 
|---|
| 145 | ... S RMPRERR=$$UPD^RMPRPIXN(.RMPR41U,) ;update order | 
|---|
| 146 | ... S RMPRQ=0 | 
|---|
| 147 | ... Q | 
|---|
| 148 | .. Q | 
|---|
| 149 | . Q | 
|---|
| 150 | I RMPRERR S RMPRERR=99 ; problem occurred | 
|---|
| 151 | UPORDX Q RMPRERR | 
|---|