| 1 | PRCSUT ;WISC/SAW/DGL-CONTROL POINT ACTIVITY UTILITY PROGRAM ;9/14/00  15:49
 | 
|---|
| 2 | V ;;5.1;IFCAP;**93**;Oct 20, 2000
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | ENF(PRCIPFLG) ;Entry point for Inv. Pt. selection
 | 
|---|
| 6 | EN ;STA,FY,QTR,CP W/SCREEN FOR INACTIVE CP
 | 
|---|
| 7 |  I '$G(PRCIPFLG) N:'$D(PRCIPFLG) PRCIPFLG S PRCIPFLG=0
 | 
|---|
| 8 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 9 |  D FY G EX:PRC("FY")="^"
 | 
|---|
| 10 |  D QT G EX:PRC("QTR")="^"
 | 
|---|
| 11 |  S DIC("S")="I '$P(^(0),""^"",19),$D(^PRC(420,""A"",DUZ,PRC(""SITE""),+Y,1))!($D(^(2)))"
 | 
|---|
| 12 |  I $D(PRCSC),PRCSC D CPF^PRCSUT1(PRCIPFLG)
 | 
|---|
| 13 |  I '$D(PRCSC) D CPF(PRCIPFLG)
 | 
|---|
| 14 |  G EX:'SI!(Y<0)
 | 
|---|
| 15 |  G:'$$BBFY(PRC("SITE"),PRC("FY"),PRC("CP")) EX
 | 
|---|
| 16 |  G EN11
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | EN1F(PRCIPFLG) ; Entry point for Inv. Pt. selection
 | 
|---|
| 19 | EN1 ;STA,FY,QTR,CP
 | 
|---|
| 20 |  I '$G(PRCIPFLG) N:'$D(PRCIPFLG) PRCIPFLG S PRCIPFLG=0
 | 
|---|
| 21 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 22 |  D FY G EX:PRC("FY")="^"
 | 
|---|
| 23 |  D QT G EX:PRC("QTR")="^"
 | 
|---|
| 24 |  I $D(PRCSC),PRCSC D CPF^PRCSUT1(PRCIPFLG)
 | 
|---|
| 25 |  I '$D(PRCSC) D CPF(PRCIPFLG)
 | 
|---|
| 26 |  G EX:'SI!(Y<0)
 | 
|---|
| 27 |  G:'$$BBFY(PRC("SITE"),PRC("FY"),PRC("CP")) EX
 | 
|---|
| 28 | EN11 S Z=PRC("SITE")_"-"_PRC("FY")_"-"_PRC("QTR")_"-"_$P(PRC("CP")," ")
 | 
|---|
| 29 |  S X=$P(Z,"-",1,2)_"-"_$P(PRC("CP")," ")
 | 
|---|
| 30 |  G EXIT
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | EN2 ;STA,FY,QTR
 | 
|---|
| 33 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 34 |  D FY G EX:PRC("FY")="^"
 | 
|---|
| 35 |  D QT G EX:PRC("QTR")="^"
 | 
|---|
| 36 |  G EXIT
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 | EN3F(PRCIPFLG) ; Entry point for Inv. Pt. selection
 | 
|---|
| 39 | EN3 ;STA,CP
 | 
|---|
| 40 |  I '$G(PRCIPFLG) N:'$D(PRCIPFLG) PRCIPFLG S PRCIPFLG=0
 | 
|---|
| 41 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 42 |  I $D(PRCSC),PRCSC D CPF^PRCSUT1(PRCIPFLG)
 | 
|---|
| 43 |  D:'$D(PRCSC) CPF(PRCIPFLG)
 | 
|---|
| 44 |  G EX:'SI!(Y<0)
 | 
|---|
| 45 |  G EXIT
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | EN4 ;STA,FY,QTR,CC
 | 
|---|
| 48 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 49 |  D FY G EX:PRC("FY")="^"
 | 
|---|
| 50 |  D QT G EX:PRC("QTR")="^"
 | 
|---|
| 51 |  D CC
 | 
|---|
| 52 |  G EXIT
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | EN5 ;STA,FY,QTR,BOC
 | 
|---|
| 55 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 56 |  D FY G EX:PRC("FY")="^"
 | 
|---|
| 57 |  D QT G EX:PRC("QTR")="^"
 | 
|---|
| 58 |  D SUB
 | 
|---|
| 59 |  G EXIT
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | EN6F(PRCIPFLG) ; Entry point for Inv. Pt. selection
 | 
|---|
| 62 | EN6 ;STA,CP,FY
 | 
|---|
| 63 |  I '$G(PRCIPFLG) N:'$D(PRCIPFLG) PRCIPFLG S PRCIPFLG=0
 | 
|---|
| 64 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 65 |  I $D(PRCSC),PRCSC D CPF^PRCSUT1(PRCIPFLG)
 | 
