1 | PRCHRPTX ;AAC/JDM-PRCH ITEM HISTORY BY DATE RANGE ; [1/13/99 11:13am]
|
---|
2 | V ;;5.1;IFCAP;;Oct 20, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; <<<<<<<<<<<< Expected Variables In >>>>>>>>>>>>>
|
---|
6 | ; PRC("SITE")=Stn.# (Mandatory)
|
---|
7 | ; ITMNO;ITMNO=Item Master #
|
---|
8 | ; <<<<<<<<<<<< Other Variables Used >>>>>>>>>>>>>>
|
---|
9 | ; FR1 & TO1=Starting and ending FCP for sort
|
---|
10 | ; FR2 & TO2=Starting & ending Stn.# for sort (Set from PRC("SITE")
|
---|
11 | ; FR3 & TO3=Starting & ending Itm.# for sort (Set from ITMNO)
|
---|
12 | ; FR4 & TO4=Starting & ending PO Date for sort
|
---|
13 | ; ITMDESC=Set from file entry
|
---|
14 | ;
|
---|
15 | EN ;DISPLAY ITEM HISTORY
|
---|
16 | ;
|
---|
17 | XXLST S STN=PRC("SITE")
|
---|
18 | S ABORT=0
|
---|
19 | W !,"STN: ",STN
|
---|
20 | K DIR
|
---|
21 | S DIR(0)="S^ALL:ALL FCPs;RANGE:RANGE of FCPs;SPECIFIC:SPECIFIC FCP"
|
---|
22 | S DIR("A")="List Item Activity (by DATE RANGE) for"
|
---|
23 | S DIR("B")="ALL"
|
---|
24 | D ^DIR
|
---|
25 | I X["^"!($D(DTOUT)) G EXIT
|
---|
26 | S SCTL=X
|
---|
27 | I $E(X,1)="A"!($E(X,1)="a") D G XXITM
|
---|
28 | . S FR2=STN
|
---|
29 | . S TO2=STN
|
---|
30 | . S FR1=0
|
---|
31 | . S TO1="99999 ZZZ"
|
---|
32 | . Q
|
---|
33 | W !!,"START WITH FCP"
|
---|
34 | I $E(SCTL,1)="S"!($E(SCTL,1)="s") W " and END WITH FCP"
|
---|
35 | S DIC="^PRC(420,STN,1,"
|
---|
36 | S DIC(0)="QEAMNZ"
|
---|
37 | D ^DIC
|
---|
38 | I X="^" G EXIT
|
---|
39 | I Y'>0 W !,"INVALID SELECTION. TRY AGAIN ('^' TO ABORT)." G XXLST
|
---|
40 | S X=$P(Y,U,2)
|
---|
41 | S FR1=$P(X," ",1)
|
---|
42 | S FR2=STN
|
---|
43 | I $E(SCTL,1)="S"!($E(SCTL,1)="s") G XFCP
|
---|
44 | ;
|
---|
45 | TOFCP W !!,"END WITH FCP"
|
---|
46 | D ^DIC
|
---|
47 | I Y'>0 W !,"INVALID SELECTION. TRY AGAIN ('^' TO ABORT)." G TOFCP
|
---|
48 | I X="^" G EXIT
|
---|
49 | ;
|
---|
50 | XFCP S X=$P(Y,U,2)
|
---|
51 | S TO1=$P(X," ",1)
|
---|
52 | S TO2=STN
|
---|
53 | ;
|
---|
54 | XXITM I $D(ITMNO) D G XXDT
|
---|
55 | . S FR3=ITMNO
|
---|
56 | . S TO3=ITMNO
|
---|
57 | . Q
|
---|
58 | S DIC="^PRC(441,"
|
---|
59 | S DIC(0)="QEAMNZ"
|
---|
60 | D ^DIC
|
---|
61 | I X="^" G EXIT
|
---|
62 | I Y'>0 W !,"INVALID SELECTION" G XXITM
|
---|
63 | S ITMNO=$P(Y(0),U,1)
|
---|
64 | S FR3=ITMNO
|
---|
65 | S TO3=ITMNO
|
---|
66 | ;
|
---|
67 | XXDT S ITMDESC=$P(^PRC(441,ITMNO,0),U,2)
|
---|
68 | D NOW^%DTC
|
---|
69 | D YX^%DTC
|
---|
70 | S DTX=$P(Y,"@",1)
|
---|
71 | S DTX="JAN 1,"_$P(DTX,",",2)
|
---|
72 | K DIR
|
---|
73 | S DIR(0)="D"
|
---|
74 | S DIR("A")="DATE ORDERED (BEGIN RANGE)"
|
---|
75 | S DIR("B")=DTX
|
---|
76 | D ^DIR
|
---|
77 | I $D(DTOUT)!(X["^") G EXIT
|
---|
78 | D ^%DT
|
---|
79 | S FR4=Y
|
---|
80 | K DIR
|
---|
81 | S DIR(0)="D"
|
---|
82 | S DIR("A")="DATE ORDERED (END RANGE) "
|
---|
83 | S DIR("B")="TODAY"
|
---|
84 | D ^DIR
|
---|
85 | I $D(DTOUT)!(X["^") G EXIT
|
---|
86 | D ^%DT
|
---|
87 | S TO4=Y
|
---|
88 | ;
|
---|
89 | S NX=0
|
---|
90 | ;
|
---|
91 | S ZTSAVE("FR1")=""
|
---|
92 | S ZTSAVE("FR2")=""
|
---|
93 | S ZTSAVE("FR3")=""
|
---|
94 | S ZTSAVE("FR4")=""
|
---|
95 | S ZTSAVE("TO1")=""
|
---|
96 | S ZTSAVE("TO2")=""
|
---|
97 | S ZTSAVE("TO3")=""
|
---|
98 | S ZTSAVE("TO4")=""
|
---|
99 | S ZTSAVE("ITMNO")=""
|
---|
100 | S ZTSAVE("ITMDESC")=""
|
---|
101 | D EN^XUTMDEVQ("LOOPPD^PRCHRPTX","ITEM HISTORY Report by Date Range",.ZTSAVE,.%ZIS)
|
---|
102 | I '$D(ZTSK) W ! G EXIT
|
---|
103 | K ZTSK
|
---|
104 | Q
|
---|
105 | ;
|
---|
106 | LOOPPD ; Set up to locate records to display.
|
---|
107 | N FCPS,FCPE,STN,DATES,DATET,LNCT,ABORT,NX,SITFCPS,SITFCPE
|
---|
108 | N FCP,COUNT,HDR,PG
|
---|
109 | S PG=0
|
---|
110 | S FCPS=FR1
|
---|
111 | S FCPE=TO1
|
---|
112 | S STN=FR2
|
---|
113 | S ITMNO=FR3
|
---|
114 | S DATES=FR4
|
---|
115 | S DATET=TO4
|
---|
116 | S ABORT=0
|
---|
117 | S NX=0
|
---|
118 | S SITFCPS=STN_FCPS
|
---|
119 | S SITFCPE=STN_FCPE
|
---|
120 | ;
|
---|
121 | LOOPPD1 ; Loop through file 441.
|
---|
122 | ;
|
---|
123 | ; 1. Loop through Fund Control Point for PRC("SITE")
|
---|
124 | ; within one Item Master File Number.
|
---|
125 | ; 2. Loop through P.O. DATE (in reverse order).
|
---|
126 | ; 3. Loop through a single P.O. DATE to get file 442 PO NUMBER.
|
---|
127 | ;
|
---|
128 | ; These three nested loops will locate Purchase Orders to display.
|
---|
129 | ;
|
---|
130 | S FCP=0
|
---|
131 | S COUNT=0
|
---|
132 | ;
|
---|
133 | ; Get FCP.
|
---|
134 | ;
|
---|
135 | F S FCP=$O(^PRC(441,ITMNO,4,"B",FCP)) Q:FCP'>0 D Q:ABORT=1
|
---|
136 | . Q:STN'=$E(FCP,1,$L(STN))
|
---|
137 | . Q:FCPS>0&((FCP<SITFCPS)!(FCP>SITFCPE))
|
---|
138 | . ;
|
---|
139 | . ; Because DATE in "AC" x-reference is in reverse order(latest
|
---|
140 | . ; date first) the search must start after TO4, the ending PO date.
|
---|
141 | . ;
|
---|
142 | . S DATE=(9999999-DATET)-1
|
---|
143 | . S NODATE=0
|
---|
144 | . ;
|
---|
145 | . ; Starting a new FCP. Force listing a header.
|
---|
146 | . ;
|
---|
147 | . K HDR
|
---|
148 | . ;
|
---|
149 | . ; Get DATE.
|
---|
150 | . ;
|
---|
151 | . F D Q:NODATE=1 Q:ABORT=1
|
---|
152 | . . S DATE=$O(^PRC(441,ITMNO,4,FCP,1,"AC",DATE))
|
---|
153 | . . I DATE'>0 S NODATE=1 Q
|
---|
154 | . . S CKDATE=9999999-DATE
|
---|
155 | . . ;
|
---|
156 | . . ; See if date found is before FR4 (starting date).
|
---|
157 | . . ; If true, there will be no more dates between FR4 and TO4.
|
---|
158 | . . ; Set the flag to stop this loop through "AC".
|
---|
159 | . . ;
|
---|
160 | . . I CKDATE<DATES S NODATE=1 Q
|
---|
161 | . . ;
|
---|
162 | . . ; If the date found is after TO4 (ending date) there may be
|
---|
163 | . . ; some dates between FR4 and TO4.
|
---|
164 | . . ;
|
---|
165 | . . Q:CKDATE>DATET
|
---|
166 | . . S PO=0
|
---|
167 | . . ;
|
---|
168 | . . ; Get PO NUMBER (may be more than one per DATE).
|
---|
169 | . . ;
|
---|
170 | . . F S PO=$O(^PRC(441,ITMNO,4,FCP,1,"AC",DATE,PO)) Q:PO'>0 D Q:ABORT=1
|
---|
171 | . . . S POCK=$G(^PRC(442,PO,0))
|
---|
172 | . . . Q:POCK']""
|
---|
173 | . . . S COUNT=COUNT+1
|
---|
174 | . . . D DISP
|
---|
175 | . . . Q
|
---|
176 | . . Q
|
---|
177 | . Q
|
---|
178 | Q
|
---|
179 | ;
|
---|
180 | DISP S LX=$O(^PRC(442,PO,2,"AE",ITMNO,0))
|
---|
181 | Q:LX'>0
|
---|
182 | S LXN0(LX)=$G(^PRC(442,PO,2,LX,0))
|
---|
183 | S LXN2(LX)=$G(^PRC(442,PO,2,LX,2))
|
---|
184 | S ND0=$G(^PRC(442,PO,0))
|
---|
185 | S ND1=$G(^PRC(442,PO,1))
|
---|
186 | S PONUM=$P(ND0,U,1)
|
---|
187 | S PODTX=$P(ND1,U,15)
|
---|
188 | S FCPX=$P(ND0,U,3)
|
---|
189 | S VP=$P(ND1,U,1)
|
---|
190 | S IMFX=$P(LXN0(LX),U,5)
|
---|
191 | S QTY=$P(LXN0(LX),U,2)
|
---|
192 | S UIP=$P(LXN0(LX),U,3)
|
---|
193 | S ACST=$P(LXN0(LX),U,9)
|
---|
194 | S QPR=+$P(LXN2(LX),U,8)
|
---|
195 | S TCST=$P(LXN2(LX),U,1)
|
---|
196 | S STNX=$P(PONUM,"-",1)
|
---|
197 | S FCPX=$P(FCPX," ",1)
|
---|
198 | S MAXL=IOSL-4
|
---|
199 | I '$D(LNCT) D Q:ABORT=1
|
---|
200 | . S LNCT=0
|
---|
201 | . D HDR
|
---|
202 | . S HDR=1
|
---|
203 | . Q
|
---|
204 | I '$D(HDR)&(LNCT>9) D Q:ABORT=1
|
---|
205 | . S HDR=1
|
---|
206 | . S LCNT=1
|
---|
207 | . D HDR
|
---|
208 | . Q
|
---|
209 | S LNCT=LNCT+3
|
---|
210 | D:LNCT>MAXL HDR
|
---|
211 | S X=PODTX
|
---|
212 | D H^%DTC
|
---|
213 | D YX^%DTC
|
---|
214 | S PODT=Y
|
---|
215 | S UIPX=" "
|
---|
216 | S VNDX=" "
|
---|
217 | S:UIP'="" UIPX=$P(^PRCD(420.5,UIP,0),U,1)
|
---|
218 | S:VP'=""&(VP'=0) VNDX=$P(^PRC(440,VP,0),U,1)
|
---|
219 | S:ACST'["." ACST=ACST_".00"
|
---|
220 | S:TCST'["." TCST=TCST_".00"
|
---|
221 | S ACL=$L(ACST)
|
---|
222 | S TCL=$L(TCST)
|
---|
223 | S ACS2=$P(ACST,".",2)
|
---|
224 | S TCS2=$P(TCST,".",2)
|
---|
225 | F M=1:1:2 D
|
---|
226 | . S ACS2=ACS2_$E("00",1,2-$L(ACS2))
|
---|
227 | . S TCS2=TCS2_$E("00",1,2-$L(TCS2))
|
---|
228 | . Q
|
---|
229 | S ACST=$P(ACST,".",1)_"."_ACS2
|
---|
230 | S TCST=$P(TCST,".",1)_"."_TCS2
|
---|
231 | S SP9=" "
|
---|
232 | F M=1:1:9 D
|
---|
233 | . S ACST=$E(SP9,1,9-$L(ACST))_ACST
|
---|
234 | . S TCST=$E(SP9,1,9-$L(TCST))_TCST
|
---|
235 | . S QTY=$E(SP9,1,9-$L(QTY))_QTY
|
---|
236 | . S QPR=$E(SP9,1,9-$L(QPR))_QPR
|
---|
237 | . Q
|
---|
238 | I ABORT=0 D
|
---|
239 | . W !!,PODT,?15,PONUM,?26,QPR,?38,UIPX,?48,ACST,?59,TCST,?70,QTY,!,VNDX
|
---|
240 | . S STATX=$P($G(^PRC(442,PO,7)),U,1)
|
---|
241 | . W:STATX=45 ?50,"Order Status=CANCELLED"
|
---|
242 | . Q
|
---|
243 | Q
|
---|
244 | ;
|
---|
245 | MOFCP K DIR
|
---|
246 | S DIR(0)="Y"
|
---|
247 | S DIR("A")="Would you like to do another FCP Date-Range Listing for this item"
|
---|
248 | S DIR("B")="NO"
|
---|
249 | D ^DIR
|
---|
250 | I $D(DTOUT)!(X["^")!(X["N")!(X="n") G EXIT
|
---|
251 | G XXLST
|
---|
252 | ;
|
---|
253 | EXIT K CST,P2,ABORT
|
---|
254 | D Q^PRCHRPT1
|
---|
255 | G EN^PRCHRPT1
|
---|
256 | ;
|
---|
257 | CALCCST ; EP -- CALCULATES ACTUAL UNIT COST TO 2 DECIMALS
|
---|
258 | S CST=$P(X,U,9)
|
---|
259 | I CST'["." S CST=CST_"."
|
---|
260 | S P2=$P(CST,".",2)
|
---|
261 | I $L(P2)=0 S P2="00"
|
---|
262 | I $L(P2)=1 S P2=P2_"0"
|
---|
263 | I $L(P2)>2&($E(P2,3)>4) S $E(P2,2)=$E(P2,2)+1
|
---|
264 | I $L(P2)>2 S P2=$E(P2,1,2)
|
---|
265 | S CST=$P(CST,".",1)_"."_P2
|
---|
266 | F J=1:1:10 I $L(CST)<10 S CST=" "_CST
|
---|
267 | W CST
|
---|
268 | Q
|
---|
269 | ;
|
---|
270 | HDR I $E(IOST)="C"&(LNCT'=0) W ! D PAUSE Q:ABORT=1
|
---|
271 | S FCPD=FCPX
|
---|
272 | S PG=PG+1
|
---|
273 | S:FCPX>0 FCPD=$P(ND0,U,3)
|
---|
274 | W @IOF,!!,"Item Number: ",ITMNO,?25,"Description: "
|
---|
275 | W ITMDESC,?71,"Page ",PG
|
---|
276 | W !?7,"SITE: ",STN,?25,"FCP: ",FCPD,!!,?26,"Quantity"
|
---|
277 | W !,?26,"Previously",?38,"Unit of",?71,"Quantity"
|
---|
278 | W !,"Date Ordered",?15,"PO Number",?26,"Received",?38,"Purchase"
|
---|
279 | W ?48,"Unit Cost",?59,"Total Cost",?71,"Ordered",!
|
---|
280 | F I=1:1:80 W "_"
|
---|
281 | S LNCT=9
|
---|
282 | Q
|
---|
283 | ;
|
---|
284 | PAUSE ; Test for prompt to return or exit
|
---|
285 | K DIR
|
---|
286 | S ABORT=0
|
---|
287 | S DIR(0)="E"
|
---|
288 | D ^DIR
|
---|
289 | I Y=""!(Y=0) S ABORT=1
|
---|
290 | Q
|
---|
291 | ;
|
---|
292 | ASK Q:$E(IOST)="P"
|
---|
293 | W !!,"Press RETURN to continue"
|
---|
294 | R X:DTIME
|
---|
295 | S ASK=1
|
---|
296 | Q
|
---|