| 1 | PRCFFMOM ;WOIFO/SJG/AS-ROUTINE TO PROCESS AMENDMENT OBLIGATIONS ;3/8/05
 | 
|---|
| 2 | V ;;5.1;IFCAP;**81**;Oct 20, 2000
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  D ^PRCFSITE Q:'%  ; ask station
 | 
|---|
| 5 |  D OUT1 ; kill variables
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ; prompt for signature (E-Sig code for amendment)
 | 
|---|
| 8 |  S MESSAGE=""
 | 
|---|
| 9 |  D ESIG^PRCUESIG(DUZ,.MESSAGE)
 | 
|---|
| 10 |  I MESSAGE<1 D  G OUT1 ; exit if bad response
 | 
|---|
| 11 |  . I (MESSAGE=0)!(MESSAGE=-3) W !,$C(7),"  SIGNATURE CODE FAILURE " R X:3 ;3 TRIES or NO SIG ON FILE
 | 
|---|
| 12 |  . I (MESSAGE=-1)!(MESSAGE=-2) Q  ;ARROWED OUT or TIMED OUT
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 | START ; get PO#
 | 
|---|
| 15 |  K PRCFA
 | 
|---|
| 16 |  K DIC("A")
 | 
|---|
| 17 |  S D="E"
 | 
|---|
| 18 |  S DIC=443.6
 | 
|---|
| 19 |  S DIC("S")="I +^(0)=PRC(""SITE"") S FSO=$O(^PRC(443.6,""D"",+Y,0)) I FSO=26!(FSO=31)!(FSO=36)!(FSO=45)!(FSO=71)"
 | 
|---|
| 20 |  S DIC("A")="Select Purchase Order Number: "
 | 
|---|
| 21 |  S DIC(0)="AEQZ"
 | 
|---|
| 22 |  D IX^DIC
 | 
|---|
| 23 |  K DIC("S"),DIC("A")
 | 
|---|
| 24 |  K FSO
 | 
|---|
| 25 |  G:+Y<0 OUT1
 | 
|---|
| 26 |  S FLG=0
 | 
|---|
| 27 |  S PO=Y,PO(0)=Y(0)
 | 
|---|
| 28 |  S PRCFA("PODA")=+Y
 | 
|---|
| 29 |  S PRCFPODA=+Y
 | 
|---|
| 30 |  I '$D(^PRC(443.6,+PO,6)) D NOA G OUT1 ; PO has no amendments
 | 
|---|
| 31 |  I $P(^PRC(443.6,+PO,6,0),"^",4)<0 D NOA G OUT1 ; PO has no amendments
 | 
|---|
| 32 |  I '$$VERIFY^PRCHES5(PRCFPODA) D MSG1 G OUT1 ; tampered PO
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ; get amendment #
 | 
|---|
| 35 | AMEND S DIC="^PRC(443.6,"_+PO_",6,"
 | 
|---|
| 36 |  S DIC("A")="Select AMENDMENT: "
 | 
|---|
| 37 |  S DIC(0)="AEMNZQ"
 | 
|---|
| 38 |  D ^DIC
 | 
|---|
| 39 |  K DIC("A")
 | 
|---|
| 40 |  G:Y<0 OUT1
 | 
|---|
| 41 |  S PO(6)=Y(0)
 | 
|---|
| 42 |  S PO(6,1)=^PRC(443.6,+PO,6,+Y,1)
 | 
|---|
| 43 |  S PRCFA("AMEND#")=+Y
 | 
|---|
| 44 |  S PRCFAA=+Y
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | DESC ; verify amendment is complete
 | 
|---|
| 47 |  I $$CHKAMEN^PRCFFU(+PO,PRCFAA) W !,?15,"Return Amendment to A&MM.",! G START
 | 
|---|
| 48 |  I $P($G(PO(6,1)),U,2)="" D  G START
 | 
|---|
| 49 |  . W ! D EN^DDIOL("This amendment is still awaiting signature by A&MM!")
 | 
|---|
| 50 |  . W !
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  ; set up variables used in this option
 | 
|---|
| 53 |  S PRCFA("RETRAN")=0
 | 
|---|
| 54 |  S D0=+PO
 | 
|---|
| 55 |  S D1=+Y
 | 
|---|
| 56 |  S PRCHPO=PRCFPODA
 | 
|---|
| 57 |  S PRCHAM=PRCFAA
 | 