|---|
| 66 |  I '$D(PRCSC) D CPF(PRCIPFLG)
 | 
|---|
| 67 |  G EX:'SI!(Y<0)
 | 
|---|
| 68 |  D FY G EX:PRC("FY")="^"
 | 
|---|
| 69 |  G EXIT
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  ;PRCSST is flag to not ask substation
 | 
|---|
| 72 |  ;PRCSK is flag to allow selection of any station
 | 
|---|
| 73 | STA ;SELECT STATION NUMBER
 | 
|---|
| 74 |  S N="",Y=0
 | 
|---|
| 75 |  I $D(PRCSK) S SI=2 ; if privilege flag is set, ask STATION
 | 
|---|
| 76 |  ; else restrict station selection to user's authorized stations
 | 
|---|
| 77 |  E  F SI=0:1:2 S N=$O(^PRC(420,"A",DUZ,N)) Q:N'>0  S N(1)=N
 | 
|---|
| 78 |  Q:'SI  ; user not allowed to access any station
 | 
|---|
| 79 |  I SI>1 D
 | 
|---|
| 80 |  . S DIC="^PRC(420,",DIC(0)="AEMQ",DIC("A")="Select STATION NUMBER: "
 | 
|---|
| 81 |  . I '$D(PRCSK) S DIC("S")="I $D(^PRC(420,""A"",DUZ,+Y))"
 | 
|---|
| 82 |  . I $D(PRC("SITE")) S DIC("B")=PRC("SITE")
 | 
|---|
| 83 |  . S D="B^C"
 | 
|---|
| 84 |  . D MIX^DIC1 I Y>0 S PRC("SITE")=+Y
 | 
|---|
| 85 |  I SI=1 S PRC("SITE")=N(1)
 | 
|---|
| 86 |  I '$D(PRC("SITE")) S PRC("SITE")="",PRC("SST")=""
 | 
|---|
| 87 |  I PRC("SITE")=""!(Y<0) K DIC,N Q
 | 
|---|
| 88 |  ; substation
 | 
|---|
| 89 |  I '$D(PRC("SST"))!'$D(^PRC(411,"UP",+PRC("SITE"))) S PRC("SST")=""
 | 
|---|
| 90 |  I '$G(PRCSST),$D(^PRC(411,"UP",+PRC("SITE"))) D
 | 
|---|
| 91 |  . S DIC("B")=PRC("SST")
 | 
|---|
| 92 |  . S DIC="^PRC(411,",DIC(0)="AEQZ",DIC("A")="Select SUBSTATION: "
 | 
|---|
| 93 |  . S DIC("S")="I $E($G(^PRC(411,+Y,0)),1,3)=PRC(""SITE"")"
 | 
|---|
| 94 |  . D ^DIC I Y>0 S PRC("SST")=+Y
 | 
|---|
| 95 |  K DIC,N
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 | FY ;SELECT FISCAL YEAR
 | 
|---|
| 99 |  D:'$D(DT) DT^DICRW
 | 
|---|
| 100 |  S FYT=$E(100+$E(DT,2,3)+$E(DT,4),2,3),PRC("FY")=FYT
 | 
|---|
| 101 |  W !,"Select FISCAL YEAR: ",FYT,"// " R PRC("FY"):DTIME
 | 
|---|
| 102 |  S:'$T PRC("FY")=U
 | 
|---|
| 103 |  S:PRC("FY")="" PRC("FY")=FYT
 | 
|---|
| 104 |  Q:PRC("FY")="^"
 | 
|---|
| 105 |  I PRC("FY")'?2N W $C(7),!,"Enter a two digit fiscal year (e.g., 87).",! G FY
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | QT ;SELECT QUARTER
 | 
|---|
| 109 |  D:'$D(DT) DT^DICRW
 | 
|---|
| 110 |  I '$D(QTT) S:$D(PRC("QTR")) QTT=PRC("QTR") I '$D(QTT) S SI=$E(DT,4,5),QTT=$P("2^2^2^3^3^3^4^4^4^1^1^1","^",SI)
 | 
|---|
| 111 |  W !,"Select QUARTER: ",QTT,"// " R PRC("QTR"):DTIME
 | 
|---|
| 112 |  S:'$T PRC("QTR")=U
 | 
|---|
| 113 |  S:PRC("QTR")="" PRC("QTR")=QTT
 | 
|---|
| 114 |  Q:PRC("QTR")=U
 | 
