[613] | 1 | PRCOEDI ;WISC/DJM-IFCAP EDI ENTRY ROUTINE ; 7/21/99 11:24am
|
---|
| 2 | V ;;5.1;IFCAP;;Oct 20, 2000
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; Receives variable PRCOPODA from calling routines.
|
---|
| 6 | ;
|
---|
| 7 | ; PRCOPODA = sting of up to 4 '^' pieces.
|
---|
| 8 | ; piece 1 = ien of 442 record
|
---|
| 9 | ; piece 2 = (optional) flag if not new order
|
---|
| 10 | ; piece 3 = (optional) amendment number
|
---|
| 11 | ; piece 4 = (optional) ien of 442 record if
|
---|
| 12 | ; amendment is PO number change
|
---|
| 13 | ;
|
---|
| 14 | ; piece 2 flag values:
|
---|
| 15 | ; 1 = create a PHM, do not transmit to EDI
|
---|
| 16 | ; 2 = create a PHA, do not transmit to EDI
|
---|
| 17 | ;
|
---|
| 18 | NEW N A,AMEND,A1,A12,CSDA,IEN,MO,PRC,PRCFA,PRCFASYS,PRCPXMZ,PTSW,RECORD
|
---|
| 19 | N REQUEST,SERVICE,TEST,TOTAL,VAR1,VAR2,VAR3,VEN,V1,V2,V3,V4,V5,V6
|
---|
| 20 | N W1,W2,YR,XMZ
|
---|
| 21 | S VAR1=$P(PRCOPODA,"^",1)
|
---|
| 22 | S W2="PHA"
|
---|
| 23 | I $P(PRCOPODA,"^",2)=1 S W2="PHM"
|
---|
| 24 | S AMEND=0
|
---|
| 25 | I $P(PRCOPODA,"^",2)]"" S AMEND=1 ; amendment, don't send to EDI
|
---|
| 26 | S A=$G(^PRC(442,VAR1,0))
|
---|
| 27 | I A="" W:'AMEND W2," not generated - purchase order corrupted.",!! Q
|
---|
| 28 | S PRC("SITE")=$P($P(A,U),"-")
|
---|
| 29 | S YR=$E(DT,2,3)
|
---|
| 30 | S MO=$E(DT,4,5)
|
---|
| 31 | S PRC("FY")=$E(100+$S(MO>9:YR+1,1:YR),2,3)
|
---|
| 32 | S SERVICE=$P(A,U,12)
|
---|
| 33 | I SERVICE>0 D I $G(REQUEST)=3 W:'AMEND W2," not generated - inappropriate for this order.",!! Q
|
---|
| 34 | . S RECORD=$G(^PRC(442,VAR1,13,SERVICE,0))
|
---|
| 35 | . I RECORD]"" S REQUEST=$P(RECORD,U,9)
|
---|
| 36 | S A1=$G(^PRC(442,VAR1,1))
|
---|
| 37 | I A1="" W:'AMEND W2," not generated - PO informated corrupted",!! Q
|
---|
| 38 | I $P(A1,U,7)=1 W W2," not generated - not used for GSA Supply Depot orders.",!! Q
|
---|
| 39 | K ^TMP($J,"STRING")
|
---|
| 40 | S VAR2=""
|
---|
| 41 | S A12=$G(^PRC(442,VAR1,12))
|
---|
| 42 | I A12]"",'AMEND G:$P(A12,U,10)>0 EXIT ;Already has EDI message #
|
---|
| 43 | I 'AMEND S $P(A12,U,10)=999999999,^PRC(442,VAR1,12)=A12
|
---|
| 44 | ;
|
---|
| 45 | ; build segments
|
---|
| 46 | D HE^PRCOE3(PRCOPODA,.VAR2) G:VAR2]"" EXIT
|
---|
| 47 | D BI^PRCOE1(A,VAR1,.VAR2) G:VAR2]"" EXIT
|
---|
| 48 | D VE^PRCOE1(A1,.VAR2) G:VAR2]"" EXIT
|
---|
| 49 | D ST^PRCOE1(A,A1,VAR1,.VAR2) G:VAR2]"" EXIT
|
---|
| 50 | D MI^PRCOE3(VAR1,.VAR2) G:VAR2]"" EXIT
|
---|
| 51 | D AC^PRCOE4(A,A1,VAR1,.VAR2) G:VAR2]"" EXIT
|
---|
| 52 | S TOTAL="" D IT^PRCOE2(VAR1,.VAR2,.TOTAL) G:VAR2]"" EXIT
|
---|
| 53 | D CO^PRCOE3(VAR1,.VAR2,.TOTAL) G:VAR2]"" EXIT
|
---|
| 54 | ;
|
---|
| 55 | S IEN=$S($P($G(^PRC(442,VAR1,23)),U,7)>0:$P(^(23),U,7),1:PRC("SITE"))
|
---|
| 56 | S PTSW=$P($G(^PRC(411,IEN,9)),U,4) ; test or production site
|
---|
| 57 | S V2=""
|
---|
| 58 | S VEN=$P(A1,U)
|
---|
| 59 | I VEN>0,'AMEND S V1=$G(^PRC(440,VEN,3)),V2=$P(V1,U,2)
|
---|
| 60 | S W1=PRC("SITE")
|
---|
| 61 | S V3=$P($P(A,U),"-")_$P($P(A,U),"-",2)
|
---|
| 62 | S V4=$S(PTSW="T":"IST",1:"ISM")
|
---|
| 63 | I 'AMEND,V2="Y",$P($G(^PRC(442,VAR1,23)),U,11)'="P",$P($G(^(12)),U,16)'="n" S V4=$S(PTSW="T":"IST^EDT",1:"ISM^EDP")
|
---|
| 64 | I AMEND D EN^DDIOL("...now generating the "_W2_" transaction...","","!!")
|
---|
| 65 | D TRANSMIT^PRCPSMCS(W1,W2,V3,V4,200,1)
|
---|
| 66 | S XMZ=$O(PRCPXMZ(0))
|
---|
| 67 | I XMZ>0 S $P(^PRC(442,VAR1,12),U,10)=PRCPXMZ(XMZ)
|
---|
| 68 | I AMEND G EXIT
|
---|
| 69 | ;
|
---|
| 70 | ; NOW, IF THIS IS NOT FROM AMENDMENTS AND IS AN EDI 'PHA',
|
---|
| 71 | ; LETS ADD IT TO FILE 443.75.
|
---|
| 72 | ;
|
---|
| 73 | S W1=$P(A,U)
|
---|
| 74 | S W2="PHA"
|
---|
| 75 | S V3=PRCPXMZ(XMZ)
|
---|
| 76 | S V5=$P(A1,U,10)
|
---|
| 77 | S V6=VAR1
|
---|
| 78 | S VAR3=$P(A1,U)
|
---|
| 79 | S V4=$P($G(^PRC(440,VAR3,3)),U,3)
|
---|
| 80 | I V2="Y",$P($G(^PRC(442,VAR1,12)),U,16)'="n",$P($G(^(23)),U,11)'="P" D ENTER^PRCOEDI(W1,W2,V3,V4,V5,V6)
|
---|
| 81 | ;
|
---|
| 82 | EXIT I VAR2]"" W:'AMEND W2," not generated - missing information (data code: ",VAR2,")",!!
|
---|
| 83 | K ^TMP($J,"STRING"),PRCOUT Q
|
---|
| 84 | ;
|
---|
| 85 | VDEC(VALUE,LENGTH) ;
|
---|
| 86 | ; EXTRINSIC FUNCTION TO CONVERT NUMBER WITH DECIMAL INTO VIRTUAL
|
---|
| 87 | ; DECIMAL.
|
---|
| 88 | ;
|
---|
| 89 | ; VALUE = NUMBER WITH DECIMAL TO CONVERT
|
---|
| 90 | ; LENGTH = NUMBER OF VIRTUAL DECIMAL PLACES
|
---|
| 91 | ;
|
---|
| 92 | ; CALLED FROM PRCOE4
|
---|
| 93 | ;
|
---|
| 94 | N V1,V2
|
---|
| 95 | S (V1,V2)="" G:'$D(VALUE) EXIT1
|
---|
| 96 | S V1=$P(VALUE,".",1),V2=$P(VALUE,".",2)
|
---|
| 97 | I '$D(LENGTH) S LENGTH=0,V2="" G EXIT1
|
---|
| 98 | I LENGTH=0 S V2="" G EXIT1
|
---|
| 99 | I LENGTH>0,LENGTH'<$L(V2) S $P(V2,"0",LENGTH)="0",V2=$E(V2,1,LENGTH)
|
---|
| 100 | I LENGTH>0,LENGTH<$L(V2) S V2=$E(V2,1,LENGTH)
|
---|
| 101 | EXIT1 Q V1_V2
|
---|
| 102 | ;
|
---|
| 103 | ENTER(ENTRY,TRANS,XMZ,VENDOR,SENDER,POINTER,RFQ,TXT) ;
|
---|
| 104 | ;
|
---|
| 105 | ; THIS IS THE PARAMETER PASSED CALL TO ENTER A NEW ENTRY INTO
|
---|
| 106 | ; FILE 443.75. ONE ENTRY WILL BE CREATED FOR EACH 'PHA'
|
---|
| 107 | ; TRANSACTION. ONE OR MORE ENTRIES WILL BE CREATED FOR EACH 'RFQ'
|
---|
| 108 | ; OR 'TXT' TRANSACTION (THE CALLING ROUTINE WILL HAVE TO MAKE
|
---|
| 109 | ; SEPARATE CALLS, ONE FOR EACH DIFFERENT VENDOR).
|
---|
| 110 | ;
|
---|
| 111 | ; INPUT PARAMETERS WHAT IT REPRESENTS
|
---|
| 112 | ; ENTRY IF THE TRANSACTION IS A 'PHA' THEN SEND
|
---|
| 113 | ; THE FILE 442, .01 FIELD VALUE.
|
---|
| 114 | ; IF THE TRANSACTION IS A 'RFQ' OR A 'TXT'
|
---|
| 115 | ; SEND THE RFQ NUMBER.
|
---|
| 116 | ; TRANS SEND THE TYPE OF TRANSACTION BEING SENT
|
---|
| 117 | ; TO AUSTIN ('PHA', 'RFQ' OR 'TXT').
|
---|
| 118 | ; XMZ THE MAILMAN NUMBER OF THE TRANSACTION.
|
---|
| 119 | ; VENDOR THE VENDOR ID USED IN THE TRANSACTION.
|
---|
| 120 | ; SENDER THE DUZ OF THE PERSON CREATING THE
|
---|
| 121 | ; TRANSACTION ENTERING INTO FILE 443.75.
|
---|
| 122 | ; POINTER THE INTERNAL ENTRY NUMBER OF THE ENTRY.
|
---|
| 123 | ; RFQ THIS FIELD WILL CONTAIN '00' OR '01'.
|
---|
| 124 | ; '00' IS A NORMAL RFQ.
|
---|
| 125 | ; '01' IS A CANCELLED RFQ.
|
---|
| 126 | ; TXT THE TXT MESSAGE NUMBER. THIS PARAMETER
|
---|
| 127 | ; IS OPTIONAL. ALL OTHER PARAMETERS ARE
|
---|
| 128 | ; REQUIRED.
|
---|
| 129 | ;
|
---|
| 130 | ; NOTHING ADDITIONAL IS RETURNED FROM THIS CALL.
|
---|
| 131 | ;
|
---|
| 132 | ; ALL PASSED PARAMETERS ARE UNCHANGED.
|
---|
| 133 | ;
|
---|
| 134 | N I,IEN,PRCNO,PRC,PRCDA
|
---|
| 135 | S IEN=""
|
---|
| 136 | ; SEE IF THE TRANSACTION IS ALREADY ENTERED IN FILE 443.75.
|
---|
| 137 | ; IF SO JUST UPDATE THE MAILMAN MESSAGE NUMBER AND DATE/TIME
|
---|
| 138 | ; THE MESSAGE WS MAILED.
|
---|
| 139 | ;
|
---|
| 140 | I TRANS="PHA" D I IEN>0 Q
|
---|
| 141 | . S IEN=$O(^PRC(443.75,"AO",TRANS,ENTRY,VENDOR,0))
|
---|
| 142 | . I IEN>0 D UPDATE
|
---|
| 143 | . Q
|
---|
| 144 | ;
|
---|
| 145 | I TRANS="RFQ" D I IEN>0 Q
|
---|
| 146 | . S IEN=$O(^PRC(443.75,"AC",TRANS,ENTRY,VENDOR,RFQ,0))
|
---|
| 147 | . I IEN>0 D UPDATE
|
---|
| 148 | . Q
|
---|
| 149 | ;
|
---|
| 150 | I TRANS="TXT" D I IEN>0 Q
|
---|
| 151 | . S IEN=$O(^PRC(443.75,"AF",TRANS,ENTRY,VENDOR,TXT,0))
|
---|
| 152 | . I IEN>0 D UPDATE
|
---|
| 153 | . Q
|
---|
| 154 | ;
|
---|
| 155 | ; CONTINUE HERE IF NO RECORD OF THE TRANSACTION WAS FOUND.
|
---|
| 156 | ;
|
---|
| 157 | F I=1:1:100 L +^PRC(443.75):1 Q:$T=1
|
---|
| 158 | G:'$T STOP
|
---|
| 159 | K PRCNO
|
---|
| 160 | S PRCNO=1+$O(^PRC(443.75,"B",""),-1)
|
---|
| 161 | S PRC(1,443.75,"?+1,",.01)=PRCNO
|
---|
| 162 | S PRC(2)=""
|
---|
| 163 | D UPDATE^DIE("","PRC(1)","PRC(2)")
|
---|
| 164 | S PRCDA=PRC(2,1)
|
---|
| 165 | L -^PRC(443.75)
|
---|
| 166 | ;
|
---|
| 167 | ; HAVING CREATED A NEW ENTRY LETS POPULATE IT.
|
---|
| 168 | ;
|
---|
| 169 | F L +^PRC(443.75,PRCDA):1 Q:$T=1
|
---|
| 170 | S X=$P($$NET^XMRENT(XMZ),U)
|
---|
| 171 | S %DT="ST"
|
---|
| 172 | D ^%DT
|
---|
| 173 | S:Y>0 PRC(1,443.75,"?+1,",6)=Y
|
---|
| 174 | S PRC(1,443.75,"?+1,",1)=ENTRY
|
---|
| 175 | S PRC(1,443.75,"?+1,",3)=TRANS
|
---|
| 176 | S PRC(1,443.75,"?+1,",5)=VENDOR
|
---|
| 177 | S PRC(1,443.75,"?+1,",4)=XMZ
|
---|
| 178 | S PRC(1,443.75,"?+1,",5.5)=SENDER
|
---|
| 179 | S:TRANS="RFQ" PRC(1,443.75,"?+1,",6.5)=RFQ
|
---|
| 180 | S:$G(TXT)]"" PRC(1,443.75,"?+1,",2)=TXT
|
---|
| 181 | S:TRANS="PHA" PRC(1,443.75,"?+1,",7)=POINTER
|
---|
| 182 | S:TRANS'="PHA" PRC(1,443.75,"?+1,",8)=POINTER
|
---|
| 183 | S PRC(1,443.75,"?+1,",.01)=PRCDA
|
---|
| 184 | D UPDATE^DIE("","PRC(1)")
|
---|
| 185 | L -^PRC(443.75,PRCDA)
|
---|
| 186 | STOP Q
|
---|
| 187 | ;
|
---|
| 188 | UPDATE ; COME HERE TO UPDATE AN EXISTING RECORD IN FILE 443.75.
|
---|
| 189 | S PRC(1,443.75,"?+1,",.01)=IEN
|
---|
| 190 | S PRC(1,443.75,"?+1,",4)=XMZ
|
---|
| 191 | S X=$P($$NET^XMRENT(XMZ),U)
|
---|
| 192 | S %DT="ST"
|
---|
| 193 | D ^%DT
|
---|
| 194 | S:Y>0 PRC(1,443.75,"?+1,",6)=Y
|
---|
| 195 | F L +^PRC(443.75,IEN):1 Q:$T=1
|
---|
| 196 | D UPDATE^DIE("","PRC(1)")
|
---|
| 197 | L -^PRC(443.75,IEN)
|
---|
| 198 | G STOP
|
---|