|---|
| 58 |  D ^PRCHSF3 ; sets up PRCH("AM") array
 | 
|---|
| 59 |  D ^PRCHDAM ; display amendment info
 | 
|---|
| 60 |  D DT442^PRCFFUD1(PRCFPODA,PO(0),443.6,PRCFA("AMEND#")) ; set up PRC array
 | 
|---|
| 61 | RETRAN    ; Entry point for rebuild/transmit
 | 
|---|
| 62 |  S PRCFA("MOD")="M^1^Modification Entry"
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  ; check amendment record for availability
 | 
|---|
| 65 |  L +^PRC(443.6,PRCFPODA):1
 | 
|---|
| 66 |  I $T=0 D  G OUT1
 | 
|---|
| 67 |  . W $C(7),!
 | 
|---|
| 68 |  . D EN^DDIOL("This amendment is being obligated by another user!")
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  I 'PRCFA("RETRAN"),$O(^PRC(443.6,PRCFPODA,6,PRCFAA,3,"AC",32,0)) N P2237 S P2237=$P(^PRC(443.6,PRCFPODA,0),U,12) I P2237>0 I '$$VERIFY^PRCSC2(P2237) D MSG1 G OUT1 ; tampered PO
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  I PRCFA("RETRAN") D DT442^PRCFFUD1(PRCFPODA,PO(0),442,PRCFA("AMEND#"))
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  I $G(PRCRGS)<1 D OVCOM^PRCFFU10 I PRCFA("OVCOM")=1!(PRCFA("OVCOM")=2) D POFAIL^PRCFFU10,MSG G OUT1
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  S PCP=+$P(PO(0),U,3)
 | 
|---|
| 77 |  S $P(PCP,U,2)=$S($D(^PRC(420,PRC("SITE"),1,+PCP,0)):$P(^(0),U,12),1:"")
 | 
|---|
| 78 | APP W !
 | 
|---|
| 79 |  D OKAM^PRCFFU I 'Y!($D(DIRUT)) G AMEND ; ask OK to amend?
 | 
|---|
| 80 |  D SC^PRCFFUA1 ; display FCP, cost ctr, PO/Req#
 | 
|---|
| 81 |  D CPBAL^PRCFFUA1 ; display cost & balances
 | 
|---|
| 82 |  D GET^PRCFFUA1 ; display amended (BOC) info
 | 
|---|
| 83 |  S FATAL=0
 | 
|---|
| 84 |  D OK^PRCFFUA ; ask if above BOC info is correct
 | 
|---|
| 85 |  S SAVEY=Y
 | 
|---|
| 86 |  I Y D  S Y=SAVEY K SAVEY I FATAL=1 D MSG10^PRCFFUA3 G APP1
 | 
|---|
| 87 |  . D GETBOC^PRCFFUA4
 | 
|---|
| 88 |  . D CHKBOC^PRCFFUA4
 | 
|---|
| 89 |  I 'Y!($D(DIRUT)) D  I FISCEDIT G RETRAN
 | 
|---|
| 90 |  .S FISCEDIT=0
 | 
|---|
| 91 |  .I $D(DIRUT) D MSG9^PRCFFUA3 Q
 | 
|---|
| 92 |  .I 'Y D MSG8^PRCFFUA3,POAM^PRCFFUA Q
 | 
|---|
| 93 |  .Q
 | 
|---|
| 94 |  D KILL^PRCFFUA
 | 
|---|
| 95 | APP1 I FATAL=1 G:PRCFA("RETRAN")=0 START Q:PRCFA("RETRAN")=1
 | 
|---|
| 96 |  I $D(^PRC(443.6,+PO,6)),$P(PO(6,1),"^",5)'="" D   I 'Y!($D(DIRUT)) G OUT1
 | 
|---|
| 97 |  . W !
 | 
|---|
| 98 |  . D OKAPP^PRCFFU ; amendment approved, ask 'continue?'
 | 
|---|
| 99 | PRT W !
 | 
|---|
| 100 |  D OKPRT^PRCFFU S:Y FLG=1 ; print amendment
 | 
|---|
| 101 |  S PRCFA("AMEND#")=PRCFAA
 | 
|---|
| 102 |  S PRCFA("BBFY")=$$BBFY^PRCFFU5(+PO)
 | 
|---|
| 103 |  S PRCFA("IDES")="Purchase Order Amendment Obligation"
 | 
