1 | PSAORDP ;BIR/JMB-Print Orders ;9/19/97
|
---|
2 | ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**7**; 10/24/97
|
---|
3 | ;This routine selects the orders, invoices, or invoice status to be
|
---|
4 | ;printed from the DRUG ACCOUNTABILITY ORDERS. It calls PSAORDP1 to
|
---|
5 | ;print processed invoices and ^PSAUP4 to print unprocessed invoices.
|
---|
6 | ;
|
---|
7 | I '$D(^XUSEC("PSA ORDERS",DUZ)) W !,"You do not hold the key to enter the option." Q
|
---|
8 | START W !! S DIR(0)="S^O:Order Number;I:Invoice Number;S:Invoice Status",DIR("A")="Print by Order#, Invoice#, or Invoice Status",DIR("B")="O",DIR("??")="^D SELHELP^PSAORDP" D ^DIR K DIR
|
---|
9 | Q:$G(DIRUT) S PSAPRT=Y,PSAOUT=0
|
---|
10 | D:PSAPRT="O" ORDER D:PSAPRT="I" INVOICE D:PSAPRT="S" STATUS G:PSAOUT EXIT
|
---|
11 | I PSAPRT="O"!(PSAPRT="I"),$O(PSAORD(""))="" G EXIT
|
---|
12 | W ! S %ZIS="Q" D ^%ZIS G:POP EXIT
|
---|
13 | I $D(IO("Q")) D G EXIT
|
---|
14 | .S ZTDESC="Drug Acct. - Print Prime Vendor Invoices",ZTRTN="DQ^PSAORDP"
|
---|
15 | .F PSASAVE="PSAINV","PSAPRT","PSASTA" S:$D(@PSASAVE) ZTSAVE(PSASAVE)=""
|
---|
16 | .S ZTSAVE("PSAORD(")="" D ^%ZTLOAD
|
---|
17 | ;
|
---|
18 | DQ S PSAOUT=0
|
---|
19 | I PSAPRT="O" D PRTORD G EXIT
|
---|
20 | I PSAPRT="I" D PRTINV G EXIT
|
---|
21 | D:PSAPRT="S" PRTSTA
|
---|
22 | ;
|
---|
23 | EXIT W:$E(IOST,1,2)="C-" @IOF D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@" K IO("Q")
|
---|
24 | K %,%ZIS,DA,DIC,DTOUT,DUOUT,PSA,PSAAECST,PSABY,PSACIEN,PSACNT,PSACTRL,PSACTRLH,PSADATA,PSADEC,PSADJDRG,PSADJSUP,PSADLN,PSADONE,PSADRG,PSADS
|
---|
25 | K PSAECOST,PSAEND,PSAFIN,PSAFIRST,PSAFPG,PSAICOST,PSAIECST,PSAIN,PSAINV,PSAINVB,PSAINVBH,PSAINVH,PSALINE,PSANDC,PSAORD,PSAORDB,PSAOUT,PSAPAGE,PSAPC,PSAPRT,PSARUN
|
---|
26 | K PSAS,PSASAVE,PSASLN,PSASS,PSAST,PSASTA,PSASUB,PSATOT,PSAXCNT,X,ZTDESC,ZTRTN,ZTSAVE
|
---|
27 | Q
|
---|
28 | ;
|
---|
29 | INVOICE ;Prompts for order and invoice
|
---|
30 | K PSAORD S (PSACNT,PSADONE,PSAFIN,PSAXCNT)=0,PSASLN="",$P(PSASLN,"-",80)=""
|
---|
31 | F W !,PSASLN S DIR(0)="FO^1:22",DIR("A")="Select ORDER NUMBER",DIR("?")="Enter the order number of the invoice to be printed",DIR("??")="^D ORDIHELP^PSAORDP" D ^DIR K DIR D Q:PSAOUT!(PSAFIN)
|
---|
32 | .S PSAORDB=Y I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 Q
|
---|
33 | .I PSAORDB="" S PSAFIN=1 Q
|
---|
34 | .Q:PSAORDB=" "
|
---|
35 | .;In 58.811
|
---|
36 | .I $O(^PSD(58.811,"B",PSAORDB,0)) S PSAORD=+$O(^PSD(58.811,"B",PSAORDB,0)),PSAINVB="" D
|
---|
37 | ..F S PSAINVB=$O(^PSD(58.811,PSAORD,1,"B",PSAINVB)) Q:PSAINVB="" S PSACNT=PSACNT+1,(PSAINV,PSAINVH)=$O(^PSD(58.811,PSAORD,1,"B",PSAINVB,0)),PSAINVBH=PSAINVB
|
---|
38 | .;In XTMP
|
---|
39 | .Q:PSAOUT S (PSACTRL,PSADONE)=0
|
---|
40 | .F S PSACTRL=$O(^XTMP("PSAPV",PSACTRL)) Q:PSACTRL=""!(PSADONE) D
|
---|
41 | ..I $P($G(^XTMP("PSAPV",PSACTRL,"IN")),"^",4)=PSAORDB S PSAXCNT=PSAXCNT+1,(PSAINVH,PSAINVB)=$P(^("IN"),"^",2),PSACTRLH=PSACTRL,PSA(PSAORDB,PSAINVB,PSACTRL)=""
|
---|
42 | .Q:PSAOUT
|
---|
43 | .I PSACNT,'PSAXCNT D Q
|
---|
44 | ..I PSACNT=1 W !,"Invoice# "_PSAINVBH S PSAORD(PSAORDB,PSAORD)=PSAINVH Q
|
---|
45 | ..D:PSACNT>1 INV
|
---|
46 | .I 'PSACNT,PSAXCNT D Q
|
---|
47 | ..I PSAXCNT=1 W !,"Invoice# "_PSAINVH S PSAORD(PSAORDB,0)=PSAINVH_"~"_PSACTRLH,PSACTRL=PSACTRLH Q
|
---|
48 | ..D:PSAXCNT>1 INVXTMP
|
---|
49 | .I PSACNT,PSAXCNT D INVBOTH Q
|
---|
50 | .I '$D(PSAORD(PSAORDB)) W !,PSAORDB_" is an invalid order number."
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | INV ;Select invoice from 58.811
|
---|
54 | S (PSACNT,PSADONE)=0
|
---|
55 | F S DA(1)=PSAORD,DIC="^PSD(58.811,"_DA(1)_",1,",DIC("A")="Select INVOICE NUMBER: ",DIC(0)="AEMZQ",DA(1)=PSAORD D ^DIC K DIC D Q:PSAOUT!(PSADONE)
|
---|
56 | .I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 Q
|
---|
57 | .I Y=-1 S PSADONE=1 Q
|
---|
58 | .I 'PSACNT S PSAORD(PSAORDB,PSAORD)=+Y,PSACNT=1 Q
|
---|
59 | .I PSACNT S PSAORD(PSAORDB,PSAORD)=PSAORD(PSAORDB,PSAORD)_","_+Y
|
---|
60 | Q
|
---|
61 | ;
|
---|
62 | INVXTMP ;Select invoice from XTMP
|
---|
63 | S (PSAXCNT,PSADONE)=0,PSAFIRST=1
|
---|
64 | F S DIR(0)="FO^1:22",DIR("A")="Select INVOICE NUMBER" D ^DIR K DIR D Q:PSAOUT!(PSADONE)
|
---|
65 | .I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 Q
|
---|
66 | .I Y="" S PSADONE=1 Q
|
---|
67 | .Q:Y=" " S PSAINV=Y
|
---|
68 | .I 'PSAXCNT S PSAORD(PSAORDB,0)=Y_"~"_PSACTRLH,PSAXCNT=1 Q
|
---|
69 | .I PSAXCNT S PSAORD(PSAORDB,0)=PSAORD(PSAORDB,0)_","_Y Q
|
---|
70 | Q
|
---|
71 | ;
|
---|
72 | INVBOTH ;Select invoice from XTMP & 58.811
|
---|
73 | S (PSADONE)=0
|
---|
74 | F S DIR(0)="FO^1:22",DIR("A")="Select INVOICE NUMBER" D ^DIR K DIR D Q:PSAOUT!(PSADONE)
|
---|
75 | .I $G(DTOUT)!($G(DUOUT)) S PSAXCNT=1 Q
|
---|
76 | .Q:Y=" "
|
---|
77 | .I Y="" S PSADONE=1 Q
|
---|
78 | .S PSAINVB=Y,PSAINV=$O(^PSD(58.811,PSAORD,1,"B",PSAINVB,0))
|
---|
79 | .I PSAINV S:$D(PSAORD(PSAORDB,PSAORD)) PSAORD(PSAORDB,PSAORD)=PSAORD(PSAORDB,PSAORD)_","_PSAINV S:'$D(PSAORD(PSAORDB,PSAORD)) PSAORD(PSAORDB,PSAORD)=PSAINV Q
|
---|
80 | .I $D(PSA(PSAORDB,PSAINVB)) S PSACTRL=$O(PSA(PSAORDB,PSAINVB,0)) I PSACTRL'="" S:$D(PSAORD(PSAORDB,0)) PSAORD(PSAORDB,0)=PSAORD(PSAORDB,0)_","_PSAINVB_"~"_PSACTRL S:'$D(PSAORD(PSAORDB,0)) PSAORD(PSAORDB,0)=PSAINVB_"~"_PSACTRL Q
|
---|
81 | .W !,PSAINVB_" is an invalid invoice number."
|
---|
82 | Q
|
---|
83 | ;
|
---|
84 | PRTINV ;Loops thru orders & invoices to print invoices
|
---|
85 | S PSAORDB="" F S PSAORDB=$O(PSAORD(PSAORDB)) Q:PSAORDB=""!(PSAOUT) D
|
---|
86 | .S PSAORD="" F S PSAORD=$O(PSAORD(PSAORDB,PSAORD)) Q:PSAORD=""!(PSAOUT) D
|
---|
87 | ..F PSAPC=1:1 S PSAINV=$P(PSAORD(PSAORDB,PSAORD),",",PSAPC) Q:PSAINV=""!(PSAOUT) D
|
---|
88 | ...I PSAORD D ^PSAORDP1 Q
|
---|
89 | ...;DAVEB (PSA*3*7)
|
---|
90 | ...S PSACTRL=$P(PSAINV,"~",2),PSAINV=$P(PSAINV,"~"),IOM=80
|
---|
91 | ...I $D(PSA(PSAORDB,$P(PSAINV,"~"))) S PSAINV=$P(PSAINV,"~"),PSACTRL=$O(PSA(PSAORDB,PSAINV,0))
|
---|
92 | ...D NOW^%DTC S Y=% D DD^%DT S PSARUN=$E(Y,1,18),PSAPAGE=1,$P(PSASLN,"-",80)="",$P(PSADLN,"=",80)="",PSADJDRG=0,PSAFPG=1
|
---|
93 | ...D START^PSAUP4
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | ORDER ;Select order
|
---|
97 | K PSAORD S PSADONE=0
|
---|
98 | F W ! S DIR(0)="FO^1:22",DIR("A")="Select ORDER NUMBER",DIR("?")="Enter the number of the order to be printed",DIR("??")="^D ORDHELP^PSAORDP" D ^DIR K DIR D Q:PSAOUT!(PSADONE)
|
---|
99 | .I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 Q
|
---|
100 | .Q:X=" "
|
---|
101 | .I X="" S PSADONE=1 Q
|
---|
102 | .I $O(^PSD(58.811,"B",Y,0)) S PSAORD(Y,+$O(^PSD(58.811,"B",Y,0)))=""
|
---|
103 | .S PSACTRL=0 F S PSACTRL=$O(^XTMP("PSAPV",PSACTRL)) Q:PSACTRL=""!(PSADONE) I $P($G(^XTMP("PSAPV",PSACTRL,"IN")),"^",4)=Y S PSAORD(Y,0)="",PSADONE=1
|
---|
104 | .S PSADONE=0
|
---|
105 | .I '$D(PSAORD(X)) W !,Y_" is an invalid order number."
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | PRTORD ;Loops thru invoices to print all for one order
|
---|
109 | S PSAORDB="" F S PSAORDB=$O(PSAORD(PSAORDB)) Q:PSAORDB=""!(PSAOUT) D
|
---|
110 | .S PSAORD="" F S PSAORD=$O(PSAORD(PSAORDB,PSAORD)) Q:PSAORD=""!(PSAOUT) D
|
---|
111 | ..I 'PSAORD S PSACTRL=0 F S PSACTRL=$O(^XTMP("PSAPV",PSACTRL)) Q:PSACTRL=""!(PSAOUT) D
|
---|
112 | ...Q:$P($G(^XTMP("PSAPV",PSACTRL,"IN")),"^",4)'=PSAORDB
|
---|
113 | ...D NOW^%DTC S Y=% D DD^%DT S PSARUN=$E(Y,1,18),PSAPAGE=1,$P(PSASLN,"-",80)="",$P(PSADLN,"=",80)="",PSADJDRG=0,PSAFPG=1
|
---|
114 | ...S PSAINV=$P($G(^XTMP("PSAPV",PSACTRL,"IN")),"^",2) D START^PSAUP4
|
---|
115 | ..I PSAORD S PSAINVB="" F S PSAINVB=$O(^PSD(58.811,PSAORD,1,"B",PSAINVB)) Q:PSAINVB=""!(PSAOUT) S PSAINV=$O(^PSD(58.811,PSAORD,1,"B",PSAINVB,0)) D ^PSAORDP1
|
---|
116 | G EXIT
|
---|
117 | ;
|
---|
118 | STATUS ;Select status
|
---|
119 | W ! S DIR(0)="SOB^U:Unprocessed;P:Processed",DIR("A")="Select Unprocessed or Processed Invoice Status",DIR("??")="^D STATHELP^PSAORDP"
|
---|
120 | D ^DIR K DIR I $G(DIRUT) S PSAOUT=1 Q
|
---|
121 | S PSASTA=Y
|
---|
122 | I PSASTA="P",'$O(^PSD(58.811,"ASTAT","P",0)) W !!,"There are no invoices with the status of Processed." G STATUS
|
---|
123 | I PSASTA="U" D G:'PSACNT STATUS
|
---|
124 | .S (PSACNT,PSACTRL)=0 F S PSACTRL=$O(^XTMP("PSAPV",PSACTRL)) Q:PSACTRL=""!(PSACNT) I $D(^XTMP("PSAPV",PSACTRL,"IN")),$P(^("IN"),"^",8)'="P" S PSACNT=1
|
---|
125 | .I 'PSACNT W !!,"There are no invoices with the status of Unprocessed."
|
---|
126 | Q
|
---|
127 | ;
|
---|
128 | PRTSTA ;Sets up printing & prints Unprocessed invoices
|
---|
129 | G:PSASTA="P" PROCESS
|
---|
130 | S PSACTRL=0 F S PSACTRL=$O(^XTMP("PSAPV",PSACTRL)) Q:PSACTRL=""!(PSAOUT) D
|
---|
131 | .Q:$P($G(^XTMP("PSAPV",PSACTRL,"IN")),"^",8)="P"
|
---|
132 | .S IOM=80 D NOW^%DTC S Y=% D DD^%DT S PSARUN=$E(Y,1,18),PSAPAGE=1,$P(PSASLN,"-",80)="",$P(PSADLN,"=",80)="",PSADJDRG=0,PSAFPG=1
|
---|
133 | .D START^PSAUP4
|
---|
134 | Q
|
---|
135 | ;
|
---|
136 | PROCESS ;Prints Processed invoices
|
---|
137 | ;S PSAORDB="" F S PSAORDB=$O(^PSD(58.811,"AORD",PSAORDB)) Q:PSAORDB=""!(PSAOUT) D
|
---|
138 | ;.S PSAINVB="" F S PSAINVB=$O(^PSD(58.811,"AORD",PSAORDB,PSAINVB)) Q:PSAINVB=""!(PSAOUT) D
|
---|
139 | ;..S PSAORD=0 F S PSAORD=$O(^PSD(58.811,"AORD",PSAORDB,PSAINVB,PSAORD)) Q:'PSAORD!(PSAOUT) D
|
---|
140 | ;...S PSAINV=0 F S PSAINV=$O(^PSD(58.811,"AORD",PSAORDB,PSAINVB,PSAORD,PSAINV)) Q:'PSAINV!(PSAOUT) D ^PSAORDP1
|
---|
141 | S PSAORD=0 F S PSAORD=$O(^PSD(58.811,"ASTAT","P",PSAORD)) Q:'PSAORD!(PSAOUT) D
|
---|
142 | .S PSAINV=0 F S PSAINV=$O(^PSD(58.811,"ASTAT","P",PSAORD,PSAINV)) Q:'PSAINV!(PSAOUT) D
|
---|
143 | ..S PSAORDB=$P($G(^PSD(58.811,PSAORD,0)),"^"),PSAINVB=$P($G(^PSD(58.811,PSAORD,1,PSAINV,0)),"^") Q:PSAORDB=""!(PSAINVB="") D ^PSAORDP1
|
---|
144 | G EXIT
|
---|
145 | ;
|
---|
146 | ORDHELP ;Extended help to Select Order
|
---|
147 | W !?5,"Enter the order number assigned to the order to be print."
|
---|
148 | Q
|
---|
149 | ORDIHELP ;Extended help to Select Invoice's Order
|
---|
150 | W !?5,"Enter the invoice's order number to be print. The invoice number ",!?5,"prompt will follow."
|
---|
151 | Q
|
---|
152 | SELHELP ;Extended help to Print by Order#, Invoice#, or Invoice Status
|
---|
153 | W !?5,"To print all invoices for a specific order, select Order Number.",!?5,"To print a specific invoice, select Invoice Number. To print all"
|
---|
154 | W !?5,"invoices with an unprocessed or processed status, select Invoice",!?5,"Status."
|
---|
155 | Q
|
---|
156 | STATHELP ;Extended help for Enter Status
|
---|
157 | W !?5,"Enter U to print all uploaded invoices that have not been processed.",!?5,"Enter P to print all processed invoices that have not been verified."
|
---|
158 | Q
|
---|