|---|
| 115 |  I PRC("QTR")<1!(PRC("QTR")>4)!(PRC("QTR")'?1N) W $C(7),!,"Enter a single digit number from 1 to 4.",! G QT
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 | CPF(PRCIPFLG) ; Entry point for inv. pt. selection
 | 
|---|
| 119 | CP ;SELECT CONTROL POINT
 | 
|---|
| 120 |  N FCPDA
 | 
|---|
| 121 |  K PRCSIP ; inventory distribution point variable
 | 
|---|
| 122 |  I '$G(PRCIPFLG) N:'$D(PRCIPFLG) PRCIPFLG S PRCIPFLG=0
 | 
|---|
| 123 |  S FCPDA=$O(^PRC(420,"A",DUZ,PRC("SITE"),0)) Q:'FCPDA  ; no fcps
 | 
|---|
| 124 |  I '$O(^PRC(420,"A",DUZ,PRC("SITE"),FCPDA)) D  Q  ; access to 1 fcp
 | 
|---|
| 125 |  . S PRC("CP")=$P($G(^PRC(420,PRC("SITE"),1,FCPDA,0)),U)
 | 
|---|
| 126 |  . I PRC("CP"),PRCIPFLG D IP
 | 
|---|
| 127 |  ; more than one fcp
 | 
|---|
| 128 |  S DIC="^PRC(420,"_PRC("SITE")_",1,"
 | 
|---|
| 129 |  S DIC(0)="AEMNQZ",DIC("A")="Select CONTROL POINT: "
 | 
|---|
| 130 |  I '$D(DIC("S")) S DIC("S")="I '$P(^(0),""^"",19),$D(^PRC(420,""A"",DUZ,PRC(""SITE""),+Y,1))!($D(^(2)))"
 | 
|---|
| 131 |  I $D(PRC("CP")),PRC("CP"),$D(^PRC(420,PRC("SITE"),1,PRC("CP"))) S DIC("B")=+PRC("CP")
 | 
|---|
| 132 |  S D="B^C" D MIX^DIC1 S:Y<0 PRC("CP")="^"
 | 
|---|
| 133 |  I Y>0 S PRC("CP")=$P(Y(0),"^") I PRCIPFLG=1 D IP
 | 
|---|
| 134 |  K DIC
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  ;A=station #, B=fiscal year, C=fcp #, PRCA=1 if no user interactive
 | 
|---|
| 138 | BBFY(A,B,C,PRCA) ;extrinsic function of beginning budget fiscal year
 | 
|---|
| 139 |  N D,E,F,X,Y
 | 
|---|
| 140 |  K PRC("BBFY")
 | 
|---|
| 141 |  S E=$G(^PRC(420,A,1,+C,5))
 | 
|---|
| 142 |  I $P(E,"^")]"" S F=$O(^PRCD(420.3,"B",$P(E,"^"),"")) I F I $P(^PRCD(420.3,F,0),"^",8)="Y" S PRC("BBFY")=+$$DATE^PRC0C($P(E,"^",8),"I") QUIT PRC("BBFY")
 | 
|---|
| 143 |  S B=+$$YEAR^PRC0C(B)
 | 
|---|
| 144 |  S D=$$APP^PRC0C(A,$E(B,3,4),C)
 | 
|---|
| 145 |  I $P(D,"^")'["_/_" S PRC("BBFY")=B QUIT PRC("BBFY")
 | 
