Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ACRFIV5

ACRFIV5.m

Go to the documentation of this file.
  1. ACRFIV5 ;IHS/OIRM/DSD/THL,AEF - INVOICE AUDIT; [ 07/24/2002 10:20 AM ]
  1. ;;2.1;ADMIN RESOURCE MGT SYSTEM;**3**;NOV 05, 2001
  1. ;;ROUTINE CALLED DURING PROCESSING OF INVOICES
  1. EN K ^TMP("ACRSYNC",$J)
  1. D EXIT
  1. D GATHER
  1. Q:'$D(^TMP("ACRIV",$J))
  1. F D CHOOSE Q:$D(ACRQUIT)!$D(ACROUT)
  1. EXIT K ACRSSDT,ACRSSNMS,ACRSSDSC,ACRNOTES,ACRSSUP,ACRSSORD,ACRSSACT,ACRIVACP,ACRSSIT,ACRIVIT,ACRSST,ACRIVT,ACRSSTX,ACRIVTX,ACRRR,ACRRRDA,ACRSS,ACRQUIT,ACRIVPAY,ACRIVTA,ACRRRACP,ACRRRIT,ACRRRT,ACRRRTA,ACRRRUP
  1. K ^TMP("ACRIV",$J)
  1. S ACRQUIT=""
  1. S:'$D(ACROUT)&$D(ACRIVPAY) ACRFINAL=0
  1. Q:'$D(^TMP("ACRSYNC",$J))
  1. K ACRIVPAY
  1. S ACRSSDA=0
  1. F S ACRSSDA=$O(^TMP("ACRSYNC",$J,ACRSSDA)) Q:'ACRSSDA D PAY
  1. I '$D(ACRIVPAY) D Q
  1. .W !!,"No items were marked to be paid at this time."
  1. .D PAUSE^ACRFWARN
  1. .S ACRQUIT=""
  1. Q
  1. GATHER ;EP;GATHER INFO ON RECEIVING ACTIONS
  1. I '$D(^ACRRR("AC",ACRDOCDA)) D Q
  1. .W !!,"No RECEIVING REPORTS on file for this DOCUMENT." ;ACR*2.1*3.16
  1. .D PAUSE^ACRFWARN
  1. .S ACRQUIT="" Q
  1. N ACRSSDA,X,Y,Z
  1. S (ACRSSDA,ACRMAX)=0
  1. F S ACRSSDA=$O(^ACRSS("J",ACRDOCDA,ACRSSDA)) Q:'ACRSSDA D
  1. .S ACRX=+^ACRSS(ACRSSDA,0)
  1. .S ACRMAX=ACRMAX+1
  1. .I ACRX'=ACRMAX D
  1. ..S DA=ACRSSDA
  1. ..S DIE="^ACRSS("
  1. ..S DR=".01///^S X=ACRMAX"
  1. ..D DIE^ACRFDIC
  1. ..S ACRX=ACRMAX
  1. .S ^TMP("ACRIV",$J,ACRX)=ACRSSDA
  1. Q
  1. CHOOSE ;CHOOSE WHICH ORDERED ITEMS TO INVOICE FOR
  1. D ITEMS
  1. S DIR(0)="SO^1:Invoice ALL REMAINING QUANTITIES for ALL items;2:Invoice for SELECTED items only;3:RE-Set Number Invoiced;4:Display PURCHASE ORDER Items"
  1. S DIR("A")="Which one"
  1. W !
  1. D DIR^ACRFDIC
  1. I 'Y S ACRQUIT="" Q
  1. I Y=1 D ALL Q
  1. I Y=2 D SELECT Q
  1. I Y=3 D RESET Q
  1. I Y=4 D ITEMS
  1. Q
  1. ALL ;
  1. N ACRSSDA,ACRZ
  1. S ACRZ=0
  1. F S ACRZ=$O(^TMP("ACRIV",$J,ACRZ)) Q:'ACRZ D ALL1
  1. W !!,"All items have been marked as INVOICED in full."
  1. D PAUSE^ACRFWARN
  1. Q
  1. ALL1 S ACRSSDA=+^TMP("ACRIV",$J,ACRZ)
  1. S $P(^TMP("ACRSYNC",$J,ACRSSDA),U,3)=$P(^TMP("ACRSYNC",$J,ACRSSDA),U)-$P(^(ACRSSDA),U,2)
  1. S $P(^TMP("ACRSYNC",$J,ACRSSDA),U,2)=$P(^TMP("ACRSYNC",$J,ACRSSDA),U)
  1. S $P(^TMP("ACRSYNC",$J,ACRSSDA),U,5)=ACRIVUP
  1. Q
  1. SELECT D S1
  1. Q:$G(ACRXX)=""
  1. S DIR(0)="SO^1:Selected Items COMPLETELY INVOICED at listed cost;2:Edit Individual Items"
  1. S DIR("A")="Which one"
  1. W !
  1. D DIR^ACRFDIC
  1. Q:'Y
  1. I Y=1 D EALL Q
  1. I Y=2 D EDIT
  1. Q
  1. S1 ;SELECT ITEM(S)
  1. I ACRMAX=1 S ACRY=+ACRSS0
  1. E D
  1. .S DIR(0)="LOA^1:"_ACRMAX
  1. .S DIR("A")="Invoice for which items: "
  1. .W !
  1. .D DIR^ACRFDIC
  1. .I '+Y S ACRQUIT="" Q
  1. S ACRXX=ACRY
  1. Q
  1. EALL ;
  1. F ACRI=1:1 S ACRZ=$P(ACRXX,",",ACRI) Q:'ACRZ D:$D(^TMP("ACRIV",$J,ACRZ)) ALL1
  1. Q
  1. EDIT F ACRI=1:1 S ACRZ=$P(ACRXX,",",ACRI) Q:'ACRZ D:$D(^TMP("ACRIV",$J,ACRZ)) IQ
  1. Q
  1. IQ ;EDIT INVOICE QUANTITIES
  1. D IDHEAD
  1. S ACRSSDA=+^TMP("ACRIV",$J,ACRZ)
  1. D IDISPLAY
  1. D IEDIT
  1. Q
  1. IEDIT S DIR(0)="NOA^"_(ACRIVTA*-1)_":"_(ACRRRTA-ACRIVTA)_":3"
  1. S DIR("A")="QUANTITY INVOICED: "
  1. W !
  1. D DIR^ACRFDIC
  1. Q:$D(ACRQUIT)!$D(ACROUT)!'Y
  1. S $P(^TMP("ACRSYNC",$J,ACRSSDA),U,2)=Y+ACRIVTA
  1. S:Y>0 $P(^TMP("ACRSYNC",$J,ACRSSDA),U,3)=Y+$P(^TMP("ACRSYNC",$J,ACRSSDA),U,3)
  1. S DIR(0)="NOA^0:"_($P(^ACRSS(ACRSSDA,"DT"),U,3)+100)_":4"
  1. S DIR("A")="INVOICE AMOUNT...: "
  1. S DIR("B")=$P(^ACRSS(ACRSSDA,"DT"),U,3)
  1. D DIR^ACRFDIC
  1. Q:$D(ACRQUIT)!$D(ACROUT)!'Y
  1. S $P(^TMP("ACRSYNC",$J,ACRSSDA),U,4)=Y
  1. Q
  1. RESET ;RESET ITEM(S) TO ORIGINAL REMAINING QUANTITY
  1. D S1
  1. Q:$G(ACRXX)=""
  1. F ACRI=1:1 S ACRZ=$P(ACRXX,",",ACRI) Q:'ACRZ I $D(^TMP("ACRIV",$J,ACRZ)) S ACRSSDA=^(ACRZ) Q:'$D(^TMP("ACRSYNC",$J,+ACRSSDA)) S $P(^(ACRSSDA),U,3)=0
  1. Q
  1. ITEMS ;DISPLAY ALL ITEMS FROM THE ORDER
  1. K ACRQUIT
  1. D IDHEAD
  1. S ACRZ=0
  1. F S ACRZ=$O(^TMP("ACRIV",$J,ACRZ)) Q:'ACRZ!$D(ACRQUIT)!$D(ACROUT) D
  1. .S ACRSSDA=+^TMP("ACRIV",$J,ACRZ)
  1. .D INVOICE(ACRSSDA)
  1. S ACRZ=0
  1. F S ACRZ=$O(^TMP("ACRIV",$J,ACRZ)) Q:'ACRZ!$D(ACRQUIT)!$D(ACROUT) D
  1. .S ACRSSDA=+^TMP("ACRIV",$J,ACRZ)
  1. .D IDISPLAY
  1. K ACRQUIT
  1. Q
  1. SS ;GATHER INVOICE FOR DATA ONE ITEM
  1. S ACRSS0=^ACRSS(ACRSSDA,0)
  1. S ACRSSDT=^ACRSS(ACRSSDA,"DT")
  1. S ACRSSNMS=$G(^ACRSS(ACRSSDA,"NMS"))
  1. S ACRSSDSC=$G(^ACRSS(ACRSSDA,"DESC"))
  1. S ACRNOTES=$G(^ACRSS(ACRSSDA,"NOTES"))
  1. S ACRSSORD=$P(ACRSSDT,U)
  1. S ACRSSUP=$P(ACRSSDT,U,3)
  1. S ACRSST=ACRSSUP*ACRSSORD
  1. S ACRSSACT=$G(ACRSSACT)+ACRSSORD
  1. S (ACRRRDA,ACRRRT,ACRIVT,ACRRRTA,ACRIVTA,ACRCOST,ACRIVUP,ACRRRUP)=0
  1. F S ACRRRDA=$O(^ACRRR("B",ACRSSDA,ACRRRDA)) Q:'ACRRRDA D
  1. .S ACRRR0=$G(^ACRRR(ACRRRDA,0))
  1. .S ACRRRDT=$G(^ACRRR(ACRRRDA,"DT"))
  1. .S ACRRRACP=$P(ACRRRDT,U,3)
  1. .S ACRIVACP=$P(ACRRRDT,U,6)
  1. .S ACRRRUP=$P(ACRRRDT,U)
  1. .S:ACRRRUP="" ACRRRUP=ACRSSUP
  1. .S ACRIVUP=$P(ACRRRDT,U,5)
  1. .S ACRRRTA=ACRRRTA+ACRRRACP
  1. .S ACRIVTA=ACRIVTA+ACRIVACP
  1. .S:ACRIVUP="" ACRIVUP=ACRSSUP
  1. .S ACRRRIT=ACRRRACP*ACRRRUP
  1. .S:$G(ACRRRIT)="" ACRRRIT=ACRSSIT
  1. .S ACRIVIT=ACRIVACP*ACRIVUP
  1. .S:$G(ACRIVIT)="" ACRIVIT=ACRSSIT
  1. .S ACRRRT=ACRRRT+ACRRRIT
  1. .S ACRIVT=ACRIVT+ACRIVIT
  1. I $D(^TMP("ACRSYNC",$J,ACRSSDA)) S ACRIVTA=$P(^(ACRSSDA),U,2)
  1. Q
  1. INVOICE(X) ;GATHER INVOICE FOR DATA ONE ITEM
  1. S ACRSSDA=X
  1. S ACRSS0=^ACRSS(ACRSSDA,0)
  1. S ACRSSDT=^ACRSS(ACRSSDA,"DT")
  1. S ACROBJDA=$P(ACRSS0,U,4)
  1. S ACRCANDA=$P(ACRSS0,U,5)
  1. S ACRSSNMS=$G(^ACRSS(ACRSSDA,"NMS"))
  1. S ACRSSDSC=$G(^ACRSS(ACRSSDA,"DESC"))
  1. S ACRNOTES=$G(^ACRSS(ACRSSDA,"NOTES"))
  1. S ACRSSORD=$P(ACRSSDT,U)
  1. S ACRSSUP=$P(ACRSSDT,U,3)
  1. S ACRSST=ACRSSUP*ACRSSORD
  1. S ACRSSACT=$G(ACRSSACT)+ACRSSORD
  1. S (ACRRRDA,ACRRRT,ACRIVT,ACRRRTA,ACRIVTA,ACRCOST,ACRIVUP)=0
  1. F S ACRRRDA=$O(^ACRRR("B",ACRSSDA,ACRRRDA)) Q:'ACRRRDA D
  1. .S ACRRR0=$G(^ACRRR(ACRRRDA,0))
  1. .S ACRRRDT=$G(^ACRRR(ACRRRDA,"DT"))
  1. .S ACRRRACP=$P(ACRRRDT,U,3)
  1. .S ACRIVACP=$P(ACRRRDT,U,6)
  1. .S ACRRRUP=$P(ACRRRDT,U)
  1. .S:ACRRRUP="" ACRRRUP=ACRSSUP
  1. .S ACRIVUP=$P(ACRRRDT,U,5)
  1. .S ACRRRTA=ACRRRTA+ACRRRACP
  1. .S ACRIVTA=ACRIVTA+ACRIVACP
  1. .S:ACRIVUP="" ACRIVUP=ACRSSUP
  1. .S ACRRRIT=ACRRRACP*ACRRRUP
  1. .S:$G(ACRRRIT)="" ACRRRIT=ACRSSIT
  1. .S ACRIVIT=ACRIVACP*ACRIVUP
  1. .S:$G(ACRIVIT)="" ACRIVIT=ACRSSIT
  1. .S ACRRRT=ACRRRT+ACRRRIT
  1. .S ACRIVT=ACRIVT+ACRIVIT
  1. I $D(^TMP("ACRSYNC",$J,ACRSSDA)) S ACRIVTA=$P(^(ACRSSDA),U,2)
  1. E S $P(^TMP("ACRSYNC",$J,ACRSSDA),U)=ACRRRTA,$P(^(ACRSSDA),U,2)=ACRIVTA,$P(^(ACRSSDA),U,3)=0,$P(^(ACRSSDA),U,4)=ACRIVUP,$P(^(ACRSSDA),U,5)=ACRIVTA,$P(^(ACRSSDA),U,6)=ACRRRTA-ACRIVTA
  1. Q
  1. IDHEAD ;INVOICE DISPLAY HEADER
  1. W @IOF
  1. W !?10,"PURCHASE ORDER NO.......: ",$P(ACRDOC0,U,2)," ",$P(ACRDOC0,U)
  1. W !!,?40,"RECEIVED/",?50,"ALREADY"
  1. W ?70,"REMAINING"
  1. W !,"ITM"
  1. W ?4,"ORDER #/DESCRIPT"
  1. W ?30,"OBLIGATED"
  1. W ?40,"ACCEPTED"
  1. W ?50,"PAID"
  1. W ?60,"THIS PMT"
  1. W ?70,"TO BE PD"
  1. W !,"---"
  1. W ?4,"-------------------------"
  1. W ?30,"---------"
  1. W ?40,"---------"
  1. W ?50,"---------"
  1. W ?60,"---------"
  1. W ?70,"---------"
  1. Q
  1. IDISPLAY ;CONTROL DISPLAY OF ITEMS
  1. D SS
  1. D IDISP
  1. Q
  1. IDISP ;DISPLAY INVOICE HISTORY FOR ITEM
  1. K ACR1,ACR2,ACR3
  1. W !,ACRZ
  1. I $P(ACRSSNMS,U)]"" D
  1. .W ?4,"VON: ",$P(ACRSSNMS,U)
  1. .D 1
  1. .W !?3
  1. I $P(ACRSSNMS,U,3)]"" D
  1. .W ?4,"NDC: ",$P(ACRSSNMS,U,3)
  1. .D 1:'$D(ACR1)
  1. .D 2:'$D(ACR2)&$D(ACR1)
  1. .D 3:'$D(ACR3)&$D(ACR1)&$D(ACR2)
  1. .W !?3
  1. I $P(ACRSSNMS,U,2)]"" D
  1. .W ?4,"NSN: ",$P(ACRSSNMS,U,2)
  1. .D 1:'$D(ACR1)
  1. .D 2:'$D(ACR2)&$D(ACR1)
  1. .D 3:'$D(ACR3)&$D(ACR1)&$D(ACR2)
  1. .W !?3
  1. W ?4,$P(ACRSSDSC,U)
  1. N ACRJ,ACRI,ACRX
  1. F ACRJ=2:1:5 I $P(ACRSSDSC,U,ACRJ)]"" S ACRX=$P(ACRSSDSC,U,ACRJ) D
  1. .F ACRI=1:1 S ACRY=$P(ACRX," ",ACRI) Q:ACRY="" D
  1. ..W:$X+$L(ACRY)>79 !?3
  1. ..W ?$X+1,ACRY
  1. D 1:'$D(ACR1)
  1. I '$D(ACR2)&$D(ACR1) W ! D 2
  1. I '$D(ACR3)&$D(ACR1)&$D(ACR2) W ! D 3
  1. W:$L(ACRNOTES)>4 !
  1. N ACRI,ACRJ,ACRX,ACRY
  1. F ACRJ=1:1:5 I $P(ACRNOTES,U,ACRJ)]"" S ACRX=$P(ACRNOTES,U,ACRJ) D
  1. .F ACRI=1:1 S ACRY=$P(ACRX," ",ACRI) Q:ACRY="" D
  1. ..W:$X+$L(ACRY)>79 !?3
  1. ..W ?$X+1,ACRY
  1. K ACRSSDSC,ACRNOTES,ACRSSNMS
  1. D 2:'$D(ACR2)
  1. D 3:'$D(ACR3)
  1. W $$DASH^ACRFMENU
  1. I IOSL-4<$Y D
  1. .S DIR(0)="YO"
  1. .S DIR("A")="Display Remaining Items"
  1. .S DIR("B")="YES"
  1. .W !
  1. .D DIR^ACRFDIC
  1. .I Y'=1 S ACRQUIT="" Q
  1. .D IDHEAD
  1. Q
  1. 1 N X
  1. S X=^TMP("ACRSYNC",$J,ACRSSDA)
  1. W:$X>30 !
  1. W ?30,$J(ACRSSORD,8)
  1. W ?40,$J($P(X,U),8)
  1. W ?50,$J($P(X,U,2),8)
  1. W ?60,$J($P(X,U,3),8)
  1. W ?70,$J($P(X,U)-$P(X,U,2),8)
  1. S ACR1=""
  1. Q
  1. 2 N X
  1. S X=^TMP("ACRSYNC",$J,ACRSSDA)
  1. W:$X>15 !
  1. W ?15,"UNIT PRICE:",?30,$J($FN(ACRSSUP,"P,",2),9)
  1. W ?40,$J($FN(ACRRRUP,"P,",2),9)
  1. W ?50,$J($FN($P(X,U,4),"P,",2),9)
  1. S ACR2=""
  1. Q
  1. 3 N X
  1. S X=^TMP("ACRSYNC",$J,ACRSSDA)
  1. W:$X>15 !
  1. W ?15,"TOTAL.....:",?28,$J($FN(ACRSST,"P,",2),9)
  1. W ?38,$J($FN(ACRRRT,"P,",2),9)
  1. S ACR3=""
  1. Q
  1. SYNC ;EP - SYNCHRONIZE NEW INVOICED ITEMS
  1. K ACRIVPAY
  1. S ACRSSDA=0
  1. F S ACRSSDA=$O(^TMP("ACRSYNC",$J,ACRSSDA)) Q:'ACRSSDA D
  1. .S DA=$O(^ACRRR("B",ACRSSDA,0))
  1. .Q:'DA
  1. .S ACRRRDA=DA
  1. .S DIE="^ACRRR("
  1. .S DR="6////"_$P(^TMP("ACRSYNC",$J,ACRSSDA),U,2)_";5////"_$P(^TMP("ACRSYNC",$J,ACRSSDA),U,4)
  1. .D DIE^ACRFDIC
  1. .F S ACRRRDA=$O(^ACRRR("B",ACRSSDA,ACRRRDA)) Q:'ACRRRDA D
  1. ..S DA=ACRRRDA
  1. ..S DIE="^ACRRR("
  1. ..S DR="6////0"
  1. ..I $P($G(^ACRRR(ACRRRDA,"DT")),U,6) D DIE^ACRFDIC
  1. .D PAY
  1. K ^TMP("ACRSYNC",$J)
  1. Q
  1. PAY I '$P(^TMP("ACRSYNC",$J,ACRSSDA),U,3) K ^TMP("ACRSYNC",$J,ACRSSDA) Q
  1. S ACRCANDA=$P(^ACRSS(ACRSSDA,0),U,5)
  1. S ACROBJDA=$P(^ACRSS(ACRSSDA,0),U,4)
  1. S ACRIVPAY(ACRCANDA,ACROBJDA)=$G(ACRIVPAY(ACRCANDA,ACROBJDA))+($P(^TMP("ACRSYNC",$J,ACRSSDA),U,3)*$P(^TMP("ACRSYNC",$J,ACRSSDA),U,4))
  1. Q
  1. N ACRSSDA,X,Y,Z,J
  1. S (ACRSSDA,ACRMAX,J)=0
  1. F S ACRSSDA=$O(^ACRSS("J",ACRDOCDA,ACRSSDA)) Q:'ACRSSDA D
  1. .S ACRX=+^ACRSS(ACRSSDA,0)
  1. .S J=J+1
  1. .I ACRX'=J D
  1. ..S DA=ACRSSDA
  1. ..S DIE="^ACRSS("
  1. ..S DR=".01///^S X=J"
  1. ..D DIE^ACRFDIC
  1. ..S ACRX=J
  1. .I $D(^ACRRR("B",ACRSSDA)) S ^TMP("ACRIV",$J,ACRX)=ACRSSDA,ACRMAX=ACRMAX+1
  1. Q