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