|---|
| 104 |  S PRCFA("MP")=$P(PO(0),U,2)
 | 
|---|
| 105 |  S PRCFA("PODA")=PRCFPODA
 | 
|---|
| 106 |  S PRCFA("REF")=$P(PO(0),U)
 | 
|---|
| 107 |  ; the following line commented out in PRC*5*179
 | 
|---|
| 108 |  ; S PRCFA("SFC")=$P(PO(0),U,19)
 | 
|---|
| 109 |  S PRCFA("SYS")="FMS"
 | 
|---|
| 110 |  S PRCFA("TT")=$S(PRCFA("MP")=2:"SO",1:"MO")
 | 
|---|
| 111 |  I $D(GECSDATA),$E($G(GECSDATA(2100.1,GECSDATA,.01,"E")),1,3)="AR-" S PRCFA("TT")="AR"
 | 
|---|
| 112 | PRT1 I PRCFA("MP")=2&(PRCFA("TT")="SO") D  G:ACCEDIT=1 PRT1
 | 
|---|
| 113 |  . W !
 | 
|---|
| 114 |  . D EN^PRCFFU16(+PO)
 | 
|---|
| 115 | PRT11 I $D(PRCFA("RETRAN")),PRCFA("RETRAN")=1 D  G PRT2
 | 
|---|
| 116 |  . D RETRANM^PRCFFMO2
 | 
|---|
| 117 |  . S Y=PRCFA("OBLDATE")
 | 
|---|
| 118 |  S Y=$$DTOBL^PRCFFUD1(PRC("RBDT"),PRC("AMENDT"))
 | 
|---|
| 119 | PRT2 D D^PRCFQ
 | 
|---|
| 120 |  S %DT="AEX"
 | 
|---|
| 121 |  S %DT("A")="Select Obligation Processing Date: "
 | 
|---|
| 122 |  S %DT("B")=Y
 | 
|---|
| 123 |  W !
 | 
|---|
| 124 |  D ^%DT
 | 
|---|
| 125 |  K %DT
 | 
|---|
| 126 |  I Y<0 D MSG H 3 G OUT1
 | 
|---|
| 127 |  S PRCFA("OBLDATE")=Y
 | 
|---|
| 128 |  S EXIT=0
 | 
|---|
| 129 |  D ENM^PRCFFMO2
 | 
|---|
| 130 |  I EXIT D MSG,KILL^PRCFFMO2 H 3 G OUT1
 | 
|---|
| 131 |  I PRC("RBDT")'<$P(^PRC(420,PRC("SITE"),0),"^",9),$P($$DATE^PRC0C(PRCFA("OBLDATE"),"I"),U,1,2)'=$P($$DATE^PRC0C(PRC("RBDT"),"I"),U,1,2) D MSG1^PRCFFUD G PRT11
 | 
|---|
| 132 |  D GENDIQ^PRCFFU7(442,+PO,".1;.07;.03;17","IEN","")
 | 
|---|
| 133 | EDIT ; Get budget/accounting elements
 | 
|---|
| 134 |  N PARAM
 | 
|---|
| 135 |  S PARAM=+$P(PO(0),U,3)_"^"_PRC("FY")_"^"_PRCFA("BBFY")
 | 
|---|
| 136 |  S PRCFMO=$$ACC^PRC0C(PRC("SITE"),PARAM)
 | 
|---|
| 137 |  S IDFLAG="I"
 | 
|---|
| 138 |  S XRBLD=0
 | 
|---|
| 139 |  I PRCFA("RETRAN")=1 D EN^PRCFFUB ; if selected transaction to rebuild is a 'X' decrease or cancel, set XRBLD=1, set to 2 if it is the 'E'
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 |  ; determine the correct transaction type if this is not an MO document
 | 
