| 1 | PSACREDR ;BIR/JMB-Credit Resolution ;7/23/97 | 
|---|
| 2 | ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**3,64**; 10/24/97;Build 4 | 
|---|
| 3 | ;This routine allows the user to apply credit memos to invoices. | 
|---|
| 4 | ; | 
|---|
| 5 | I '$D(^XUSEC("PSA ORDERS",DUZ)) W !,"You do not hold the key to enter the option." Q | 
|---|
| 6 | I '$D(^XUSEC("PSAMGR",DUZ)) W !,"You do not hold the key to enter the option." Q | 
|---|
| 7 | I '$O(^PSD(58.811,"AC",1,0)) W !!,"There are no outstanding credit memos." Q | 
|---|
| 8 | S PSASLN="",$P(PSASLN,"-",80)="" | 
|---|
| 9 | START W ! S DIC="^PSD(58.811,",DIC(0)="AEQM",DIC("S")="I $D(^PSD(58.811,""AC"",1,+Y))" D ^DIC K DIE G:Y<0 EXIT | 
|---|
| 10 | G:'$D(^PSD(58.811,+Y,0)) START | 
|---|
| 11 | S PSAIEN=+Y,(PSAIEN1,PSAOUT)=0 | 
|---|
| 12 | F  S PSAIEN1=$O(^PSD(58.811,"AC",1,PSAIEN,PSAIEN1)) Q:'PSAIEN1  D | 
|---|
| 13 | .Q:'$D(^PSD(58.811,PSAIEN,1,PSAIEN1,0)) | 
|---|
| 14 | .S (PSACRED,PSAAECST,PSAIECST)=0 | 
|---|
| 15 | .S PSAIEN2=0 F  S PSAIEN2=+$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2)) Q:'PSAIEN2!(PSAOUT)  D LINE Q:PSAOUT | 
|---|
| 16 | .D CREDITS | 
|---|
| 17 | D LIST | 
|---|
| 18 | G:PSAOUT EXIT G START | 
|---|
| 19 | ; | 
|---|
| 20 | EXIT ;Kills printing variables only | 
|---|
| 21 | K DA,DIC,DIE,DIR,DIRUT,DR,PSA,PSAAECST,PSACIEN,PSACNT,PSACRED,PSADATA,PSADIF,PSADJ,PSADJD,PSADJDA,PSADJP,PSADJQ,PSADJSUP | 
|---|
| 22 | K PSAIECST,PSAIEN,PSAIEN1,PSAIEN2,PSAINV,PSALEN,PSAMENU,PSANODE,PSAOUT,PSAPC,PSAPRICE,PSASEL,PSASLN,Y | 
|---|
| 23 | Q | 
|---|
| 24 | ; | 
|---|
| 25 | LINE ;Get line item data | 
|---|
| 26 | Q:'$D(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,0)) | 
|---|
| 27 | K PSADJQ,PSADJP,PSADJD | 
|---|
| 28 | S PSADATA=^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,0),PSADJSUP=0 | 
|---|
| 29 | ;Next line added 4dec97 to bypass checking drug name change | 
|---|
| 30 | G DAVE | 
|---|
| 31 | DRUG S PSADJ=+$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,1,"B","D",0)) | 
|---|
| 32 | I $G(PSADJ) D  Q:'PSADJSUP | 
|---|
| 33 | .S PSANODE=$G(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,1,PSADJ,0)) | 
|---|
| 34 | .S PSADJD=$S($P(PSANODE,"^",6)'="":$P(PSANODE,"^",6),1:$P(PSANODE,"^",2)) | 
|---|
| 35 | .Q:$G(PSADJD)&($L(PSADJD)=+$L(PSADJD)) | 
|---|
| 36 | .S PSADJSUP=1 | 
|---|
| 37 | DAVE S PSAIECST=PSAIECST+($P(PSADATA,"^",3)*$P(PSADATA,"^",5)) | 
|---|
| 38 | PRICE S PSADJP=0,PSADJ=+$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,1,"B","P",0)) | 
|---|
| 39 | I $G(PSADJ) S PSANODE=$G(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,1,PSADJ,0)),PSAPRICE=$S($P(PSANODE,"^",6)'="":$P(PSANODE,"^",6),1:+$P(PSANODE,"^",2)) | 
|---|
| 40 | I '+PSADJ S PSAPRICE=$P(PSADATA,"^",5) | 
|---|
| 41 | QTY S PSADJQ=0,PSADJ=+$O(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,1,"B","Q",0)) | 
|---|
| 42 | I $G(PSADJ) S PSANODE=$G(^PSD(58.811,PSAIEN,1,PSAIEN1,1,PSAIEN2,1,PSADJ,0)),PSADJQ=$S($P(PSANODE,"^",6)'="":+$P(PSANODE,"^",6),1:$P(PSANODE,"^",2)) | 
|---|
| 43 | I $G(PSADJQ) S PSAAECST=PSAAECST+(PSADJQ*PSAPRICE) | 
|---|
| 44 | I '$G(PSADJQ) S PSAAECST=PSAAECST+($P(PSADATA,"^",3)*PSAPRICE) | 
|---|
| 45 | Q | 
|---|
| 46 | ; | 
|---|
| 47 | CREDITS ;Adds existing credits to adjusted extended cost. | 
|---|
| 48 | S PSACIEN=0 F  S PSACIEN=$O(^PSD(58.811,PSAIEN,1,PSAIEN1,2,PSACIEN)) Q:'PSACIEN  D | 
|---|
| 49 | .Q:'$D(^PSD(58.811,PSAIEN,1,PSAIEN1,2,PSACIEN,0)) | 
|---|
| 50 | .S PSACRED=PSACRED+$P(^PSD(58.811,PSAIEN,1,PSAIEN1,2,PSACIEN,0),"^",3) | 
|---|
| 51 | S:PSAAECST'=PSAIECST PSA(PSAIEN1)=PSAIECST_"^"_$J(PSAAECST,$L($P(PSAAECST,".")),2)_"^"_PSACRED | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | LIST ;Displays the invoices with outstanding credits | 
|---|
| 55 | W @IOF,!,"Order#: "_$P($G(^PSD(58.811,PSAIEN,0)),"^") | 
|---|
| 56 | W !?28,"Invoice",?42,"Adjusted",?56,"Received",!?4,"Invoice#",?31,"Cost",?46,"Cost",?57,"Credits",?69,"Difference",!,PSASLN | 
|---|
| 57 | S (PSACNT,PSAIEN1)=0 F  S PSAIEN1=+$O(PSA(PSAIEN1)) Q:'PSAIEN1  D | 
|---|
| 58 | .S PSAIECST=+$P(PSA(PSAIEN1),"^"),PSAAECST=+$P(PSA(PSAIEN1),"^",2),PSACRED=+$P(PSA(PSAIEN1),"^",3) | 
|---|
| 59 | .S PSACNT=PSACNT+1,PSAMENU(PSACNT,PSAIEN1)=PSA(PSAIEN1) | 
|---|
| 60 | .W !,($J(PSACNT,2)),".",?4,$P($G(^PSD(58.811,PSAIEN,1,PSAIEN1,0)),"^"),?26,$J(PSAIECST,9,2),?41,$J(PSAAECST,9,2) | 
|---|
| 61 | .W ?55,$J(PSACRED,9,2) | 
|---|
| 62 | .S PSADIF=PSAIECST-(PSAAECST+PSACRED) | 
|---|
| 63 | .W ?70,$J(PSADIF,9,2) | 
|---|
| 64 | I PSACNT'>0 W !!!,?10,"NO INVOICES ON THIS ORDER # FOR CREDITING PURPOSES",! Q  ;Dave Blocker 3Dec97 | 
|---|
| 65 | W ! K DIR S DIR(0)="LO^1:"_PSACNT,DIR("A")="Select invoices",DIR("?")="Select the invoices to which you want to apply credit memos.",DIR("??")="^D CREDHELP^PSACREDR" | 
|---|
| 66 | D ^DIR K DIR Q:Y=""  I $G(DIRUT) S PSAOUT=1 Q | 
|---|
| 67 | S PSASEL=Y | 
|---|
| 68 | ; | 
|---|
| 69 | SELECT ;Selects invoices for credit memos | 
|---|
| 70 | F PSAPC=1:1 S PSACNT=+$P(PSASEL,",",PSAPC) Q:'PSACNT  D  Q:PSAOUT | 
|---|
| 71 | .S PSAINV=$O(PSAMENU(PSACNT,0)),PSAIECST=$P(PSAMENU(PSACNT,PSAINV),"^"),PSAAECST=$P(PSAMENU(PSACNT,PSAINV),"^",2),PSACRED=$P(PSAMENU(PSACNT,PSAINV),"^",3) | 
|---|
| 72 | .W !!,"Invoice: "_$P($G(^PSD(58.811,PSAIEN,1,PSAINV,0)),"^"),! | 
|---|
| 73 | .S DA(2)=PSAIEN,DA(1)=PSAINV,DA=PSAIEN2 | 
|---|
| 74 | .S:'$D(^PSD(58.811,PSAIEN,1,PSAINV,2,0)) DIC("P")=$P(^DD(58.8112,6,0),"^",2) | 
|---|
| 75 | .S DIC="^PSD(58.811,"_DA(2)_",1,"_DA(1)_",2,",DIC(0)="AEMQL",DIC("A")="CREDIT MEMO: ",DR=.01,DLAYGO=58.811 | 
|---|
| 76 | .F  L +^PSD(58.811,PSAIEN,1,PSAINV,2,0):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I  Q | 
|---|
| 77 | .D ^DIC K DLAYGO I Y<0 S PSAOUT=1 K DIC Q | 
|---|
| 78 | .S DIE=DIC,DR="1;2;3",(PSADJDA,DA)=+Y D ^DIE K DA,DIE,DIC L -^PSD(58.811,PSAIEN,1,PSAINV,2,0) | 
|---|
| 79 | .S PSACRED=PSACRED+$P($G(^PSD(58.811,PSAIEN,1,PSAINV,2,PSADJDA,0)),"^",3) | 
|---|
| 80 | .I PSAIECST=$J((PSAAECST+PSACRED),2) S DA(1)=PSAIEN,DA=PSAINV,DIE="^PSD(58.811,"_DA(1)_",1,",DR="10////0" D ^DIE K DIE | 
|---|
| 81 | .W !!,"Invoice: "_$P($G(^PSD(58.811,PSAIEN,1,PSAINV,0)),"^") S PSALEN=$L($P($G(^PSD(58.811,PSAIEN,1,PSAINV,0)),"^"))+11 | 
|---|
| 82 | .W ?PSALEN,"Total Invoiced Cost: "_$J(PSAIECST,9,2),!?PSALEN,"Total Adjusted Cost: "_$J(PSAAECST,9,2) | 
|---|
| 83 | .W !?PSALEN,"Total Credits      : "_$J(PSACRED,9,2) | 
|---|
| 84 | .W !?PSALEN,"Difference         : "_$J((PSAIECST-(PSAAECST+PSACRED)),9,2),! | 
|---|
| 85 | Q | 
|---|
| 86 | ; | 
|---|
| 87 | CREDHELP ;Extended help to 'Select invoices' | 
|---|
| 88 | W !?5,"Enter the numbers to the left of the invoices for which you want to",!?5,"enter credit memos. To select more than one invoice number, enter" | 
|---|
| 89 | W !?5,"the numbers to the left of the invoices separated by a comma or a dash.",!!?5,"For example: Enter 1,2,3,5 or 1-3,5" | 
|---|
| 90 | Q | 
|---|