| [613] | 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
 | 
|---|