Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PRCVPOU

PRCVPOU.m

Go to the documentation of this file.
PRCVPOU ;WOIFO/AS-SEND PO AMENDMENT TO DYNAMED ; 01/24/05
 ;;5.1;IFCAP;**81**;Oct 20, 2000
 ;Per VHA Directive 10-93-142, this routine should not be modified.
 ;
 ; PO amendment
 ; Input: PRCHPO (PO number)
 ;        PRCHAM (amendment number)
 ; Called from PRCHAM (Amendment to Purchase Order/Card)
 ;             PRCFFMOM (Amendment Processing)
 ;
 Q
ENT(PRCHPO,PRCHAM) ;
 N AMEND,PRCV,CHG,FLD,ITM,NPO,NXT,ALL,EXT,AMD,PRCVP,DIQ,DIC,DA,DR,DONE
 S AMEND=0,DIQ="PRCVP",DIQ(0)="IE",DIC=442,DA=PRCHPO,DR=".07;7;62"
 D EN^DIQ1
 S EXT=PRCVP(442,PRCHPO,62,"E"),DONE=0
 I EXT']"" S EXT=PRCVP(442,PRCHPO,.07,"E")
 S $P(EXT,"^",2)=PRCVP(442,PRCHPO,7,"I") ; delivery date
 F  S AMEND=$O(^PRC(442,PRCHPO,6,PRCHAM,3,"AC",AMEND)) Q:AMEND'>0  D
 . S NXT="E"_+AMEND
 . I $T(@NXT)'="" D @NXT
 Q
E22 ;Line Item Delete
 S FLD=0 K PRCV("DEL"),^TMP("PRCV442A",$J,PRCHPO)
 F  S FLD=$O(^PRC(442,PRCHPO,6,PRCHAM,3,"AC",22,FLD)) Q:FLD'>0  D
 . S CHG=0
 . F  S CHG=$O(^PRC(442,PRCHPO,6,PRCHAM,3,"AC",22,FLD,CHG)) Q:CHG'>0  D
 .. S ITM=+$P($G(^PRC(442,PRCHPO,6,PRCHAM,3,CHG,0)),"^",4)
 .. S PRCV("DEL",ITM)=""
 .. ; only item with DM document ID will be passed back
 .. D ITEM
 .. ; Insert Amendment Type of "Line Item Delete"
 .. S:$D(^TMP("PRCV442A",$J,PRCHPO,ITM)) $P(^(ITM),"^",14)=2
 ;    create header only if item exist
 I $D(^TMP("PRCV442A",$J,PRCHPO)) D 
 . D HEADER
 . ;    If there is no Line Item Edit, send out this message
 . I '$D(^PRC(442,PRCHPO,6,PRCHAM,3,"AC",23)) D SEND
 Q
E23 ;Line Item Edit
 ;  If delivery date changed, send all items, Quit
 I PRCFA("DLVDATE")'=$P(EXT,"^",2) S ALL=1 D ALLITEM Q
 ;
 S FLD=0 K PRCV("EDT")
 ;    remove duplicated line item
 F  S FLD=$O(^PRC(442,PRCHPO,6,PRCHAM,3,"AC",23,FLD)) Q:'FLD  D
 . S CHG=0
 . F  S CHG=$O(^PRC(442,PRCHPO,6,PRCHAM,3,"AC",23,FLD,CHG)) Q:'CHG  D
 .. S ITM=+$P($G(^PRC(442,PRCHPO,6,PRCHAM,3,CHG,0)),"^",4)
 .. ;   no transmission if item already deleted
 .. S:'$D(PRCV("DEL",ITM)) PRCV("EDT",ITM)=""
 ;
 ; Process edited line items after duplicated lines removed
 S ITM=0
 F  S ITM=$O(PRCV("EDT",ITM)) Q:'ITM  D
 . D ITEM
 . ; Insert Amendment Type of "Line Item Edit"
 . S:$D(^TMP("PRCV442A",$J,PRCHPO,ITM)) $P(^(ITM),"^",14)=1
 ;
 ;    create header only if item exist
 I $D(^TMP("PRCV442A",$J,PRCHPO)) D HEADER,SEND S DONE=1
 Q
E31 ; Change Vendor
 ;    Send new vendor only
 ;       New vendor already in 442
 ;          No need to find it elsewhere
 S ALL=3
 D ALLITEM S DONE=1
 Q
E32 ; Replace PO Number
 ;    Send new PO number information including DynaMed Doc ID
 S NPO=$P($G(^PRC(442,PRCHPO,23)),"^",4)
 Q:'NPO
 S PRCHPO=NPO
 S ALL=4
 D ALLITEM
 Q
E34 ; Authority Edit
 Q:DONE    ; if Change Vendor and Line Edit already done.
 ;  If change to delivery date only without any other amendment
 ;  Authority Edit became No Charge Amendment
 I $P($G(^PRC(442,PRCHPO,6,PRCHAM,0)),"^",4)'=5,PRCFA("DLVDATE")'=$P(EXT,"^",2) D
 . S ALL=1 D ALLITEM
 ;    Send PO Cancelled only
 Q:$P($G(^PRC(442,PRCHPO,6,PRCHAM,0)),"^",4)'=5
 ; change amendment type to Cancel
 S ALL=5
 D ALLITEM
 Q
 ;
 ; Get PO header information
 D PO^PRCV442A(PRCHPO)
 ;   Change transaction type to PO Amendment
 S $P(^TMP("PRCV442A",$J,PRCHPO),"^",2)=2
 ;   Amendment signed date
 S $P(^TMP("PRCV442A",$J,PRCHPO),"^",7)=$P($G(^PRC(442,PRCHPO,6,PRCHAM,1)),"^",3)
 Q
ITEM ;
 D ITEM^PRCV442A(PRCHPO,ITM,EXT)
 Q
ALLITEM ;
 ; If header level amendment, send all items to DynaMed
 ;     1.   Collect all deleted item
 K ^TMP("PRCV442A",$J,PRCHPO),PRCV("DEL")
 S AMD=0 F  S AMD=$O(^PRC(442,PRCHPO,6,AMD)) Q:'AMD  D
 . S FLD=0
 . F  S FLD=$O(^PRC(442,PRCHPO,6,AMD,3,"AC",22,FLD)) Q:'FLD  D
 .. S CHG=0
 .. F  S CHG=$O(^PRC(442,PRCHPO,6,AMD,3,"AC",22,FLD,CHG)) Q:'CHG  D
 ... S ITM=+$P($G(^PRC(442,PRCHPO,6,AMD,3,CHG,0)),"^",4)
 ... S PRCV("DEL",ITM)=""
 ;     2.   pickup all items to DynaMed except deleted items
 S ITM=0 F  S ITM=$O(^PRC(442,PRCHPO,2,ITM)) Q:'ITM  D
 . I '$D(PRCV("DEL",ITM)) D ITEM
 . S:$D(^TMP("PRCV442A",$J,PRCHPO,ITM)) $P(^(ITM),"^",14)=ALL
 ;    create header and send only if item exist
 I $D(^TMP("PRCV442A",$J,PRCHPO)) D HEADER,SEND
 Q
SEND ;
 ;  Do not send if no item collected
 Q:'$O(^TMP("PRCV442A",$J,PRCHPO,0))
 M ^TMP("ASU442A",$J)=^TMP("PRCV442A",$J)
 D EN^PRCVPOSD(PRCHPO)
 Q