1 | PRCSCK ;SF-ISC/KSS/TKW/SC-CP INPUT TEMPLATE CHECK RTN ; 3/31/05 3:12pm
|
---|
2 | V ;;5.1;IFCAP;**81**;Oct 20, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;PRC*5.1*81-SC-Adding a display of DM date needed by data, only if
|
---|
6 | ;the trx. originated from DynaMed.
|
---|
7 | ;
|
---|
8 | ;PRCSF-(FLAG) SET IF ENTERING AT TOP OF ROUTINE
|
---|
9 | ;
|
---|
10 | S (PRCSF,PRCSERR)=0 F PRCSI=0:0 S PRCSI=$O(^PRCS(410,DA,"IT",PRCSI)) Q:'PRCSI D 2 Q:PRCSERR S PRCSERR=0 D 1 Q:PRCSERR D ^PRCSCK1
|
---|
11 | I $D(PRCSERR),PRCSERR G EX
|
---|
12 | D SCP0^PRCSCK1
|
---|
13 | EX K PRCSI,PRCSF,PRCSQT,PRCSDA,PRCSDA1,PRCSDA2,PRCS Q
|
---|
14 | 1 I $D(PRCSF) S PRCSDA2=DA,PRCSDA1=PRCSI,PRCSQT=$S($D(^PRCS(410,PRCSDA2,"IT",PRCSDA1,0)):$P(^(0),U,2),1:"") I PRCSQT D QRB2
|
---|
15 | Q
|
---|
16 | 2 ;ENTRY POINT WITHIN SUB-FIELD - (DA & DA(1)) DEFINED, OR
|
---|
17 | ;SUBROUTINE OF ABOVE (PRCSI AND DA) DEFINED.PRCSF (FLAG) SET
|
---|
18 | Q:'$D(DA) I '$D(PRCSF) Q:'$D(DA(1))
|
---|
19 | N SPEC,PRCSIDA,PRCSBOC S SPEC=$P($G(^PRC(420,PRC("SITE"),1,+PRC("CP"),0)),"^",12)
|
---|
20 | S PRCSERR=0,PRCSJ=DA S:'$D(PRCSF) PRCSI=DA,PRCSJ=DA(1)
|
---|
21 | S:$D(^PRCS(410,PRCSJ,"IT",PRCSI,0)) PRCSVAR=^(0)
|
---|
22 | D @$S(PRCSDR["2237":9,PRCSDR["IB":8,PRCSDR["NPR":8,1:7)
|
---|
23 | I PRCSERR S PRCSL=$S(PRCSERR=2:"QUANTITY",PRCSERR=3:"UNIT OF PURCHASE",PRCSERR=4:"BOC",PRCSERR=5:"ITEM MASTER FILE NO.",PRCSERR=10:"INTERMEDIATE PRODUCT CODE",1:"ESTIMATED ITEM UNIT COST")
|
---|
24 | I PRCSERR W !,?3,$C(7),"ITEM # "_$P(^PRCS(410,PRCSJ,"IT",PRCSI,0),U,1)_" "_PRCSL_" MISSING!" S Y="@1"
|
---|
25 | K PRCSJ,PRCSL,PRCSVAR K:'$D(PRCSF) PRCSI Q
|
---|
26 | 3 I $D(PRCSVAR) S PRCSERR=$S($P(PRCSVAR,U,2)="":2,$P(PRCSVAR,U,3)="":3,$P(PRCSVAR,U,7)="":7,1:0)
|
---|
27 | Q
|
---|
28 | 4 I $D(PRCSVAR),$P(PRCSVAR,U,4)="",($D(^PRC(420,PRC("SITE"),1,+PRC("CP"),0)))&($P(^PRC(420,PRC("SITE"),1,+PRC("CP"),0),U,12)'>1)!'$D(^PRC(420,PRC("SITE"),1,+PRC("CP"),0)) S PRCSERR=4
|
---|
29 | S PRCSIDA=+$P(^PRCS(410,PRCSJ,"IT",PRCSI,0),"^",5)
|
---|
30 | Q
|
---|
31 | 5 I $D(PRCSVAR),$P(PRCSVAR,U,2)="" S PRCSERR=2
|
---|
32 | Q
|
---|
33 | 6 I $D(PRCSVAR),$P(PRCSVAR,U,11)="",$D(^PRC(411,PRC("SITE"),0)),$P(^(0),U,18)="Y" S PRCSERR=10
|
---|
34 | Q
|
---|
35 | 7 I $D(^PRCS(410,PRCSJ,3)),$P(^(3),U,4),$D(^(2)),$P(^(2),U,1)'="",$D(PRCSVAR)&($P(PRCSVAR,U,5)'="") D 5 Q:PRCSERR D 4
|
---|
36 | E D 3 Q:PRCSERR D 4
|
---|
37 | Q:PRCSERR D:PRCSDR["NR]" 6
|
---|
38 | Q
|
---|
39 | 8 I $D(^PRCS(410,PRCSJ,3)),$P(^(3),U,4),$D(^(2)),$P(^(2),U,1)'="",$D(PRCSVAR) S PRCSERR=$S($P(PRCSVAR,U,5)="":5,$P(PRCSVAR,U,2)="":2,1:0) Q:PRCSERR D 4 Q:PRCSERR I PRCSDR["IB]"!(PRCSDR["NPR]") D 6
|
---|
40 | Q
|
---|
41 | 9 D 3 Q:PRCSERR D 4 Q:PRCSERR D:PRCSDR["B" 6
|
---|
42 | Q
|
---|
43 | RB S PRCST=$S($D(^PRCS(410,DA,4)):$P(^(4),U,8),1:"")
|
---|
44 | W !,?50,"TRANSACTION BEG BAL: ",$S(PRCST:$J(PRCST,0,2),1:"0.00") G EXIT
|
---|
45 | RB1 S (PRCS,PRCS(1))=0 F PRCSII=0:0 S PRCS=$O(^PRCS(410,DA(1),12,PRCS)) Q:PRCS'>0 S PRCS(1)=PRCS(1)+$P(^(PRCS,0),U,2)
|
---|
46 | D RB3
|
---|
47 | I PRCS(2)>PRCST(1) S PRCS(3)=PRCS(2)-PRCST(1) W $C(7),!,"This is $ ",$J(PRCS(3),0,2)," more than the total available.",!,"Please re-edit your entries!" S Y=".01"
|
---|
48 | E D RB4
|
---|
49 | G EXIT
|
---|
50 | RB3 S (PRCST(1),PRCS(2))=0,PRCST=$S($D(^PRCS(410,DA(1),4)):$P(^(4),U,8),1:""),PRCS(2)=PRCS(1),PRCST(1)=PRCST S:PRCS(1)["-"&(PRCST(1)["-") PRCS(2)=-PRCS(1),PRCST(1)=-PRCST Q
|
---|
51 | RB4 W ?29,"RUNNING TOTAL: ",$S(PRCS(2):$J(PRCS(2),0,2),1:"0.00"),?64,"BAL: ",$S(PRCST(1)-PRCS(2):$J(PRCST(1)-PRCS(2),0,2),1:"0.00") Q
|
---|
52 | EX1 K PRCSQT,PRCSDA,PRCSDA1,PRCSDA2 Q
|
---|
53 | EXIT K PRCSII,PRCSJJ,PRCS,PRCST Q
|
---|
54 | QRB S PRCSQT=$S($D(^PRCS(410,DA(1),"IT",DA,0)):$P(^(0),U,2),1:""),PRCSCST=$S($D(^PRCS(410,DA(1),"IT",DA,0)):$P(^(0),U,7),1:"")
|
---|
55 | W !?50,"QTY BEG BAL: ",PRCSQT
|
---|
56 | ;********************************************************************
|
---|
57 | ;if DM system param. is set & Item Mult node 4 exists then display
|
---|
58 | ;Date Needed By for DM trxs only - Patch PRC*5.1*81
|
---|
59 | ;********************************************************************
|
---|
60 | N PRCVDT,PRCVDN
|
---|
61 | I $$GET^XPAR("SYS","PRCV COTS INVENTORY",1,"Q")=1,$D(^PRCS(410,DA(1),"IT",DA,4)) S PRCVDT=$P($G(^(4)),"^",2) S PRCVDN=$$FMTE^XLFDT(PRCVDT,1) W !?37,"DynaMed's DATE NEEDED BY: "_PRCVDN
|
---|
62 | G EXIT
|
---|
63 | QRB1 S PRCSDA=DA,PRCSDA1=DA(1),PRCSDA2=DA(2) Q
|
---|
64 | QRB2 Q:'$D(PRCSQT) Q:'PRCSQT S PRCS=0,PRCS(1)=PRCSQT F PRCSJJ=1:1 S PRCS=$O(^PRCS(410,PRCSDA2,"IT",PRCSDA1,2,PRCS)) Q:PRCS'>0 S PRCS(2)=$S($D(^PRCS(410.6,+$P(^(PRCS,0),U,2),0)):$P(^(0),U,4),1:""),PRCS(1)=PRCS(1)-PRCS(2)
|
---|
65 | I '$D(PRCSF) W ?55,"QTY RUN BAL: ",PRCS(1)
|
---|
66 | S:PRCS(1)=0 PRCSERR="" I PRCS(1)<0 W !,$C(7),?15,"Total delivery schedule quantity exceeds item quantity by "_-(PRCS(1))_"." S PRCSERR=12 I '$D(PRCSF) S Y=3
|
---|
67 | Q
|
---|
68 | ISSUPFCP(STA,FCP) ;RETURN 1 IF THIS IS A SUPPLY FUND FCP, 0 IF IT ISN'T
|
---|
69 | Q ($P($G(^PRC(420,+STA,1,+FCP,0)),"^",12)=2)
|
---|
70 | ;
|
---|
71 | SUPPLYCC() ;RETURN DEFAULT CC FOR SUPPLY FUND FCPS
|
---|
72 | Q "615300 Inventory and Di"
|
---|
73 | ;
|
---|
74 | SUPPLBOC() ;RETURN DEFAULT BOC FOR SUPPLY FUND FCPS
|
---|
75 | Q 2696
|
---|
76 | ;
|
---|
77 | SETY ;SETS BRANCHING LOGIC FOR INPUT TEMPLATE 'PRCPIB' AND 'PRCSENIB' (INPUT TEMPLATES FOR ISSUE BOOK REQUESTS)
|
---|
78 | Q:'$D(PRCSERR)
|
---|
79 | S Y=$S(PRCSERR=2:2,PRCSERR=4:4,PRCSERR=5:5,1:".01")
|
---|
80 | Q
|
---|
81 | ;
|
---|
82 | CHGCCBOC(CXLTXN,RPLTXN,OFCP,MUSTCHG) ;
|
---|
83 | ;cxltxn = transaction # of cancelled transaction
|
---|
84 | ;rpltxn = transaction# of replacement transaction
|
---|
85 | ;ofcp =old fund control point if this was a temp transaction
|
---|
86 | ;mustchg=user must change (currently not ever called with this set)
|
---|
87 | ;returns 0 if no change required, 1 if change made,-1 if user must edit
|
---|
88 | ;First get FCPs. If unchanged, quit
|
---|
89 | N CXLCC,CXLFCP,CXLDA,CXLSTA,RPLCC,RPLFCP,RPLDA,RPLSTA,CCCNT,DONE,RV
|
---|
90 | N RPLBOC,I,J,DA,DR,DIE,RPLFTYPE
|
---|
91 | S CXLFCP=$$GETTXNCP(CXLTXN,.CXLDA,.CXLSTA)
|
---|
92 | S RPLFCP=$$GETTXNCP(RPLTXN,.RPLDA,.RPLSTA)
|
---|
93 | I (+CXLFCP'=+OFCP) S CXLFCP=OFCP
|
---|
94 | I +CXLFCP=+RPLFCP Q 0
|
---|
95 | S RPLFTYPE=$P($G(^PRCS(410,RPLDA,0)),U,4)
|
---|
96 | ;Set CC. Stuff if there's only one good one. Otherwise ask.
|
---|
97 | S CCCNT=$$GETCCCNT^PRCSECP(RPLSTA,RPLFCP)
|
---|
98 | I (+CCCNT=1) S RPLCC=$P(CCCNT,U,2),$P(^PRCS(410,RPLDA,3),U,3)=RPLCC W !!,"Cost Center updated to ",RPLCC,!
|
---|
99 | E D
|
---|
100 | . S DA=RPLDA,DIE=410,DR="15.5R~Enter a Valid Cost Center"
|
---|
101 | . S DIC("S")="S PRCSCC=$P(^(3),U,3) I $$VALIDCC^PRCSECP(RPLSTA,RPLFCP,+PRCSCC)"
|
---|
102 | . D ^DIE
|
---|
103 | . S RPLCC=$P(^PRCS(410,RPLDA,3),U,3)
|
---|
104 | ;
|
---|
105 | ;OK--time to deal with the BOCs now. Is there only one good one?
|
---|
106 | S RV=1,NEWBOC=$$GETBOCNT^PRCSECP(RPLSTA,RPLFCP,+RPLCC)
|
---|
107 | I +NEWBOC=1 S RPLBOC=$P(NEWBOC,U,2),DONE=1,RV=0 D
|
---|
108 | . W !!,"BOC updated to ",RPLBOC," for the new document.",!!
|
---|
109 | . I RPLFTYPE>1 D
|
---|
110 | .. S I=0 F S I=$O(^PRCS(410,RPLDA,"IT",I)) Q:I="" D
|
---|
111 | ... S $P(^PRCS(410,RPLDA,"IT",I,0),U,4)=RPLBOC
|
---|
112 | . I RPLFTYPE=1 S $P(^PRCS(410,RPLDA,3),U,6)=RPLBOC
|
---|
113 | I '$G(DONE) D
|
---|
114 | . I RPLFTYPE>1 D
|
---|
115 | .. S I=0 F S I=$O(^PRCS(410,RPLDA,"IT",I)) Q:'(I?1N.N) D
|
---|
116 | ... S RPLBOC=$P(^PRCS(410,RPLDA,"IT",I,0),U,4)
|
---|
117 | ... I RPLBOC]"" S RPLBOC(RPLBOC)=$G(RPLBOC(RPLBOC))_I_";"
|
---|
118 | .. S I=""
|
---|
119 | .. W !!," This document refers to the following BOC(s):",!
|
---|
120 | .. I $O(RPLBOC(""))="" W " [NONE]",!!
|
---|
121 | .. F S I=$O(RPLBOC(I)) Q:I="" D
|
---|
122 | ... W " BOC: ",I,":"
|
---|
123 | ... I '$$VALIDBOC^PRCSECP(RPLSTA,RPLFCP,RPLCC,I) W " ** INVALID **" S RV=-1
|
---|
124 | ... W !," BOC ",+I," ITEM(S): ",$E(RPLBOC(I),1,$L(RPLBOC(I))-1)
|
---|
125 | ... W !!
|
---|
126 | . I RPLFTYPE=1 D
|
---|
127 | .. S RPLBOC=$P($G(^PRCS(410,RPLDA,3)),U,6)
|
---|
128 | .. W !!,"This document uses BOC ",RPLBOC
|
---|
129 | .. I '$$VALIDBOC^PRCSECP(RPLSTA,RPLFCP,RPLCC,RPLBOC) W " ** INVALID **" S RV=-1
|
---|
130 | . I RV<0,MUSTCHG W !,"You must edit this document to correct the BOC entries now.",!
|
---|
131 | Q RV
|
---|
132 | ;
|
---|
133 | OKCCBOC(TRANSXN) ;TRANSXN = transaction# of transaction to check
|
---|
134 | ;returns 1 if no change required, 0 if user must edit
|
---|
135 | ;First get FCP, Form type, Station, IEN and CC
|
---|
136 | N A,CC,FCP,DA,STA,CCCNT,DONE,RV,GOODCC
|
---|
137 | N BOC,BOCC,I,J,DR,DIE,FTYPE
|
---|
138 | S FCP=$$GETTXNCP(TRANSXN,.DA,.STA)
|
---|
139 | I 'DA!'STA Q 0
|
---|
140 | S FTYPE=$P($G(^PRCS(410,DA,0)),U,4)
|
---|
141 | S CC=+$P($G(^PRCS(410,DA,3)),U,3) I 'CC Q 0
|
---|
142 | S GOODCC=$$VALIDCC^PRCSECP(STA,FCP,CC)
|
---|
143 | I 'GOODCC D Q 0
|
---|
144 | . S A(1,"F")="!!?10",A(1)="An invalid Cost Center ("_+CC_") was entered."
|
---|
145 | . S A(2,"F")="!?10",A(2)="You must re-edit this document before it can be approved."
|
---|
146 | . S A(3)=$C(7)
|
---|
147 | . D EN^DDIOL(.A)
|
---|
148 | ;
|
---|
149 | ;OK--time to deal with the BOCs now. For 1358s, check the single BOC
|
---|
150 | ;
|
---|
151 | S BOCC=$$GETBOCNT^PRCSECP(STA,FCP,CC)
|
---|
152 | S RV=1
|
---|
153 | I FTYPE=1 D Q RV
|
---|
154 | . S BOC=$P($G(^PRCS(410,DA,3)),U,6)
|
---|
155 | . I '$$VALIDBOC^PRCSECP(STA,FCP,CC,BOC) D Q
|
---|
156 | .. S A(1,"F")="!!?10",A(1)="An invalid BOC ("_+BOC_") was entered."
|
---|
157 | .. I (+BOCC=1) S $P(PRCS(410,DA,3),U,6)=$P(BOCC,U,2),A(2)="It has been changed to "_+$P(BOCC,U,2)
|
---|
158 | .. I (+BOCC'=1) S A(2)="You must re-edit this document before it can be approved."
|
---|
159 | .. S A(2,"F")="!?10"
|
---|
160 | .. S A(3)=$C(7)
|
---|
161 | .. D EN^DDIOL(.A)
|
---|
162 | .. S RV=0
|
---|
163 | ;
|
---|
164 | ;For the other form types, check all BOCs
|
---|
165 | ;
|
---|
166 | S (I,J)=0
|
---|
167 | F S I=$O(^PRCS(410,DA,"IT",I)) Q:'(I?1N.N) D
|
---|
168 | . S BOC=$P(^PRCS(410,DA,"IT",I,0),U,4)
|
---|
169 | . I '$$VALIDBOC^PRCSECP(STA,FCP,CC,BOC) D
|
---|
170 | .. S J=J+1,A(J)="An invalid BOC ("_+BOC_") was entered for item "_I_"."
|
---|
171 | .. S A(J,"F")="!?10" I J=1 S A(J,"F")="!"_A(J,"F")
|
---|
172 | .. I (+BOCC=1) S $P(^PRCS(410,DA,"IT",I,0),U,4)=$P(BOCC,U,2)
|
---|
173 | I J S RV=0,J=J+1,A(J,"F")="!?10",A(J)=$S((+BOCC'=1):"You must re-edit this document before it can be approved.",1:"BOC(s) replaced with "_+$P(BOCC,U,2)),A(J+1)=$C(7) D EN^DDIOL(.A)
|
---|
174 | Q RV
|
---|
175 | GETTXNCP(TRANSID,OUTIEN,OUTSTA) ;GET IEN AND CONTROL POINT # FOR TRANSACTION
|
---|
176 | S OUTIEN=+$O(^PRCS(410,"B",TRANSID,""))
|
---|
177 | S OUTSTA=$P($G(^PRCS(410,OUTIEN,0)),U,5)
|
---|
178 | Q $P($G(^PRCS(410,OUTIEN,3)),U,1)
|
---|