|---|
| 146 |  S F=$$BBFY^PRC0D(A,C,'$G(PRCA))
 | 
|---|
| 147 |  I F="",$G(PRCA)=1 S PRC("BBFY")=B QUIT PRC("BBFY")
 | 
|---|
| 148 |  I $G(PRCA)=1 S PRC("BBFY")=B-(B-$P(F,"~",2)#$P(F,"~",3)) QUIT PRC("BBFY")
 | 
|---|
| 149 | BBFY1 S E="^2:4^K:X'?2N&(X'?4N) X I $G(X)]"""" S X=+$$YEAR^PRC0C(X) K:X-$P(F,""~"",2)#$P(F,""~"",3) X"
 | 
|---|
| 150 |  S Y(1)="Enter a 2 or 4 digit year."
 | 
|---|
| 151 |  D FT^PRC0A(.X,.Y,"First Year of the Multi-Appropriation ("_$P(D,"^")_")",E,$S(F="":B,1:B-(B-$P(F,"~",2)#$P(F,"~",3))))
 | 
|---|
| 152 |  I Y?2.4N S Y=+$$YEAR^PRC0C(Y) I B<Y!(Y+$P(F,"~",3)-1<B) D EN^DDIOL("You must enter a BBFY such that the document's fiscal year is between"),EN^DDIOL("beginning and ending budget fiscal years") G BBFY1
 | 
|---|
| 153 |  S PRC("BBFY")=$S(Y?4N:Y,1:"")
 | 
|---|
| 154 |  QUIT PRC("BBFY")
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 | CC ;SELECT COST CENTER
 | 
|---|
| 157 |  S DIC="^PRCD(420.1,",DIC(0)="AEMNQZ"
 | 
|---|
| 158 |  D ^DIC Q:Y<0
 | 
|---|
| 159 |  S PRCS("CC")=$P(Y(0),"^")
 | 
|---|
| 160 |  Q
 | 
|---|
| 161 |  ;
 | 
|---|
| 162 | SUB ;SELECT BOC
 | 
|---|
| 163 |  S DIC="^PRCD(420.2,",DIC(0)="AEMNQZ"
 | 
|---|
| 164 |  D ^DIC Q:Y<0
 | 
|---|
| 165 |  S PRCS("SUB")=$P(Y(0),"^")
 | 
|---|
| 166 |  Q
 | 
|---|
| 167 |  ;
 | 
|---|
| 168 | LOCK ;LOCK GLOBAL THAT IS BEING ACCESSED BY ANOTHER USER
 | 
|---|
| 169 |  L @("+"_DIC_DA_"):15")
 | 
|---|
| 170 |  S PRCSL=$T
 | 
|---|
| 171 |  W:$T=0 !!,$C(7),"Sorry, record is being accessed by another user.  Please try later."
 | 
|---|
| 172 |  Q
 | 
|---|
| 173 |  ;
 | 
|---|
| 174 | EX S Y=-1
 | 
|---|
| 175 |  K PRC("QTR"),PRC("FY"),PRC("BBFY"),SI
 | 
|---|
| 176 |  I $D(PRC("CP")) K:PRC("CP")="ALL"!(PRC("CP")="^") PRC("CP")
 | 
|---|
| 177 | EXIT K FYT,SI,PRCSK,QTT,DIC("A")
 | 
|---|
| 178 |  Q
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 | NSCRNF(PRCIPFLG) ; Entry point for Inv. Pt. selection
 | 
|---|
| 181 | NSCRN ;STA,FY,QTR,CP
 | 
|---|
| 182 |  I '$G(PRCIPFLG) N:'$D(PRCIPFLG) PRCIPFLG S PRCIPFLG=0
 | 
|---|
| 183 |  D STA G EX:'SI!(Y<0)
 | 
|---|
| 184 |  D FY G EX:PRC("FY")="^"
 | 
|---|
| 185 |  D QT G EX:PRC("QTR")="^"
 | 
|---|
| 186 |  S PRCSC=4 D CPF^PRCSUT1(PRCIPFLG)
 | 
|---|
| 187 |  I '$D(PRCSC) D CPF(PRCIPFLG)
 | 
|---|
| 188 |  G EX:'SI!(Y<0)
 | 
|---|
| 189 |  G:'$$BBFY(PRC("SITE"),PRC("FY"),PRC("CP")) EX
 | 
|---|
| 190 |  QUIT
 | 
|---|
| 191 |  ;
 | 
|---|
| 192 | IP ; Get Inventory point
 | 
|---|
| 193 |  Q:'$D(PRC("SITE"))!('$D(PRC("CP")))
 | 
|---|
| 194 |  N CTR,I
 | 
|---|
| 195 |  K ^TMP($J,"PRCSUT")
 | 
|---|
| 196 |  S (CTR,I)=0,PRCSIP=""
 | 
|---|
| 197 |  F  S I=$O(^PRC(420,"AF",PRC("SITE"),+PRC("CP"),I)) Q:'I  S CTR=CTR+1,^TMP($J,"PRCSUT",CTR)=I_"^"_$P(^PRCP(445,I,0),"^")
 | 
|---|
| 198 |  I CTR=0 G IPQ
 | 
|---|
| 199 |  I CTR=1 S PRCSIP=$P(^TMP($J,"PRCSUT",1),"^") G IPQ
 | 
|---|
| 200 |  F I=1:1:CTR D  Q:$D(DIRUT)
 | 
|---|
| 201 |  .   W !,?5,I,") ",$P(^TMP($J,"PRCSUT",I),"^",2)
 | 
|---|
| 202 |  .   I I#(IOSL-2)=0 K DIR S DIR(0)="E" D ^DIR
 | 
|---|
| 203 |  S DIR(0)="NO^1:"_CTR_":0"
 | 
|---|
| 204 |  S DIR("A")="Select INVENTORY POINT"
 | 
|---|
| 205 |  S DIR("?",1)="Enter a number from 1 to "_CTR_" to select the displayed"
 | 
|---|
| 206 |  S DIR("?")="Inventory Point. This is an optional response."
 | 
|---|
| 207 |  D ^DIR K DIR
 | 
|---|
| 208 |  I Y>0 S PRCSIP=$P(^TMP($J,"PRCSUT",Y),"^") W "  ",$P(^TMP($J,"PRCSUT",Y),"^",2),!
 | 
|---|
| 209 | IPQ K ^TMP($J,"PRCSUT")
 | 
|---|
| 210 |  Q
 | 
|---|