| 1 | PRCHMA0 ;WISC/AKS-Amendments to purchase orders and requisitions ;3/5/97  15:05 | 
|---|
| 2 | ;;5.1;IFCAP;**97**;Oct 20, 2000 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | EN1 ;Ship to edit | 
|---|
| 5 | N DR,DIE,DA,DIE,PRCH0 | 
|---|
| 6 | S PRCH0=$G(^PRC(443.6,PRCHPO,0)) | 
|---|
| 7 | S DR=$S($P(PRCH0,U,2)'=4:5.4,1:5.3) | 
|---|
| 8 | S DIE="^PRC(443.6,",DA=PRCHPO D ^DIE | 
|---|
| 9 | S DELIVER=1 W ! | 
|---|
| 10 | Q | 
|---|
| 11 | EN2 ;Line Item add | 
|---|
| 12 | N J,%,%A,%B,DIE,DA,DR,D0,D1,PRCHI,PRCHLC,PRCHSTN,NODE0,PRCHI1,PRCHPONO,BFLAG | 
|---|
| 13 | N X,Y | 
|---|
| 14 | D MV,MVDIS^PRCHMA3 S NODE0=^PRC(443.6,PRCHPO,0),PRCHLC=$P(NODE0,U,14) | 
|---|
| 15 | S J=PRCHLC+1,BFLAG=0 | 
|---|
| 16 | S (I,N,M)=0 F  S N=$O(^PRC(443.6,PRCHPO,2,N)) Q:'N  S I=$P(^(N,0),U),M=N | 
|---|
| 17 | S PRCHI=(I+1)_"^"_J S:$P(^PRC(443.6,PRCHPO,2,0),U,3)<M $P(^(0),U,3)=M | 
|---|
| 18 | S %=2,%A="     ADD LINE ITEM "_+PRCHI,%B="" D ^PRCFYN | 
|---|
| 19 | I %'=1 W ?40,"<NOTHING ADDED>" Q | 
|---|
| 20 | K DD,DO S DA(1)=PRCHPO,X=+PRCHI,DIC="^PRC(443.6,"_DA(1)_",2," | 
|---|
| 21 | S DIC(0)="L" D FILE^DICN K DIC Q:+Y'>0 | 
|---|
| 22 | S PRCHI1=+PRCHI,$P(PRCHI,U)=+Y | 
|---|
| 23 | ;S $P(^PRC(443.6,PRCHPO,2,0),U,3)=$P(PRCHI,U),$P(^(0),U,4)=+PRCHI | 
|---|
| 24 | S $P(NODE0,U,14)=J | 
|---|
| 25 | I $D(^PRC(443.6,PRCHPO,3)) D | 
|---|
| 26 | .S N=0 F  S N=$O(^PRC(443.6,PRCHPO,3,N)) Q:'N  S $P(^PRC(443.6,PRCHPO,3,N,0),U,6)=$P(^PRC(443.6,PRCHPO,3,N,0),U,6)+1 | 
|---|
| 27 | S:$P(NODE0,U,18)]"" $P(NODE0,U,18)=J | 
|---|
| 28 | S ^PRC(443.6,PRCHPO,0)=NODE0 | 
|---|
| 29 | S PRCHEDI=$G(^PRC(440,$P(^PRC(443.6,PRCHPO,1),U),3)) S:PRCHEDI]"" PRCHEDI=$P(PRCHEDI,U,2) | 
|---|
| 30 | S PRCHSTN=$P($P(NODE0,U),"-"),PRCHPONO=$P(NODE0,U) | 
|---|
| 31 | S DIE="^PRC(443.6,",DA=PRCHPO | 
|---|
| 32 | S DR=$S($D(PRCHREQ):"[PRCHRQITM]",1:"[PRCHLINE]"),DIE("NO^")="BACK" | 
|---|
| 33 | I $G(PRCHAUTH)=1 S DR="[PRCH PURCHASE CARD AMEND]" | 
|---|
| 34 | I $G(PRCHAUTH)=2 S DR="[PRCH DELIVERY ORDER AMEND]" | 
|---|
| 35 | S DIE("NO^")="OUTOK" | 
|---|
| 36 | D ^DIE K DIE | 
|---|
| 37 | I $D(^PRC(443.6,PRCHPO,2,+PRCHI,0))  D | 
|---|
| 38 | .S:'$D(^(2)) ^(2)=0 | 
|---|
| 39 | .I $P(^PRC(443.6,PRCHPO,2,+PRCHI,0),U,2)=""  D | 
|---|
| 40 | ..W !,"Line item is being deleted because of incomplete information.",! | 
|---|
| 41 | ..S DA=+PRCHI,DA(1)=PRCHPO,DIK="^PRC(443.6,"_DA(1)_",2,",BFLAG=1 | 
|---|
| 42 | ..D ^DIK | 
|---|
| 43 | I BFLAG=0  D | 
|---|
| 44 | .S DELIVER=1 W ! | 
|---|
| 45 | .D ERCHK^PRCHMA1 K ERROR | 
|---|
| 46 | .S DA(1)=PRCHPO,DA=PRCHI1 D EN12^PRCHAMXG | 
|---|
| 47 | Q | 
|---|
| 48 | EN3 ;Line Item delete | 
|---|
| 49 | N PRCHI,I442,I2Z,DIC,PRCHAREC,DIE,DR,DELIVER,%,%A,%B,PONUM,DIK | 
|---|
| 50 | N PONOEXT,PODS,IENDS | 
|---|
| 51 | D MV,MVDIS^PRCHMA3 S DA(1)=PRCHPO,DIC="^PRC(443.6,"_DA(1)_",2,",DIC(0)="AEQZ" D ^DIC | 
|---|
| 52 | I Y<0 W !?5,"<NOTHING DELETED>" Q | 
|---|
| 53 | S PRCHI=Y | 
|---|
| 54 | I $P($G(^PRC(443.6,PRCHPO,2,+PRCHI,2)),U,8)>0 D  Q | 
|---|
| 55 | .W !?5,"CANNOT DELETE ITEM ",$P(PRCHI,U,2),", IT HAS ALREADY BEEN RECEIVED!",$C(7) | 
|---|
| 56 | S %="",%A="   SURE YOU WANT TO DELETE LINE ITEM "_$P(PRCHI,U,2),%B="" | 
|---|
| 57 | D ^PRCFYN I %'=1 W ?50,"<NOTHING DELETED>" Q | 
|---|
| 58 | S I442=$G(^PRC(442,PRCHPO,2,+PRCHI,0)) I I442="" D  Q | 
|---|
| 59 | .S PONUM=$P(^PRC(443.6,PRCHPO,2,+PRCHI,0),U) | 
|---|
| 60 | .K ^PRC(443.6,PRCHPO,2,"B",PONUM),^PRC(443.6,PRCHPO,2,"C",PONUM) | 
|---|
| 61 | .I $P($G(^PRC(443.6,PRCHPO,2,+PRCHI,0)),U,5)]"" K ^PRC(443.6,PRCHPO,2,"AE",$P(^PRC(443.6,PRCHPO,2,+PRCHI,0),U,5)) | 
|---|
| 62 | .; | 
|---|
| 63 | .;If item was added during amendment process then kill Item/Del. Sch. | 
|---|
| 64 | .S PONOEXT=$P(^PRC(443.6,PRCHPO,0),U),PODS=0 | 
|---|
| 65 | .F  S PODS=$O(^PRC(441.7,"AG",PONOEXT,+PRCHI,PODS)) Q:'PODS  I $D(PODS) S DA=PODS,DIK="^PRC(441.7," D ^DIK | 
|---|
| 66 | .; | 
|---|
| 67 | .K ^PRC(443.6,PRCHPO,2,+PRCHI) | 
|---|
| 68 | .S I2Z=^PRC(443.6,PRCHPO,2,0),$P(I2Z,U,4)=$P(I2Z,U,4)-1 | 
|---|
| 69 | .S ^PRC(443.6,PRCHPO,2,0)=I2Z | 
|---|
| 70 | .S N=0 F I=1:1 S N=$O(^PRC(443.6,PRCHPO,2,N)) Q:'N  D | 
|---|
| 71 | ..S $P(^PRC(443.6,PRCHPO,2,N,0),U)=I | 
|---|
| 72 | .K ^PRC(443.6,PRCHPO,2,"B"),^PRC(443.6,PRCHPO,2,"C") | 
|---|
| 73 | .S DA(1)=PRCHPO,DIK(1)=".01^B^C" | 
|---|
| 74 | .S DIK="^PRC(443.6,"_DA(1)_",2," D ENALL^DIK K N,I,DIK | 
|---|
| 75 | .S J=$P(^PRC(443.6,PRCHPO,0),U,14)-1 | 
|---|
| 76 | .S $P(^PRC(443.6,PRCHPO,0),U,14)=J,$P(^(0),U,18)=J | 
|---|
| 77 | .I $D(^PRC(443.6,PRCHPO,3)) D | 
|---|
| 78 | ..S N=0 F  S N=$O(^PRC(443.6,PRCHPO,3,N)) Q:'N  S $P(^PRC(443.6,PRCHPO,3,N,0),U,6)=$P(^PRC(443.6,PRCHPO,3,N,0),U,6)-1 | 
|---|
| 79 | I $D(^PRC(443.6,PRCHPO,2,+PRCHI,2)),$P(^(2),U,6)>0 S PRCHAREC=1 | 
|---|
| 80 | ; | 
|---|
| 81 | ;If item already exists then either mark or delete the Del. Sch. | 
|---|
| 82 | I I442]"" D | 
|---|
| 83 | .S PONOEXT=$P(^PRC(443.6,PRCHPO,0),U) | 
|---|
| 84 | .S POSC=0 | 
|---|
| 85 | .F  S POSC=$O(^PRC(441.7,"AG",PONOEXT,+PRCHI,POSC)) Q:'POSC  D | 
|---|
| 86 | . . S IENDS=$G(^PRC(441.7,POSC,0)) | 
|---|
| 87 | . . Q:IENDS="" | 
|---|
| 88 | . . S PERM=+$P(IENDS,U,7) | 
|---|
| 89 | . . I PERM>0 S DR="5////D",DIE="^PRC(441.7,",DA=POSC D ^DIE Q | 
|---|
| 90 | . . I PERM'>0 K PRCHNORE S DIK="^PRC(441.7,",DA=POSC D ^DIK  S PRCHNORE=1 Q | 
|---|
| 91 | ; | 
|---|
| 92 | S DR="5///0;2////0" | 
|---|
| 93 | S DA(1)=PRCHPO,DA=+PRCHI | 
|---|
| 94 | S DIE="^PRC(443.6,"_DA(1)_",2," | 
|---|
| 95 | D ^DIE K DIE | 
|---|
| 96 | S DELIVER=1 W ! | 
|---|
| 97 | Q | 
|---|
| 98 | MV ;Move line item information from 442 | 
|---|
| 99 | Q:$D(^PRC(443.6,PRCHPO,2,0))  Q:$P($G(^(0)),U,4)>0  D WAIT^DICD | 
|---|
| 100 | N %X,%Y,N,M,PRCHPO1,OK,PRCHNORE | 
|---|
| 101 | S %X="^PRC(442,PRCHPO,2,",%Y="^PRC(443.6,PRCHPO,2," D %XY^%RCR | 
|---|
| 102 | S $P(^PRC(443.6,PRCHPO,2,0),U,2)=$P(^DD(443.6,40,0),U,2) K ^("C") | 
|---|
| 103 | S PRCHPO1=$P(^PRC(442,PRCHPO,0),"^") | 
|---|
| 104 | Q:'$D(^PRC(442.8,"B",PRCHPO1))  Q:$D(^PRC(441.7,"B",PRCHPO1)) | 
|---|
| 105 | S N=0,M=+$P(^PRC(441.7,0),"^",3) | 
|---|
| 106 | F  S N=$O(^PRC(442.8,"B",PRCHPO1,N)) Q:'N  D | 
|---|
| 107 | MV1 .S M=M+1,OK=$G(^PRC(441.7,M,0)) I OK'="" G MV1 | 
|---|
| 108 | .S ^PRC(441.7,M,0)=^PRC(442.8,N,0) | 
|---|
| 109 | .S $P(^PRC(441.7,M,0),U,7)=N | 
|---|
| 110 | .S $P(^PRC(441.7,0),"^",3)=M | 
|---|
| 111 | .S $P(^PRC(441.7,0),"^",4)=$P(^(0),"^",4)+1 | 
|---|
| 112 | .S DIK="^PRC(441.7,",DA=M D IX^DIK K DIK,DA | 
|---|
| 113 | .Q | 
|---|
| 114 | Q | 
|---|
| 115 | ONLY ;Make sure only 'Cancel' amendment | 
|---|
| 116 | S PRCHON=0 | 
|---|
| 117 | I $P($G(^PRC(443.6,PRCHPO,6,PRCHAM,3,0)),U,4)>2 D ERR Q | 
|---|
| 118 | I $P($G(^PRC(443.6,PRCHPO,6,PRCHAM,3,0)),U,4)=2 D  Q | 
|---|
| 119 | .I $P($G(^PRC(443.6,PRCHPO,6,PRCHAM,3,2,0)),U,2)'=34 D ERR Q | 
|---|
| 120 | .S PRCHON=1 | 
|---|
| 121 | S PRCHON=1 | 
|---|
| 122 | QUIT | 
|---|
| 123 | ERR ;Error | 
|---|
| 124 | ;W !?5,"You can only "_$S($D(PRCHREQ):$P(^PRCD(442.2,15,0),U,2),1:$P(^PRCD(442.2,5,0),U,2))_" if this is the ONLY change you",!?5,"are making to the "_$S($D(PRCHREQ):"requisition.",1:"purchase order.") | 
|---|
| 125 | W !?5,"To "_$S($D(PRCHREQ):$P(^PRCD(442.2,15,0),U,2),1:$P(^PRCD(442.2,5,0),U,2))_" it must be the ONLY change you",!?5,"are making on the amendment." | 
|---|
| 126 | QUIT | 
|---|
| 127 | ; | 
|---|
| 128 | SUPBOC(QUIETLY) ;compute pre-implied BOC, moved from template PRCHRQITEM, PRCHLINE into this routine and also called in BOC input transform | 
|---|
| 129 | N PRCHIDA,SPFCP,PRCHBOCC,ACCT | 
|---|
| 130 | S:$G(QUIETLY)=-1 X=$P($G(^PRC(443.6,DA(1),2,DA,0)),U,4) | 
|---|
| 131 | Q:'$D(X) | 
|---|
| 132 | S PRCHIDA=+$P($G(^PRC(443.6,DA(1),2,DA,0)),U,5),SPFCP=+$P(^PRC(443.6,DA(1),0),U,19) | 
|---|
| 133 | I SPFCP=2 D | 
|---|
| 134 | . S PRCHN("SFC")=SPFCP,ACCT=$$ACCT^PRCPUX1($E($$NSN^PRCPUX1(PRCHIDA),1,4)) | 
|---|
| 135 | . D  ;:$D(ACCT) | 
|---|
| 136 | . . S PRCHBOCC=$P($G(^PRCD(420.2,$S(ACCT=1:2697,ACCT=2:2698,ACCT=3:2699,ACCT=6:2699,ACCT=8:2696,1:2699),0)),U) | 
|---|
| 137 | . . I PRCHBOCC S $P(^PRC(443.6,DA(1),2,DA,0),U,4)=PRCHBOCC D | 
|---|
| 138 | . . . I PRCHBOCC'=X,PRCHBOCC W:'$G(QUIETLY) !,?5,"BOC must be ",PRCHBOCC,!,?5,"For a supply fund order, a BOC ",X," is invalid.",! S X=PRCHBOCC | 
|---|
| 139 | Q X | 
|---|
| 140 | ; | 
|---|