| 1 | PRCPOPP ;WISC/RFJ-post distribution order;  ; 8/4/99 1:05pm | 
|---|
| 2 | V ;;5.1;IFCAP;**1,41**;Oct 20, 2000 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | PRCPSS(ORDERDA,PRCPSECO,PRCPPRIM,PRCPSS) ; entry point for supply station | 
|---|
| 7 | ; ORDERDA  order to be posted | 
|---|
| 8 | ; PRCPSECO secondary inventory point | 
|---|
| 9 | ; PRCPPRIM primary inventory point | 
|---|
| 10 | ; PRCPSS   flag to designate supply station posting (value = 1) | 
|---|
| 11 | G PRCPSS0 | 
|---|
| 12 | ; | 
|---|
| 13 | POST ;  post order | 
|---|
| 14 | ;  orderda=order number | 
|---|
| 15 | S VALMBCK="R" | 
|---|
| 16 | N PRCPSS S PRCPSS=0 ; posting is done at GIP | 
|---|
| 17 | ; | 
|---|
| 18 | PRCPSS0 N %,CONVFACT,DATA,ITEMDA,ITEMDATA,ORDRDATA,PRCPFLAG,PRCPID,PRCPOH,PRCPOPP,PRCPPORD,PRCPPTDA,PRCPSORD,QTYDUE,QUANTITY,TOTCOST,UNITCOST,XORDERDA,XDT | 
|---|
| 19 | ; | 
|---|
| 20 | ;  Check for old orders | 
|---|
| 21 | S XORDERDA=0 F  S XORDERDA=$O(^PRCP(445.3,XORDERDA)) Q:'XORDERDA  Q:XORDERDA]"A"  D | 
|---|
| 22 | .  S XDT=$P($G(^PRCP(445.3,XORDERDA,0)),"^",9) | 
|---|
| 23 | .  Q:'XDT | 
|---|
| 24 | .  I XDT+2<DT D DELORDER^PRCPOPD(XORDERDA) | 
|---|
| 25 | .  Q | 
|---|
| 26 | ; | 
|---|
| 27 | I PRCPSS G PRCPSS1 ; checks not valid for supply station posting | 
|---|
| 28 | ; | 
|---|
| 29 | W !!,"CHECKING ITEMS ON ORDER..." | 
|---|
| 30 | S (ITEMDA,PRCPFLAG)=0 F  S ITEMDA=$O(^PRCP(445.3,ORDERDA,1,ITEMDA)) Q:'ITEMDA  S QUANTITY=$P($G(^(ITEMDA,0)),"^",2) I QUANTITY D  I PRCPFLAG Q | 
|---|
| 31 | .   I $$ITEMCHK^PRCPOPER(PRCPPRIM,PRCPSECO,ITEMDA)'="" S PRCPFLAG=1 Q | 
|---|
| 32 | I PRCPFLAG S VALMSG="ORDER CANNOT BE POSTED - FIX ALL ERRORS FIRST" D CHECKORD^PRCPOPER Q | 
|---|
| 33 | W " NO ERRORS FOUND !",! | 
|---|
| 34 | ; | 
|---|
| 35 | I $P($G(^PRCP(445.3,ORDERDA,0)),"^",7)="" D  Q:$G(PRCPFLAG) | 
|---|
| 36 | .   S XP="Do you want to print the picking ticket before posting",XH="Enter YES to print the picking ticket, NO to skip printing it, or ^ to exit." | 
|---|
| 37 | .   S %=$$YN^PRCPUYN(1) I %<1 S PRCPFLAG=1 Q | 
|---|
| 38 | .   I %'=1 Q | 
|---|
| 39 | .   D PICKLM^PRCPOPT | 
|---|
| 40 | ; | 
|---|
| 41 | S XP="Are you sure you want to POST this order to "_$$INVNAME^PRCPUX1(+$P($G(^PRCP(445.3,+ORDERDA,0)),"^",3)),XH="Enter 'YES' to start posting the order to the secondary inventory point",XH(1)="Enter 'NO' or '^' to exit." | 
|---|
| 42 | W ! I $$YN^PRCPUYN(1)'=1 Q | 
|---|
| 43 | ; | 
|---|
| 44 | L +^PRCP(445,PRCPPRIM,1):5 | 
|---|
| 45 | I '$T D SHOWWHO^PRCPULOC(445,PRCPPRIM_"-1",0) Q | 
|---|
| 46 | L +^PRCP(445,PRCPSECO,1):5 I '$T D  Q | 
|---|
| 47 | . L -^PRCP(445,PRCPPRIM,1) | 
|---|
| 48 | . D SHOWWHO^PRCPULOC(445,PRCPSECO_"-1",0) | 
|---|
| 49 | D ADD^PRCPULOC(445,PRCPPRIM_"-1",0,"Distribution Order Processing") | 
|---|
| 50 | D ADD^PRCPULOC(445,PRCPSECO_"-1",0,"Distribution Order Processing") | 
|---|
| 51 | ; | 
|---|
| 52 | W !,"POSTING DISTRIBUTION ORDER ..." | 
|---|
| 53 | ; | 
|---|
| 54 | ;  if patient is on order, add entry | 
|---|
| 55 | PRCPSS1 ;  use the same transaction register numbers fr the entire order | 
|---|
| 56 | S PRCPPORD=$$ORDERNO^PRCPUTRX(PRCPPRIM) | 
|---|
| 57 | S PRCPSORD=$$ORDERNO^PRCPUTRX(PRCPSECO) | 
|---|
| 58 | ; | 
|---|
| 59 | I $P($G(^PRCP(445.3,ORDERDA,2)),"^") S DATA=^(2) D | 
|---|
| 60 | .   S PRCPPTDA=+$P(DATA,"^",3) I $D(^PRCP(446.1,PRCPPTDA,0)) Q | 
|---|
| 61 | .   S PRCPPTDA=$$PATIENT^PRCPUPAT(+$P(DATA,"^"),+$P(DATA,"^",2)) | 
|---|
| 62 | .   I 'PRCPPTDA Q | 
|---|
| 63 | .   S $P(^PRCP(445.3,ORDERDA,2),"^",3)=PRCPPTDA | 
|---|
| 64 | .   S $P(^PRCP(446.1,PRCPPTDA,0),"^",6)=PRCPSECO | 
|---|
| 65 | ; | 
|---|
| 66 | ;  store case carts and instrument kits in | 
|---|
| 67 | ;  ^tmp($j,"prcpopccik",itemda)=qty for cc/ik item posting | 
|---|
| 68 | K ^TMP($J,"PRCPOPCCIK") | 
|---|
| 69 | ; | 
|---|
| 70 | ;  post order | 
|---|
| 71 | S ITEMDA=0 F  S ITEMDA=$O(^PRCP(445.3,ORDERDA,1,ITEMDA)) Q:'ITEMDA  S ORDRDATA=$G(^(ITEMDA,0)) D | 
|---|
| 72 | .   S (QTYDUE,QUANTITY)=$P(ORDRDATA,"^",2) | 
|---|
| 73 | .   S PRCPOH=$P($G(^PRCP(445,PRCPPRIM,1,ITEMDA,0)),"^",7) | 
|---|
| 74 | .   I PRCPOH+0=0 S PRCPOH=0 | 
|---|
| 75 | .   I QUANTITY>PRCPOH S QUANTITY=PRCPOH | 
|---|
| 76 | .   I PRCPOH<0 S QUANTITY=0 | 
|---|
| 77 | .   I PRCPSS S QUANTITY=$P(ORDRDATA,"^",7) ; use qty that was stocked | 
|---|
| 78 | .   ; | 
|---|
| 79 | .   ;  if case cart or instrument kit, set tmp global | 
|---|
| 80 | .   I $D(^PRCP(445.7,ITEMDA,0))!($D(^PRCP(445.8,ITEMDA,0))) S:QUANTITY>0 ^TMP($J,"PRCPOPCCIK",ITEMDA)=QUANTITY Q | 
|---|
| 81 | .   ; | 
|---|
| 82 | .   S ITEMDATA=^PRCP(445,PRCPPRIM,1,ITEMDA,0) | 
|---|
| 83 | .   S UNITCOST=+$P(ITEMDATA,"^",22) I 'UNITCOST S UNITCOST=+$P(ITEMDATA,"^",15) | 
|---|
| 84 | .   I 'UNITCOST S UNITCOST=+$P(ORDRDATA,"^",3) | 
|---|
| 85 | .   S TOTCOST=$J(QUANTITY*UNITCOST,0,2) | 
|---|
| 86 | .   ; | 
|---|
| 87 | .   ; | 
|---|
| 88 | .   I QTYDUE'=0 D | 
|---|
| 89 | .   .   I 'PRCPSS!(PRCPSS&$D(^PRCP(445,PRCPPRIM,1,ITEMDA))) D | 
|---|
| 90 | .   .   .   ;  sell from primary | 
|---|
| 91 | .   .   .   K PRCPOPP | 
|---|
| 92 | .   .   .   S PRCPOPP("QTY")=-QUANTITY,PRCPOPP("DUEOUT")=-QTYDUE,PRCPOPP("INVVAL")=-TOTCOST,PRCPOPP("OTHERPT")=PRCPSECO,PRCPOPP("ORDERDA")=ORDERDA | 
|---|
| 93 | .   .   .   D SALE^PRCPOPPP(PRCPPRIM,ITEMDA,PRCPPORD,.PRCPOPP) | 
|---|
| 94 | .   .   ; | 
|---|
| 95 | .   .   I 'PRCPSS!(PRCPSS&$D(^PRCP(445,PRCPSECO,1,ITEMDA))) D | 
|---|
| 96 | .   .   .   ;  receipt in secondary | 
|---|
| 97 | .   .   .   S CONVFACT=$P($$GETVEN^PRCPUVEN(PRCPSECO,ITEMDA,PRCPPRIM_";PRCP(445,",1),"^",4) | 
|---|
| 98 | .   .   .   K PRCPOPP | 
|---|
| 99 | .   .   .   S PRCPOPP("QTY")=QUANTITY*CONVFACT,PRCPOPP("DUEIN")=-QTYDUE*CONVFACT,PRCPOPP("INVVAL")=TOTCOST,PRCPOPP("OTHERPT")=PRCPPRIM | 
|---|
| 100 | .   .   .   ;  if patient, distribute from secondary to patient | 
|---|
| 101 | .   .   .   I $G(PRCPPTDA) S PRCPOPP("PRCPPTDA")=PRCPPTDA | 
|---|
| 102 | .   .   .   D RECEIPT^PRCPOPPP(PRCPSECO,ITEMDA,PRCPSORD,.PRCPOPP) | 
|---|
| 103 | .   .   .   Q | 
|---|
| 104 | .   ; | 
|---|
| 105 | .   ;  Set quantity posted into item multiple | 
|---|
| 106 | .   I 'PRCPSS S $P(^PRCP(445.3,ORDERDA,1,ITEMDA,0),"^",7)=QUANTITY | 
|---|
| 107 | ; | 
|---|
| 108 | ;  Set up posted status | 
|---|
| 109 | S $P(^PRCP(445.3,ORDERDA,0),"^",6)="P",$P(^(0),"^",9)=DT | 
|---|
| 110 | ; | 
|---|
| 111 | ;  if an item is a cc or ik | 
|---|
| 112 | I $O(^TMP($J,"PRCPOPCCIK",0)) D | 
|---|
| 113 | .   ; if interactive, display screen to post items in cc and iks | 
|---|
| 114 | .   I 'PRCPSS D EN^VALM("PRCP DIST ORDER CC/IK POSTING") | 
|---|
| 115 | .   I PRCPSS D  ; mark amount rec'd as 0, so user gets message | 
|---|
| 116 | .   .  N PRCPAMT | 
|---|
| 117 | .   .  S DIE="^PRCP(445.3,"_ORDERDA_",1," | 
|---|
| 118 | .   .  S DA=PRCPITEM | 
|---|
| 119 | .   .  S PRCPAMT="@" ; delete entry to invoke bulletin to user | 
|---|
| 120 | .   .  S DR="6///^S X=PRCPAMT" | 
|---|
| 121 | .   .  D ^DIE K DIE | 
|---|
| 122 | .   .  Q | 
|---|
| 123 | .   Q | 
|---|
| 124 | ; | 
|---|
| 125 | I 'PRCPSS D | 
|---|
| 126 | . D CLEAR^PRCPULOC(445,PRCPPRIM_"-1",0),CLEAR^PRCPULOC(445,PRCPSECO_"-1",0) | 
|---|
| 127 | . L -^PRCP(445,PRCPPRIM,1),-^PRCP(445,PRCPSECO,1) | 
|---|
| 128 | ; | 
|---|
| 129 | Q | 
|---|