| 1 | PRCPWIU ;WISC/RFJ/DGL-update duein (difference between PO and 2237; ; 6/18/01 3:09pm | 
|---|
| 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 | UPDATE ;  update dueins (called from PRCH routines); | 
|---|
| 8 | ;  da=internal purchase order number | 
|---|
| 9 | N %,ACTDUEIN,CANCFLAG,CONV,D,DATA,DUEIN,ITEMDA,INVPT,LI,OUTST,TRAN,TRANDA,VENDOR | 
|---|
| 10 | N NEWPO | 
|---|
| 11 | I $D(^PRC(442,DA,23)) S NEWPO=$P($G(^PRC(442,DA,23)),"^",4) | 
|---|
| 12 | I $P($G(^PRC(442,DA,7)),"^")=45,NEWPO="" S CANCFLAG=1 | 
|---|
| 13 | ;  get original duein qty from transactions | 
|---|
| 14 | ;  remove due-in if po cancelled (cancflag=1) | 
|---|
| 15 | K ^TMP($J,"PRCP") | 
|---|
| 16 | S TRANDA=0 F  S TRANDA=$O(^PRC(442,DA,13,TRANDA)) Q:'TRANDA  S INVPT=+$P($G(^(TRANDA,0)),"^",11) I INVPT D | 
|---|
| 17 | .   I $D(^TMP($J,"PRCP"))'=10 W !,"...checking on due-ins at inventory point(s)..." | 
|---|
| 18 | .   S ^TMP($J,"PRCP","I",TRANDA)=INVPT | 
|---|
| 19 | .   S LI=0 F  S LI=$O(^PRCS(410,TRANDA,"IT",LI)) Q:'LI  S D=$G(^(LI,0)) D | 
|---|
| 20 | .   .   S ITEMDA=+$P(D,"^",5),OUTST=$G(^PRCP(445,INVPT,1,ITEMDA,7,TRANDA,0)) I OUTST="" Q | 
|---|
| 21 | .   .   ;  if order is cancelled, remove due-in | 
|---|
| 22 | .   .   I $G(CANCFLAG) D KILLTRAN^PRCPUTRA(INVPT,ITEMDA,TRANDA) Q | 
|---|
| 23 | .   .   S CONV=+$P(OUTST,"^",5) S:'CONV CONV=1 | 
|---|
| 24 | .   .   S ^("ORIG")=$G(^TMP($J,"PRCP","D",INVPT,ITEMDA,TRANDA,"ORIG"))+($P(D,"^",2)*CONV) | 
|---|
| 25 | I $G(CANCFLAG) K ^TMP($J,"PRCP") Q | 
|---|
| 26 | ; | 
|---|
| 27 | ;  get actual duein quantity from purchase order | 
|---|
| 28 | S VENDOR=+$P($G(^PRC(442,DA,1)),"^"),TRANDA=+$P($G(^PRC(442,DA,0)),"^",12),LI=0 | 
|---|
| 29 | F  S LI=$O(^PRC(442,DA,2,LI)) Q:'LI  S D=$G(^(LI,0)) D | 
|---|
| 30 | .   S ITEMDA=+$P(D,"^",5) I 'ITEMDA,$P(D,"^",13)'="" S ITEMDA=+$O(^PRC(441,"BB",$P(D,"^",13),0)) | 
|---|
| 31 | .   S TRAN=+$P(D,"^",10) S:'TRAN TRAN=TRANDA S INVPT=+$G(^TMP($J,"PRCP","I",TRANDA)) | 
|---|
| 32 | .   I '$D(^PRCP(445,INVPT,1,ITEMDA,0)) Q | 
|---|
| 33 | .   S OUTST=$G(^PRCP(445,INVPT,1,ITEMDA,7,TRANDA,0)) | 
|---|
| 34 | .   S DATA=$$GETVEN^PRCPUVEN(INVPT,ITEMDA,VENDOR_";PRC(440,",0),CONV=$P(DATA,"^",4) S:'CONV CONV=+$P(OUTST,"^",5) S:'CONV CONV=1 | 
|---|
| 35 | .   ;  get correct units for outstanding transaction of they exist | 
|---|
| 36 | .   S $P(DATA,"^",4)=CONV S:'$P(DATA,"^",3) $P(DATA,"^",3)=$P(OUTST,"^",4) S:'$P(DATA,"^",2) $P(DATA,"^",2)=$P(OUTST,"^",3) | 
|---|
| 37 | .   ;  if units still do not exist, get them from the po | 
|---|
| 38 | .   S:'$P(DATA,"^",2) $P(DATA,"^",2)=$P(D,"^",3) S:'$P(DATA,"^",3) $P(DATA,"^",3)=$P(D,"^",12) | 
|---|
| 39 | .   ;  find qty previously received | 
|---|
| 40 | .   S $P(D,"^",2)=($P(D,"^",2)-$$RECD^PRCPRDI1(DA,LI))\1 S:$P(D,"^",2)<0 $P(D,"^",2)=0 | 
|---|
| 41 | .   S ^("ACT")=$G(^TMP($J,"PRCP","D",INVPT,ITEMDA,TRANDA,"ACT"))+($P(D,"^",2)*CONV),^("UNITS")=$P(DATA,"^",2,4) | 
|---|
| 42 | ;  update current duein qty at inv pt | 
|---|
| 43 | S INVPT=0 F  S INVPT=$O(^TMP($J,"PRCP","D",INVPT)) Q:'INVPT  S ITEMDA=0 F  S ITEMDA=$O(^TMP($J,"PRCP","D",INVPT,ITEMDA)) Q:'ITEMDA  S TRANDA=0 F  S TRANDA=$O(^TMP($J,"PRCP","D",INVPT,ITEMDA,TRANDA)) Q:'TRANDA  D | 
|---|
| 44 | .   S ACTDUEIN=+$G(^TMP($J,"PRCP","D",INVPT,ITEMDA,TRANDA,"ACT")),OUTST=$G(^PRCP(445,INVPT,1,ITEMDA,7,TRANDA,0)),DUEIN=+$P(OUTST,"^",2) | 
|---|
| 45 | .   I DUEIN'=0,ACTDUEIN=DUEIN D CHECK Q  ;actual and current duein are the same | 
|---|
| 46 | .   I ACTDUEIN=0 D KILLTRAN^PRCPUTRA(INVPT,ITEMDA,TRANDA) Q  ;actual duein=0, remove transaction,decrement dueins | 
|---|
| 47 | .   I ACTDUEIN'=0,OUTST="" D ADDTRAN^PRCPUTRA(INVPT,ITEMDA,TRANDA,ACTDUEIN_"^"_$G(^TMP($J,"PRCP","D",INVPT,ITEMDA,TRANDA,"UNITS"))),CHECK Q  ;actual duein and no outstanding transaction | 
|---|
| 48 | .   D OUTST^PRCPUTRA(INVPT,ITEMDA,TRANDA,ACTDUEIN-DUEIN),CHECK | 
|---|
| 49 | K ^TMP($J,"PRCP") | 
|---|
| 50 | Q | 
|---|
| 51 | ; | 
|---|
| 52 | ; | 
|---|
| 53 | CHECK ;  make sure units and data on outstanding transaction is correct | 
|---|
| 54 | S %=$G(^PRCP(445,INVPT,1,ITEMDA,7,TRANDA,0)),DATA=$G(^TMP($J,"PRCP","D",INVPT,ITEMDA,TRANDA,"UNITS")) I %=""!(DATA="") Q | 
|---|
| 55 | Q:$P(DATA,"^",1,3)=$P(%,"^",3,5)  S:+$P(DATA,"^") $P(%,"^",3)=$P(DATA,"^") S:+$P(DATA,"^",2) $P(%,"^",4)=$P(DATA,"^",2) S:+$P(DATA,"^",3) $P(%,"^",5)=$P(DATA,"^",3) S ^PRCP(445,INVPT,1,ITEMDA,7,TRANDA,0)=% | 
|---|
| 56 | Q | 
|---|