[613] | 1 | PRCPPOL1 ;WISC/RFJ-receive purchase order (list manager) ; 6/18/01 1:21pm
|
---|
| 2 | ;;5.1;IFCAP;**34**;Oct 20, 2000
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | ;
|
---|
| 7 | RECEIVE ; start receiving po into inventory point
|
---|
| 8 | D FULL^VALM1
|
---|
| 9 | S VALMBCK="R"
|
---|
| 10 | N X
|
---|
| 11 | I $G(PRCPFLAG) D Q
|
---|
| 12 | . K X S X(1)="You must FIX all errors before receiving this purchase order into your inventory point. Failure to correctly fix the errors may lead to incorrect values in your inventory point."
|
---|
| 13 | . D DISPLAY^PRCPUX2(5,75,.X)
|
---|
| 14 | . D R^PRCPUREP
|
---|
| 15 | ;
|
---|
| 16 | I $G(PRCPFCOS) D
|
---|
| 17 | . K X S X(1)="This is a friendly WARNING. There are items on this purchase order which are either not stored in your inventory point OR have not been costed to a distribution point."
|
---|
| 18 | . S X(2)="If you continue receiving this purcase order, these items will NOT be received or costed to any inventory point."
|
---|
| 19 | . D DISPLAY^PRCPUX2(5,75,.X)
|
---|
| 20 | ;
|
---|
| 21 | N %,DATA,DRUGACCT,ISMSFLAG,ITEMDA,ITEMDATA,LINEDA,ORDERNO,PONO,PRCPPOL1,QTYRECVE,QUANTITY,REFDA,TOTCOST,TRANDA,TRANID,Y
|
---|
| 22 | I PRCPTYPE="P",$P($G(^PRCP(445,PRCPINPT,0)),"^",20)="D" S X="PSAGIP" I $D(^%ZOSF("TEST")) X ^("TEST") I $T S DRUGACCT=1 K X S X(1)="NOTE: This is a DRUG ACCOUNTABILITY inventory point." D DISPLAY^PRCPUX2(1,79,.X)
|
---|
| 23 | ;
|
---|
| 24 | S XP="ARE YOU SURE YOU WANT TO RECEIVE THIS PURCHASE ORDER"
|
---|
| 25 | W ! I $$YN^PRCPUYN(1)'=1 Q
|
---|
| 26 | ;
|
---|
| 27 | CHKFINAL ;This block of the code will check and flag any incomplete Partial
|
---|
| 28 | ;receipt for selected Final PO. NOIS=LIT-0800-72295.
|
---|
| 29 | G:'$D(^PRC(442,PRCPORDR,11,0)) OKFINAL
|
---|
| 30 | N LOOPCNT,PARTMSG,PARTNUM,PARTCNT,NODATA
|
---|
| 31 | S LOOPCNT=1,(CHKDATA,PARTMSG,PARTCNT,NODATA)=0
|
---|
| 32 | S PARTNUM=""
|
---|
| 33 | S PARTCNT=$P($G(^PRC(442,PRCPORDR,11,0)),"^",4)
|
---|
| 34 | I PARTCNT'="" G:PARTCNT'=PRCPPART OKFINAL
|
---|
| 35 | I (PARTCNT'=""),(PARTCNT>0) S PARTCNT=PARTCNT-1
|
---|
| 36 | F LOOPCNT=1:1:PARTCNT D
|
---|
| 37 | .S CHKDATA=$G(^PRC(442,PRCPORDR,11,LOOPCNT,0))
|
---|
| 38 | .I CHKDATA="" S NODATA=1
|
---|
| 39 | .I $P(CHKDATA,"^",16)="" S PARTMSG=1,PARTNUM=PARTNUM_LOOPCNT_","
|
---|
| 40 | G:'PARTMSG OKFINAL
|
---|
| 41 | I PARTMSG D Q
|
---|
| 42 | . S WRD1="number: " S:$L(PARTNUM)>2 WRD1="numbers: "
|
---|
| 43 | . S WRD2="is" S:$L(PARTNUM)>2 WRD2="are"
|
---|
| 44 | . S PARTNUM=$E(PARTNUM,1,$L(PARTNUM)-1)
|
---|
| 45 | . K X S X(1)=" WARNING: There is more than one partial pending receipt for this purchase order."
|
---|
| 46 | . S X(2)="Please make sure that receipts are posted in sequence order to prevent any problem."
|
---|
| 47 | . S X(3)="Partial "_WRD1_PARTNUM_" "_WRD2_" missing for this purchase order."
|
---|
| 48 | . D DISPLAY^PRCPUX2(5,75,.X)
|
---|
| 49 | . D R^PRCPUREP
|
---|
| 50 | . K LOOPCNT,CHKDATA,PARTMSG,PARTNUM,NODATA,WRD1,WRD2
|
---|
| 51 | ;
|
---|
| 52 | OKFINAL ;
|
---|
| 53 | L +^PRCP(445,PRCPINPT,1):5 I '$T D SHOWWHO^PRCPULOC(445,PRCPINPT_"-1",0),R^PRCPUREP Q
|
---|
| 54 | D ADD^PRCPULOC(445,PRCPINPT_"-1",0,"Receive Purchase Order")
|
---|
| 55 | ;
|
---|
| 56 | S ORDERNO=$$ORDERNO^PRCPUTRX(PRCPINPT)
|
---|
| 57 | S LINEDA=0 F S LINEDA=$O(^TMP($J,"PRCPPOLMREC",LINEDA)) Q:'LINEDA S DATA=^(LINEDA) D
|
---|
| 58 | . S ITEMDA=$P(DATA,"^"),QTYRECVE=$P(DATA,"^",2),TOTCOST=$P(DATA,"^",3),TRANDA=$P(DATA,"^",4)
|
---|
| 59 | . I '$D(^PRCP(445,PRCPINPT,1,ITEMDA,0)) S %=$G(^TMP($J,"PRCPPOLMCOS",LINEDA)) D:$P(%,"^",2) COSTCNTR^PRCPUCC($P(%,"^",2),PRCPINPT,$P(%,"^",3),TOTCOST) Q
|
---|
| 60 | . ;
|
---|
| 61 | . ; for items stored in the inventory point
|
---|
| 62 | . ; update beginning balance
|
---|
| 63 | . I '$D(^PRCP(445.1,PRCPINPT,1,ITEMDA,1,$E(DT,1,5),0)) D BALANCE^PRCPUBAL(PRCPINPT,ITEMDA,$E(DT,1,5))
|
---|
| 64 | . ;
|
---|
| 65 | . ; update inventory point
|
---|
| 66 | . S ITEMDATA=^PRCP(445,PRCPINPT,1,ITEMDA,0)
|
---|
| 67 | . S $P(ITEMDATA,"^",7)=$P(ITEMDATA,"^",7)+QTYRECVE
|
---|
| 68 | . S $P(ITEMDATA,"^",27)=$P(ITEMDATA,"^",27)+TOTCOST
|
---|
| 69 | . ; update average cost
|
---|
| 70 | . S $P(ITEMDATA,"^",22)=0,QUANTITY=$P(ITEMDATA,"^",7)+$P(ITEMDATA,"^",19)
|
---|
| 71 | . I QUANTITY>0 S $P(ITEMDATA,"^",22)=$J($P(ITEMDATA,"^",27)/QUANTITY,0,3) I $P(ITEMDATA,"^",22)'>0 S $P(ITEMDATA,"^",22)=0
|
---|
| 72 | . ; update last cost in invpt
|
---|
| 73 | . S $P(ITEMDATA,"^",15)=$J(TOTCOST/QTYRECVE,0,3),$P(ITEMDATA,"^",3)=DT
|
---|
| 74 | . S ^PRCP(445,PRCPINPT,1,ITEMDA,0)=ITEMDATA
|
---|
| 75 | . ;
|
---|
| 76 | . ; update last cost for supply whse vendor in IM file
|
---|
| 77 | . I PRCPTYPE="W",$D(^PRC(441,ITEMDA,2,+$O(^PRC(440,"AC","S",0)),0)) S $P(^(0),"^",2)=$S($P(ITEMDATA,"^",15)>$P(ITEMDATA,"^",22):$P(ITEMDATA,"^",15),1:$P(ITEMDATA,"^",22))
|
---|
| 78 | . ; update due-in
|
---|
| 79 | . D OUTST^PRCPUTRA(PRCPINPT,ITEMDA,TRANDA,-QTYRECVE)
|
---|
| 80 | . ; update receipt history
|
---|
| 81 | . D RECEIPTS^PRCPUSAG(PRCPINPT,ITEMDA,QTYRECVE)
|
---|
| 82 | . ; update drug accountability
|
---|
| 83 | . I $G(DRUGACCT) S %=+$P(ITEMDATA,"^",29) S:'% %=1 D EN^PSAGIP(PRCPINPT,ITEMDA,QTYRECVE*%,TRANDA,PRCPORDN,"RC"_ORDERNO,TOTCOST)
|
---|
| 84 | . ; transaction register
|
---|
| 85 | . I ORDERNO D
|
---|
| 86 | . . K PRCPPOL1
|
---|
| 87 | . . S PRCPPOL1("QTY")=QTYRECVE,(PRCPPOL1("INVVAL"),PRCPPOL1("SELVAL"))=TOTCOST,PRCPPOL1("PKG")=$P(DATA,"^",5),PRCPPOL1("2237PO")=PRCPORDN,PRCPPOL1("REF")=$E($P(PRCPORDN,"-",2))_$E($P(PRCPORDN,"-",2),3,6)
|
---|
| 88 | . . D ADDTRAN^PRCPUTRX(PRCPINPT,ITEMDA,"RC",ORDERNO,.PRCPPOL1)
|
---|
| 89 | ;
|
---|
| 90 | I $G(DRUGACCT) D EX^PSAGIP
|
---|
| 91 | ; enter receiving information for partial
|
---|
| 92 | S Y="" D ENCODE^PRCHES2(PRCPORDR,PRCPPART,+DUZ,.Y) I Y>0 D NOW^%DTC S $P(^PRC(442,PRCPORDR,11,PRCPPART,0),"^",17,18)=%_"^"_+DUZ
|
---|
| 93 | ; clean up outstanding transactions
|
---|
| 94 | I $P(^PRC(442,PRCPORDR,11,PRCPPART,0),"^",9)="F" D
|
---|
| 95 | . S REFDA=0 F S REFDA=$O(^PRC(442,PRCPORDR,13,REFDA)) Q:'REFDA S TRANDA=$P(^(REFDA,0),"^"),LINEDA=0 F S LINEDA=$O(^PRCS(410,TRANDA,"IT",LINEDA)) Q:'LINEDA D KILLTRAN^PRCPUTRA(PRCPINPT,+$P(^(LINEDA,0),"^",5),TRANDA)
|
---|
| 96 | K X S X(1)="***** RECEIVING HAS BEEN POSTED *****" D DISPLAY^PRCPUX2(2,40,.X)
|
---|
| 97 | D CLEAR^PRCPULOC(445,PRCPINPT_"-1",0)
|
---|
| 98 | L -^PRCP(445,PRCPINPT,1)
|
---|
| 99 | K VALMBCK
|
---|
| 100 | I PRCPTYPE'="W" D R^PRCPUREP Q
|
---|
| 101 | ;
|
---|
| 102 | ; create code sheets
|
---|
| 103 | K X S X(1)="The program will automatically create and transmit the code sheets to Austin. Please verify the accuracy of the data and submit adjustment code sheets if necessary."
|
---|
| 104 | D DISPLAY^PRCPUX2(2,75,.X)
|
---|
| 105 | S PRCPFLAG=0,PONO=PRCPORDN,TRANID="RC"_ORDERNO
|
---|
| 106 | S ISMSFLAG=$$ISMSFLAG^PRCPUX2(PRC("SITE")) I ISMSFLAG'=2 D DQ^PRCPSLOR
|
---|
| 107 | I ISMSFLAG=2 D DQ^PRCPSMPR
|
---|
| 108 | D R^PRCPUREP
|
---|
| 109 | Q
|
---|