|---|
| 142 |  I PRCFA("TT")'="MO",XRBLD=0 D  I "^AR^SO^"'[("^"_$P(PRCFA("TT"),":",1)) D MSG,OUT1 Q
 | 
|---|
| 143 |  . N PRCFATT S PRCFATT=PRCFA("TT")
 | 
|---|
| 144 |  . D SOAR^PRC0E(PRCFA("PODA"),.PRCFATT,1) ; ask SO or AR, if appropriate
 | 
|---|
| 145 |  . S PRCFA("TT")=PRCFATT K PRCFATT
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  I PRCFA("RETRAN")=1,$P(PRCFA("GECS"),"^")="AR",PRCFA("TT")="AR" D
 | 
|---|
| 148 |  . I $P(PRCFA("GECS"),"^",2)="E" S PRCFA("MOD")="E^0^Original Document"
 | 
|---|
| 149 |  . I $P(PRCFA("GECS"),"^",2)="M" S PRCFA("MOD")="M^1^Modification Document"
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 |  I PRCFA("TT")="AR",XRBLD=0 D  I "EM"'[X D MSG,OUT1 Q
 | 
|---|
| 152 |  . S X="M"
 | 
|---|
| 153 |  . I PRCFA("RETRAN")=1,$P(PRCFA("GECS"),"^",2)="E" S X="E"
 | 
|---|
| 154 |  . D SC^PRC0A("",.Y,"Label document action as: ","AOM^E:Original Document;M:Modification Document",X)
 | 
|---|
| 155 |  . I $E(Y)="E" S PRCFA("MOD")="E^0^Original Document"
 | 
|---|
| 156 |  . I $E(Y)="M" S PRCFA("MOD")="M^1^Modification Document"
 | 
|---|
| 157 |  . S X=$E(Y)
 | 
|---|
| 158 |  . K Y
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 |  ; check to see if transaction type or document type changed
 | 
|---|
| 161 |  S X=0
 | 
|---|
| 162 |  I XRBLD=0,$G(PRCFA("RETRAN"))=1,"^SO^AR"[("^"_$E(PRCFA("TT"),1,2)),$P(PRCFA("GECS"),"^",1,2)'=($E(PRCFA("TT"),1,2)_"^"_$E(PRCFA("MOD"))) D  I X="^" D MSG,PAUSE^PRCFFERU G OUT1
 | 
|---|
| 163 |  . S PRCFA("SIS")=$$GETTXNS^PRCFFERT(PO,PRCFA("AMEND#"),2) ; get other txns for this amendment
 | 
|---|
| 164 |  . S X=$$NEWCHK^PRCFFERT(PRCFA("TT"),$E(PRCFA("MOD"),1),PRCFA("SIS")) ; does selected txn exist?
 | 
|---|
| 165 |  . I X=0 S PRCFA("RETRAN")=2 ; txn doesn't exist, create
 | 
|---|
| 166 |  . I X'=0 S X=$$SWITCH^PRCFFERT(X,2,.GECSDATA) ; replace current GECSDATA values with values belonging to selected txn-- returns '^' if not switched
 | 
|---|
| 167 |  ;
 | 
|---|
| 168 | GO ; Prompt user for for final go-ahead for approval
 | 
|---|
| 169 |  D GO^PRCFFU
 | 
|---|
| 170 |  I 'Y!($D(DIRUT)) D MSG,OUT1 Q
 | 
|---|
| 171 | ESIG W !,"The Electronic Signature must now be entered to generate the "_PRCFA("TYPE")_" Document.",!
 | 
|---|
| 172 |  D SIG^PRCFFU4
 | 
|---|
| 173 |  I $D(PRCFA("SIGFAIL")) K PRCFA("SIGFAIL") H 3 G OUT1
 | 
|---|
| 174 |  S DA=PRCFA("PODA")
 | 
|---|
| 175 |  D REMOVE^PRCHES14(PRCFA("PODA"),PRCFA("AMEND#"))
 | 
|---|
| 176 |  S MESSAGE="" ; value not used but variable is needed by next call
 | 
|---|
| 177 |  D ENCODE^PRCHES14(PRCFA("PODA"),PRCFA("AMEND#"),DUZ,.MESSAGE)
 | 
|---|
| 178 |  ;
 | 
|---|
| 179 |  D DT442^PRCFFUD1(PRCFA("PODA"),"",442,PRCFA("AMEND#"))
 | 
|---|
| 180 |  S PRCOAMT=+^PRC(442,PRCFA("PODA"),0)
 | 
|---|
| 181 |  S $P(PRCOAMT,"^",2)=+$P(^PRC(442,PRCFA("PODA"),0),"^",3)
 | 
|---|
| 182 |  S $P(PRCOAMT,"^",3)=PRC("FYQDT")
 | 
|---|
| 183 |  S $P(PRCOAMT,"^",5)=-$P(^PRC(442,PRCFA("PODA"),0),"^",$P(PRCFMO,"^",12)="N"+15)
 | 
|---|
| 184 |  I $D(PRCFA("RETRAN")),PRCFA("RETRAN")>0 G TRANS1
 | 
|---|
| 185 | TRANS W !!,"...copying amendment information back to Purchase Order file...",! D WAIT^DICD
 | 
|---|
| 186 |  S ERFLAG=""
 | 
|---|
| 187 |  S PRCFA("DLVDATE")=$P(^PRC(442,PRCFA("PODA"),0),"^",10)
 | 
|---|
| 188 |  D CHECK^PRCHAMYA(PRCFA("PODA"),PRCFA("AMEND#"),.ERFLAG)
 | 
|---|
| 189 |  I ERFLAG W !!,"...ERROR IN COPYING AMENDMENT INFORMATION BACK TO PURCHASE ORDER FILE..." G OUT1
 | 
|---|
| 190 | TRANS1 D DT442^PRCFFUD1(PRCFA("PODA"),"",442,PRCFA("AMEND#"))
 | 
|---|
| 191 |  ;  transmit amendment from IFCAP to DynaMed   **81**
 | 
|---|
| 192 |  I $$GET^XPAR("SYS","PRCV COTS INVENTORY",1)=1 D
 | 
|---|
| 193 |  . ; No DynaMed interface if rebuild/retransmit
 | 
|---|
| 194 |  . I $D(PRCFA("RETRAN")),PRCFA("RETRAN")>0 Q
 | 
|---|
| 195 |  . D ENT^PRCVPOU(PRCFA("PODA"),PRCFA("AMEND#"))
 | 
|---|
| 196 |  S PRCFA("OLDPODA")=PRCFA("PODA")
 | 
|---|
| 197 |  S PRCFA("OLDREF")=PRCFA("REF")
 | 
|---|
| 198 |  I PRCFA("RETRAN")>0 I XRBLD=1!(XRBLD=2) D GO^PRCFFUB H 3 Q  ; if rebuilding a 'dependent' transaction, finish work here
 | 
|---|
| 199 |  D LIST^PRCFFU7(PRCFA("PODA"),PRCFA("AMEND#"))
 | 
|---|
| 200 |  I $G(PRCFA("RETRAN"))<1 D AMEND^PRCFFUD ; create entry in 410
 | 
|---|
| 201 |  I PRCFA("AUTHE") D FCP^PRCFFU11,PRINT G START
 | 
|---|
| 202 |  I 'PRCFA("MOMREQ") D MSG^PRCFFU8 G PRINT ; skip FMS transmit,fiscal upadtes
 | 
|---|
| 203 |  I $D(PRCFA("RETRAN")),PRCFA("RETRAN")=1 D SETPO^PRCFFERT
 | 
|---|
| 204 |  I $G(PRCFA("ACCEDIT"))=1 D TAG33^PRCFFU9
 | 
|---|
| 205 | TRANS2 K PO
 | 
|---|
| 206 |  D ^PRCFFM1M
 | 
|---|
| 207 |  L -^PRC(443.6,PRCFA("PODA"))
 | 
|---|
| 208 |  I $D(PRCFA("RETRAN")),PRCFA("RETRAN")=0 D OUT1^PRCFFM1M G START
 | 
|---|
| 209 |  QUIT
 | 
|---|
| 210 |  ;
 | 
|---|
| 211 | PRINT ; Print out copy of Purchase Order Amendment
 | 
|---|
| 212 |  G:'FLG OUT1
 | 
|---|
| 213 |  S PRCHQ="^PRCHPAM"
 | 
|---|
| 214 |  S PRCHQ("DEST")="S8"
 | 
|---|
| 215 |  S D0=PRCFA("PODA")
 | 
|---|
| 216 |  S D1=PRCFA("AMEND#")
 | 
|---|
| 217 |  D ^PRCHQUE
 | 
|---|
| 218 | OUT1 K FATAL,FLG,%,%Y,DIC,I,J,K,P,PRCFA,PRCFAA,PRCFPODA,PRCFCHG,X,XRBLD,Y,Z
 | 
|---|
| 219 |  Q
 | 
|---|
| 220 |  ; Message processing
 | 
|---|
| 221 | NOA D NOA^PRCFFM3M Q
 | 
|---|
| 222 | MSG D MSG^PRCFFM3M Q
 | 
|---|
| 223 | MSG1 D MSG1^PRCFFM3M Q
 | 
|---|