ACRFIRS6 ;IHS/OIRM/DSD/AEF - PRINT 1099s [ 07/24/2002  3:17 PM ]
 ;;2.1;ADMIN RESOURCE MGT SYSTEM;**1,3**;NOV 05, 2001
 ;
EN ;EP -- PRINT ALL VENDOR 1099S
 ;
 N ACRLOC,ACRYR,ZTSAVE
 ;
 D HOME^%ZIS
 D ^XBKVAR
 ;
 D LOC(.ACRLOC)
 Q:'$G(ACRLOC)
 ;
 D YR(.ACRYR)
 Q:'$G(ACRYR)
 ;
 S ZTSAVE("ACRLOC")=""
 S ZTSAVE("ACRYR")=""
 D QUE^ACRFUTL("DQ^ACRFIRS6",.ZTSAVE,"PRINT 1099s")
 ;
 D ^%ZISC
 Q
DQ ;EP -- QUEUED JOB STARTS HERE
 ;
 ;      INCOMING VARIABLES:
 ;      ACRLOC  = PAYER IEN
 ;      ACRYR   = CALENDAR YEAR
 ;
 ;      OTHER VARIABLES USED:
 ;      ACRTAMT = ARRAY CONTAINING AMOUNT TOTALS BY TYPE CODE
 ;      ACRTCNT = ARRAY CONTAINING VENDOR COUNT BY TYPE CODE
 ;
 N ACRTAMT,ACRTCNT
 ;
 D ^XBKVAR
 ;
 D LOOP(ACRLOC,ACRYR,.ACRTAMT,.ACRTCNT)
 ;
 D TOTALS(.ACRTAMT,.ACRTCNT)
 ;
 K ACRLOC,ACRYR
 ;
 D ^%ZISC
 Q
LOOP(ACRLOC,ACRYR,ACRTAMT,ACRTCNT)     ;
 ;----- LOOP THROUGH ARMS VENDOR FILE AND PRINT 1099s
 ;
 ;      INPUT:
 ;      ACRLOC  = PAYER IEN
 ;      ACRYR   = CALENDAR YEAR
 ;
 ;      RETURNS:
 ;      ACRTAMT = ARRAY CONTAINING PAYMENT AMOUNTS BY TYPE CODE
 ;      ACRTCNT = ARRAY CONTAINING VENDOR COUNTS BY TYPE CODE
 ;
 N ACRCNT,ACRNAME,ACRVEN
 ;
 K ^TMP("ACR1099",$J)
 ;
 D ALPHA(ACRYR)
 Q:'$D(^TMP("ACR1099",$J))
 ;
 S ACRCNT=0
 S ACRNAME=""
 F  S ACRNAME=$O(^TMP("ACR1099",$J,ACRNAME)) Q:ACRNAME']""  D
 . S ACRVEN=0 F  S ACRVEN=$O(^TMP("ACR1099",$J,ACRNAME,ACRVEN)) Q:'ACRVEN  D
 . . Q:$$AMT(ACRVEN,ACRYR)<600
 . . S ACRCNT=ACRCNT+1
 . . I ACRCNT>1,ACRCNT#2 W @IOF
 . . D PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,.ACRTAMT,.ACRTCNT)
 . . D UPDATE(ACRVEN,ACRYR)
 ;
 K ^TMP("ACR1099",$J)
 Q
ALPHA(ACRYR)       ;
 ;----- BUILD ALPHABETIC ARRAY OF VENDORS IN ^TMP("ACR1099",$J)
 ;
 ;      INPUT:
 ;      ACRYR   = CALENDAR YEAR
 ;
 N ACRNAME,ACRVEN
 S ACRVEN=0
 F  S ACRVEN=$O(^ACR1099V("C",ACRYR,ACRVEN)) Q:'ACRVEN  D
 . S ACRNAME=$P(^AUTTVNDR(ACRVEN,0),U)
 . S ^TMP("ACR1099",$J,ACRNAME,ACRVEN)=0
 Q
PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,ACRTAMT,ACRTCNT)  ;
 ;----- PRINT VENDOR 1099
 ;
 ;      INPUT:
 ;      ACRVEN  = VENDOR IEN
 ;      ACRLOC  = PAYER IEN
 ;      ACRYR   = CALENDAR YEAR
 ;
 ;      RETURNS:
 ;      ACRTAMT = ARRAY CONTAINING AMOUNT TOTALS BY TYPE CODE
 ;      ACRTCNT = ARRAY CONTAINING COUNT TOTALS BY TYPE CODE
 ;
 ;      VARIABLES SET AND USED BY THIS SUBROUTINE:
 ;      ACRAMT  = ARRAY CONTAINING PAYMENT AMOUNTS BY TYPE CODE
 ;      ACRCOR  = CORRECTED RETURN INDICATOR
 ;      ACRIRS  = PAYER IRS NAME
 ;      ACRPADD = ARRAY CONTAINING PAYER ADDRESS
 ;      ACRPSN  = PAYER STATE NUMBER
 ;      ACRPTIN = PAYER TAX ID NUMBER
 ;      ACRTYP  = PAYMENT TYPE CODE
 ;      ACRVADD = ARRAY CONTAINING VENDOR ADDRESS
 ;      ACRVTIN = VENDOR TAX ID NUMBER
 ;
 ;
 ;----- SET VARIABLES
 ;
 N ACRAMT,ACRCOR,ACRIRS,ACRPADD,ACRPSN,ACRPTIN,ACRTYP,ACRVADD,ACRVTIN,DATA
 I '$D(^ACR1099V(ACRVEN,1,ACRYR)) D  Q   ;ACR*2.1*3.30
 . W !,"NO DATA FOUND" ;ACR*2.1*3.30
 ;
 F I=1:1:8,"A","B","C" S ACRAMT(I)=""
 S ACRCOR=""
 I $P($G(^ACR1099V(ACRVEN,1,ACRYR,0)),U,6)="Y" S ACRCOR="X"
 S DATA=^ACR1099V(ACRVEN,0)
 S ACRTYP=$P(DATA,U,2)
 S ACRIRS=$P(DATA,U,3)
 S ACRAMT(ACRTYP)=$$AMT(ACRVEN,ACRYR)
 D PADD(ACRLOC,.ACRPADD)
 D VADD(ACRVEN,ACRIRS,.ACRVADD)
 S ACRPTIN=$P(^ACR1099P(ACRLOC,0),U,8)
 S ACRVTIN=$E($P(^AUTTVNDR(ACRVEN,11),U),2,10)
 S ACRPSN=$P($G(^ACR1099P(ACRLOC,1)),U)
 ;
 ;----- PRINT INDIVIDUAL LINES
 ;
 ;LINE2 BLANK
 ;W !
 ;         
 ;LINE3 CORRECTED RETURN INDICATOR
 ;W !
 W ?30,ACRCOR
 ;
 ;LINE4 BLANK
 W !
 ;
 ;LINE5 PAYER'S NAME
 W !
 W ?5,ACRPADD(1)
 ;
 ;LINE6 PAYER'S ADDRESS LINE 1 / RENTS AMOUNT
 W !
 W ?5,ACRPADD(2)
 W ?39,$J(ACRAMT(1),12,2)
 ;
 ;LINE7 PAYER'S ADDRESS LINE 2
 W !
 W ?5,ACRPADD(3)
 ;
 ;LINE8 PAYER'S CITY,STATE,ZIP
 W !
 W ?5,ACRPADD(4)
 ;
 ;LINE9 ROYALTIES AMOUNT
 W !
 W ?39,$J(ACRAMT(2),12,2)
 ;
 ;LINE10 BLANK
 W !
 ;
 ;LINE11 OTHER INCOME AMOUNT / FEDERAL INCOME TAX WHLD AMOUNT
 W !
 W ?39,$J(ACRAMT(3),12,2)
 W ?53,$J(ACRAMT(4),12,2)
 ;
 ;LINE12 BLANK
 W !
 ;
 ;LINE13 BLANK  
 W !
 ;
 ;LINE14 BLANK     
 W !
 ;
 ;LINE15 PAYER TIN / PAYEE TIN / FISHING BOAT AMOUNT / MEDICAL AMOUNT
 W !
 W ?5,ACRPTIN
 W ?25,ACRVTIN
 W ?39,$J(ACRAMT(5),12,2)
 W ?53,$J(ACRAMT(6),12,2)
 ;
 ;LINE16 BLANK
 W !
 ;
 ;LINE17 PAYEE'S NAME
 W !
 W ?5,ACRVADD(1)
 ;
 ;LINE18 BLANK
 W !
 ;
 ;LINE19 NONEMPLOYEE COMP AMOUNT / SUBSTITUTE PMT AMOUNT
 W !
 W ?39,$J(ACRAMT(7),12,2)
 W ?53,$J(ACRAMT(8),12,2)
 ;
 ;LINE20 BLANK
 W !
 ;
 ;LINE21 PAYEE ADDRESS LINE 1
 W !
 W ?5,ACRVADD(2)
 ;
 ;LINE22 PAYEE ADDRESS LINE 2 / CROP INSURANCE AMOUNT
 W !
 W ?5,ACRVADD(3)
 W ?53,$J(ACRAMT("A"),12,2)
 ;
 ;LINE23 BLANK
 W !
 ;
 ;LINE24 PAYEE CITY,STATE,ZIP
 W !
 W ?5,ACRVADD(4)
 ;
 ;LINE25 BLANK
 W !
 ;
 ;LINE26 BLANK   
 W !
 ;
 ;LINE27 GOLDEN PARACHUTE AMOUNT / PROCEEDS TO ATTORNEY AMOUNT
 W !
 W ?39,$J(ACRAMT("B"),12,2)
 W ?53,$J(ACRAMT("C"),12,2)
 ;
 ;LINE28 BLANK
 W !
 ;
 ;LINE29 STATE/PAYER'S STATE NO.
 W !
 W ?55,ACRPSN
 ;
 ;LINE30 BLANK  
 W !
 ;
 I $G(ACRCNT)#2 F I=1:1:6 W !
 ;
 ;----- SET DOLLAR AMOUNT ARRAY
 ;
 S ACRTAMT(ACRTYP)=$G(ACRTAMT(ACRTYP))+ACRAMT(ACRTYP)
 S ACRTCNT(ACRTYP)=$G(ACRTCNT(ACRTYP))+1
 Q
LOC(ACRLOC)        ;
 ;----- ASK FINANCE LOCATION
 ;
 ;      RETURNS:
 ;      ACRLOC  = PAYER IEN
 ;
 N DIC,DTOUT,DUOUT,X,Y
 S DIC="^ACR1099P("
 S DIC(0)="AEMQ"
 S DIC("A")="Select FINANCE LOCATION: "
 D ^DIC
 Q:$D(DTOUT)!($D(DUOUT))
 Q:+Y'>0
 S ACRLOC=+Y
 Q
YR(ACRYR)          ;
 ;----- ASK CALENDAR YEAR
 ;
 ;      RETURNS:
 ;      ACRYR   = CALENDAR YEAR
 ;
 N DIR,DIRUT,DTOUT,DUOUT,X,Y
 S DIR(0)="N^0000:9999"
 S DIR("A")="Select CALENDAR YEAR"
 S DIR("B")=($E(DT,1,3)+1700)-1
 D ^DIR
 Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))
 Q:+Y'>0
 S ACRYR=+Y
 Q
VEN(ACRVEN)        ;
 ;----- ASK VENDOR
 ;
 ;      RETURNS:
 ;      ACRVEN  = VENDOR IEN
 ;
 N DIC,DTOUT,DUOUT,X,Y
 S DIC="^ACR1099V("
 S DIC(0)="AEMQ"
 S DIC("A")="Select VENDOR: "
 D ^DIC
 Q:$D(DTOUT)!($D(DUOUT))
 Q:+Y'>0
 S ACRVEN=+Y
 Q
UPDATE(ACRVEN,ACRYR)         ;
 ;----- UPDATE 1099 PRINT DATE FIELD IN ARMS 1099 VENDOR FILE
 ;
 ;      INPUT:
 ;      ACRVEN  = VENDOR IEN
 ;      ACRYR   = CALENDAR YEAR
 ;
 N DA,DIE,DR,X,Y
 S DA(1)=ACRVEN
 S DA=ACRYR
 S DIE="^ACR1099V("_DA(1)_",1,"
 S DR=".05////"_DT
 D ^DIE
 Q
ONE ;EP -- PRINT ONE VENDOR 1099
 ;
 N ACRLOC,ACRVEN,ACRYR,ZTSAVE
 ;
 D HOME^%ZIS
 D ^XBKVAR
 ;
 D LOC(.ACRLOC)
 Q:'$G(ACRLOC)
 ;
 D YR(.ACRYR)
 Q:'$G(ACRYR)
 ;
 D VEN(.ACRVEN)
 Q:'$G(ACRVEN)
 ;
 S ZTSAVE("ACRLOC")=""
 S ZTSAVE("ACRYR")=""
 S ZTSAVE("ACRVEN")=""
 D QUE^ACRFUTL("DQ1^ACRFIRS6",.ZTSAVE,"PRINT ONE 1099")
 ;
 D ^%ZISC
 Q
DQ1 ;EP -- QUEUED JOB STARTS HERE
 ;
 ;      INPUT:
 ;      ACRLOC  = PAYER IEN
 ;      ACRVEN  = VENDOR IEN
 ;      ACRYR   = CALENDAR YEAR
 ;
 N ACRMTOT,ACRMAMT,ACRNTOT,ACRNAMT
 ;
 W @IOF
 ;
 D ^XBKVAR
 ;
 D PRT(ACRVEN,ACRLOC,ACRYR,$G(ACRCNT),.ACRTAMT,.ACRTCNT)
 ;
 D TOTALS(.ACRTAMT,.ACRTCNT)
 ;
 D ^%ZISC
 K ACRLOC,ACRVEN,ACRYR
 Q
TEST ;EP -- PRINT TEST 1099s
 ;
 N ACRLOC,ACRYR,ZTSAVE
 ;
 D ^XBKVAR
 ;
 D LOC(.ACRLOC)
 Q:'$G(ACRLOC)
 ;
 D YR(.ACRYR)
 Q:'$G(ACRYR)
 ;
 S ZTSAVE("ACRLOC")=""
 S ZTSAVE("ACRYR")=""
 D QUE^ACRFUTL("DQ2^ACRFIRS6",.ZTSAVE,"PRINT TEST 1099s")
 ;
 D ^%ZISC
 Q
DQ2 ;EP -- QUEUED JOB STARTS HERE
 ;
 ;      INPUT:
 ;      ACRLOC  = PAYER IEN
 ;      ACRYR   = CALENDAR YEAR
 ;
 N ACRTAMT,ACRTCNT,ACRVEN,ACRCNT
 ;
 W @IOF
 ;
 D ^XBKVAR
 ;
 S (ACRVEN,ACRCNT)=0
 F  Q:ACRCNT>9  S ACRVEN=$O(^ACR1099V("C",ACRYR,ACRVEN)) Q:'ACRVEN  D
 . S ACRCNT=ACRCNT+1
 . Q:ACRCNT>9
 . I ACRCNT>1,ACRCNT#2 W @IOF
 . D PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,.ACRTAMT,.ACRTCNT)
 ;
 D TOTALS(.ACRTAMT,.ACRTCNT)
 ;
 K ACRLOC,ACRYR
 D ^%ZISC
 Q
RANGE ;EP -- PRINT RANGE OF VENDOR 1099S
 ;
 N ACRLOC,ACRVEN,ACRYR,ZTSAVE
 ;
 D ^XBKVAR
 ;
 K ^TMP("ACR1099",$J)
 ;
 D LOC(.ACRLOC)
 Q:'$G(ACRLOC)
 ;
 D YR(.ACRYR)
 Q:'$G(ACRYR)
 ;
 D ALPHA(ACRYR)
 I '$D(^TMP("ACR1099",$J)) D  G RANGE
 . W !,"No Vendor data found for ",ACRYR
 ;
 D VEND(.ACRVEN)
 Q:ACRVEN']""
 ;
 S ZTSAVE("ACRLOC")=""
 S ZTSAVE("ACRYR")=""
 S ZTSAVE("ACRVEN")=""
 D QUE^ACRFUTL("DQ3^ACRFIRS6",.ZTSAVE,"PRINT RANGE OF 1099S")
 ;
 D ^%ZISC
 Q
DQ3 ;EP -- QUEUED JOB STARTS HERE
 ;
 ;      INPUT:
 ;      ACRLOC  = PAYER IEN
 ;      ACRVEN  = VENDOR RANGE
 ;      ACRYR   = CALENDAR YEAR
 ;
 N ACRTAMT,ACRTCNT
 ;
 D ^XBKVAR
 ;
 D LOOP3(ACRLOC,ACRYR,ACRVEN,.ACRTAMT,.ACRTCNT)
 ;
 K ACRLOC,ACRYR,ACRVEN
 D ^%ZISC
 Q
LOOP3(ACRLOC,ACRYR,ACRVEN,ACRTAMT,ACRTCNT)       ;
 ;
 ;     INPUT:
 ;     ACRLOC  = PAYER IEN
 ;     ACRVEN  = VENDOR RANGE
 ;     ACRYR   = CALENDAR YEAR
 ;
 ;     RETURNS:
 ;     ACRTAMT = ARRAY CONTAINING AMOUNTS BY PAYMENT TYPE CODE
 ;     ACRTCNT = ARRAY CONTAINING VENDOR COUNTS BY PAYMENT TYPE CODE
 ;
 N ACREND,ACRNAME,ACRCNT
 ;
 D ALPHA(ACRYR)
 Q:'$D(^TMP("ACR1099",$J))
 ;
 S ACREND=$P(ACRVEN,U,2)
 S ACRNAME=$P(ACRVEN,U)
 S ACRNAME=$O(^TMP("ACR1099",$J,ACRNAME),-1)
 ;
 S ACRCNT=0
 F  S ACRNAME=$O(^TMP("ACR1099",$J,ACRNAME)) Q:ACRNAME']""  Q:ACRNAME]ACREND  D
 . S ACRVEN=0
 . F  S ACRVEN=$O(^TMP("ACR1099",$J,ACRNAME,ACRVEN)) Q:'ACRVEN  D
 . . Q:$$AMT(ACRVEN,ACRYR)<600
 . . S ACRCNT=ACRCNT+1
 . . I ACRCNT>1,ACRCNT#2 W @IOF
 . . D PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,.ACRTAMT,.ACRTCNT)
 ;
 D TOTALS(.ACRTAMT,.ACRTCNT)
 ;
 K ^TMP("ACR1099",$J)
 Q
VEND(ACRVEN)       ;
 ;----- GETS START AND END VENDORS IN RANGE SELECTION
 ;
V ;      RETURNS:
 ;      ACRVEN  = CONTAINS BEGINNING AND ENDING VENDOR NAME RANGE
 ; 
 N DIR,X,Y
 S ACRVEN=""
 S DIR(0)="F"
 S DIR("A")="Start with VENDOR"
 S DIR("?")="Enter BEGINNING VENDOR in range"
 D ^DIR
 I $D(DTOUT)!($D(DUOUT))!($D(DIRUT)) S ACRVEN="" Q
 Q:Y']""
 S ACRVEN=Y
 S DIR("A")="End with VENDOR"
 S DIR("?")="Enter ENDING VENDOR in range"
 D ^DIR
 I $D(DTOUT)!($D(DUOUT))!($D(DIRUT)) S ACRVEN="" Q
 I Y']"" S ACRVEN="" Q
 I Y']ACRVEN D  G V
 . W !,"'",Y,"' does not follow '",ACRVEN,"'"
 S ACRVEN=ACRVEN_"^"_Y
 Q
TOTALS(ACRTAMT,ACRTCNT)      ;
 ;----- PRINTS GRAND TOTALS
 ;
 ;      INPUT:
 ;      ACRTAMT = ARRAY CONTAINING AMOUNT TOTALS BY PAYMENT TYPE CODE
 ;      ACRTCNT = ARRAY CONTAINING VENDOR COUNTS BY PAYMENT TYPE CODE
 ;
 W @IOF
 ;
 N ACRGAMT,ACRGCNT,ACRTYP,I
 ;
 S ACRTYP(1)="RENTS"
 S ACRTYP(2)="ROYALTIES"
 S ACRTYP(3)="OTHER INCOME"
 S ACRTYP(4)="FED INC TAX WHLD"
 S ACRTYP(5)="FISHING BOAT PROC"
 S ACRTYP(6)="MED & HLTH CARE"
 S ACRTYP(7)="NONEMPLOYEE COMP"
 S ACRTYP(8)="SUBSTITUTE PMTS"
 S ACRTYP("A")="CROP INS PROC"
 S ACRTYP("B")="EXC GOLD PARA"
 S ACRTYP("C")="PROC TO ATTY"
 ;
 F I=1:1:3 W !
 ;
 S (ACRGCNT,ACRGAMT)=0
 F I=1:1:8,"A","B","C" D
 . ;Q:'$D(ACRTAMT(I))
 . W ?5,"TOTAL FOR ",ACRTYP(I)," PMTS:"
 . W ?40,$J(+$G(ACRTCNT(I)),4)
 . W ?50,$J(+$G(ACRTAMT(I)),12,2)
 . S ACRGCNT=$G(ACRGCNT)+$G(ACRTCNT(I))
 . S ACRGAMT=$G(ACRGAMT)+$G(ACRTAMT(I))
 . W !!
 ;
 W ?40,"----"
 W ?50,"------------"
 W !
 W ?40,$J(ACRGCNT,4)
 W ?50,$J(ACRGAMT,12,2)
 Q
AMT(ACRVEN,ACRYR)  ;
 ;----- EXTRINSIC FUNCTION TO RETURN DOLLAR AMOUNT
 ;
 N X
 S X=$G(^ACR1099V(ACRVEN,1,ACRYR,0))
 S Y=$P(X,U,2)
 I $P(X,U,6)="Y" S Y=$P(X,U,8)
 Q Y
PADD(ACRLOC,ACRPADD)         ;
 ;----- RETURN PAYER'S ADDRESS ARRAY
 ;
 N I,DATA,X
 K ACRPADD
 F I=1:1:4 S ACRPADD(I)=""
 S I=0
 S DATA=$G(^ACR1099P(ACRLOC,0))
 I $P(DATA,U,2)]"" D
 . S I=I+1
 . S ACRPADD(I)=$P(DATA,U,2)
 I $P(DATA,U,3)]"" D
 . S I=I+1
 . S ACRPADD(I)=$P(DATA,U,3)
 I $P(DATA,U,4)]"" D
 . S I=I+1
 . S ACRPADD(I)=$P(DATA,U,4)
 S X=$P(DATA,U,5)_", "_$P(^DIC(5,$P(DATA,U,6),0),U,2)_"  "_$P(DATA,U,7)
 S I=I+1
 S ACRPADD(I)=X
 Q
VADD(ACRVEN,ACRIRS,ACRVADD)  ;
 ;----- RETURN VENDOR'S ADDRESS ARRAY
 ;
 N I,DATA,X
 K ACRVADD
 F I=1:1:4 S ACRVADD(I)=""
 S ACRVADD(1)=$P(^AUTTVNDR(ACRVEN,0),U)
 I ACRIRS]"" S ACRVADD(1)=ACRIRS
 S I=1
 S DATA=$G(^AUTTVNDR(ACRVEN,13))
 I $P(DATA,U)]"" D
 . S I=I+1
 . S ACRVADD(I)=$P(DATA,U)
 I $P(DATA,U,10)]"" D
 . S I=I+1
 . S ACRVADD(I)=$P(DATA,U,10)
 S X=$P(DATA,U,2)_", "_$P(^DIC(5,$P(DATA,U,3),0),U,2)_"  "_$P(DATA,U,4)
 S ACRVADD(4)=X
 Q
ACRFIRS6  ;IHS/OIRM/DSD/AEF - PRINT 1099s [ 07/24/2002  3:17 PM ]
 +1       ;;2.1;ADMIN RESOURCE MGT SYSTEM;**1,3**;NOV 05, 2001
 +2       ;
EN        ;EP -- PRINT ALL VENDOR 1099S
 +1       ;
 +2        NEW ACRLOC,ACRYR,ZTSAVE
 +3       ;
 +4        DO HOME^%ZIS
 +5        DO ^XBKVAR
 +6       ;
 +7        DO LOC(.ACRLOC)
 +8        IF '$GET(ACRLOC)
               QUIT 
 +9       ;
 +10       DO YR(.ACRYR)
 +11       IF '$GET(ACRYR)
               QUIT 
 +12      ;
 +13       SET ZTSAVE("ACRLOC")=""
 +14       SET ZTSAVE("ACRYR")=""
 +15       DO QUE^ACRFUTL("DQ^ACRFIRS6",.ZTSAVE,"PRINT 1099s")
 +16      ;
 +17       DO ^%ZISC
 +18       QUIT 
DQ        ;EP -- QUEUED JOB STARTS HERE
 +1       ;
 +2       ;      INCOMING VARIABLES:
 +3       ;      ACRLOC  = PAYER IEN
 +4       ;      ACRYR   = CALENDAR YEAR
 +5       ;
 +6       ;      OTHER VARIABLES USED:
 +7       ;      ACRTAMT = ARRAY CONTAINING AMOUNT TOTALS BY TYPE CODE
 +8       ;      ACRTCNT = ARRAY CONTAINING VENDOR COUNT BY TYPE CODE
 +9       ;
 +10       NEW ACRTAMT,ACRTCNT
 +11      ;
 +12       DO ^XBKVAR
 +13      ;
 +14       DO LOOP(ACRLOC,ACRYR,.ACRTAMT,.ACRTCNT)
 +15      ;
 +16       DO TOTALS(.ACRTAMT,.ACRTCNT)
 +17      ;
 +18       KILL ACRLOC,ACRYR
 +19      ;
 +20       DO ^%ZISC
 +21       QUIT 
LOOP(ACRLOC,ACRYR,ACRTAMT,ACRTCNT) ;
 +1       ;----- LOOP THROUGH ARMS VENDOR FILE AND PRINT 1099s
 +2       ;
 +3       ;      INPUT:
 +4       ;      ACRLOC  = PAYER IEN
 +5       ;      ACRYR   = CALENDAR YEAR
 +6       ;
 +7       ;      RETURNS:
 +8       ;      ACRTAMT = ARRAY CONTAINING PAYMENT AMOUNTS BY TYPE CODE
 +9       ;      ACRTCNT = ARRAY CONTAINING VENDOR COUNTS BY TYPE CODE
 +10      ;
 +11       NEW ACRCNT,ACRNAME,ACRVEN
 +12      ;
 +13       KILL ^TMP("ACR1099",$JOB)
 +14      ;
 +15       DO ALPHA(ACRYR)
 +16       IF '$DATA(^TMP("ACR1099",$JOB))
               QUIT 
 +17      ;
 +18       SET ACRCNT=0
 +19       SET ACRNAME=""
 +20       FOR 
               SET ACRNAME=$ORDER(^TMP("ACR1099",$JOB,ACRNAME))
               IF ACRNAME']""
                   QUIT 
               Begin DoDot:1
 +21               SET ACRVEN=0
                   FOR 
                       SET ACRVEN=$ORDER(^TMP("ACR1099",$JOB,ACRNAME,ACRVEN))
                       IF 'ACRVEN
                           QUIT 
                       Begin DoDot:2
 +22                       IF $$AMT(ACRVEN,ACRYR)<600
                               QUIT 
 +23                       SET ACRCNT=ACRCNT+1
 +24                       IF ACRCNT>1
                               IF ACRCNT#2
                                   WRITE @IOF
 +25                       DO PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,.ACRTAMT,.ACRTCNT)
 +26                       DO UPDATE(ACRVEN,ACRYR)
                       End DoDot:2
               End DoDot:1
 +27      ;
 +28       KILL ^TMP("ACR1099",$JOB)
 +29       QUIT 
ALPHA(ACRYR) ;
 +1       ;----- BUILD ALPHABETIC ARRAY OF VENDORS IN ^TMP("ACR1099",$J)
 +2       ;
 +3       ;      INPUT:
 +4       ;      ACRYR   = CALENDAR YEAR
 +5       ;
 +6        NEW ACRNAME,ACRVEN
 +7        SET ACRVEN=0
 +8        FOR 
               SET ACRVEN=$ORDER(^ACR1099V("C",ACRYR,ACRVEN))
               IF 'ACRVEN
                   QUIT 
               Begin DoDot:1
 +9                SET ACRNAME=$PIECE(^AUTTVNDR(ACRVEN,0),U)
 +10               SET ^TMP("ACR1099",$JOB,ACRNAME,ACRVEN)=0
               End DoDot:1
 +11       QUIT 
PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,ACRTAMT,ACRTCNT) ;
 +1       ;----- PRINT VENDOR 1099
 +2       ;
 +3       ;      INPUT:
 +4       ;      ACRVEN  = VENDOR IEN
 +5       ;      ACRLOC  = PAYER IEN
 +6       ;      ACRYR   = CALENDAR YEAR
 +7       ;
 +8       ;      RETURNS:
 +9       ;      ACRTAMT = ARRAY CONTAINING AMOUNT TOTALS BY TYPE CODE
 +10      ;      ACRTCNT = ARRAY CONTAINING COUNT TOTALS BY TYPE CODE
 +11      ;
 +12      ;      VARIABLES SET AND USED BY THIS SUBROUTINE:
 +13      ;      ACRAMT  = ARRAY CONTAINING PAYMENT AMOUNTS BY TYPE CODE
 +14      ;      ACRCOR  = CORRECTED RETURN INDICATOR
 +15      ;      ACRIRS  = PAYER IRS NAME
 +16      ;      ACRPADD = ARRAY CONTAINING PAYER ADDRESS
 +17      ;      ACRPSN  = PAYER STATE NUMBER
 +18      ;      ACRPTIN = PAYER TAX ID NUMBER
 +19      ;      ACRTYP  = PAYMENT TYPE CODE
 +20      ;      ACRVADD = ARRAY CONTAINING VENDOR ADDRESS
 +21      ;      ACRVTIN = VENDOR TAX ID NUMBER
 +22      ;
 +23      ;
 +24      ;----- SET VARIABLES
 +25      ;
 +26       NEW ACRAMT,ACRCOR,ACRIRS,ACRPADD,ACRPSN,ACRPTIN,ACRTYP,ACRVADD,ACRVTIN,DATA
 +27      ;ACR*2.1*3.30
           IF '$DATA(^ACR1099V(ACRVEN,1,ACRYR))
               Begin DoDot:1
 +28      ;ACR*2.1*3.30
                   WRITE !,"NO DATA FOUND"
               End DoDot:1
               QUIT 
 +29      ;
 +30       FOR I=1:1:8,"A","B","C"
               SET ACRAMT(I)=""
 +31       SET ACRCOR=""
 +32       IF $PIECE($GET(^ACR1099V(ACRVEN,1,ACRYR,0)),U,6)="Y"
               SET ACRCOR="X"
 +33       SET DATA=^ACR1099V(ACRVEN,0)
 +34       SET ACRTYP=$PIECE(DATA,U,2)
 +35       SET ACRIRS=$PIECE(DATA,U,3)
 +36       SET ACRAMT(ACRTYP)=$$AMT(ACRVEN,ACRYR)
 +37       DO PADD(ACRLOC,.ACRPADD)
 +38       DO VADD(ACRVEN,ACRIRS,.ACRVADD)
 +39       SET ACRPTIN=$PIECE(^ACR1099P(ACRLOC,0),U,8)
 +40       SET ACRVTIN=$EXTRACT($PIECE(^AUTTVNDR(ACRVEN,11),U),2,10)
 +41       SET ACRPSN=$PIECE($GET(^ACR1099P(ACRLOC,1)),U)
 +42      ;
 +43      ;----- PRINT INDIVIDUAL LINES
 +44      ;
 +45      ;LINE2 BLANK
 +46      ;W !
 +47      ;         
 +48      ;LINE3 CORRECTED RETURN INDICATOR
 +49      ;W !
 +50       WRITE ?30,ACRCOR
 +51      ;
 +52      ;LINE4 BLANK
 +53       WRITE !
 +54      ;
 +55      ;LINE5 PAYER'S NAME
 +56       WRITE !
 +57       WRITE ?5,ACRPADD(1)
 +58      ;
 +59      ;LINE6 PAYER'S ADDRESS LINE 1 / RENTS AMOUNT
 +60       WRITE !
 +61       WRITE ?5,ACRPADD(2)
 +62       WRITE ?39,$JUSTIFY(ACRAMT(1),12,2)
 +63      ;
 +64      ;LINE7 PAYER'S ADDRESS LINE 2
 +65       WRITE !
 +66       WRITE ?5,ACRPADD(3)
 +67      ;
 +68      ;LINE8 PAYER'S CITY,STATE,ZIP
 +69       WRITE !
 +70       WRITE ?5,ACRPADD(4)
 +71      ;
 +72      ;LINE9 ROYALTIES AMOUNT
 +73       WRITE !
 +74       WRITE ?39,$JUSTIFY(ACRAMT(2),12,2)
 +75      ;
 +76      ;LINE10 BLANK
 +77       WRITE !
 +78      ;
 +79      ;LINE11 OTHER INCOME AMOUNT / FEDERAL INCOME TAX WHLD AMOUNT
 +80       WRITE !
 +81       WRITE ?39,$JUSTIFY(ACRAMT(3),12,2)
 +82       WRITE ?53,$JUSTIFY(ACRAMT(4),12,2)
 +83      ;
 +84      ;LINE12 BLANK
 +85       WRITE !
 +86      ;
 +87      ;LINE13 BLANK  
 +88       WRITE !
 +89      ;
 +90      ;LINE14 BLANK     
 +91       WRITE !
 +92      ;
 +93      ;LINE15 PAYER TIN / PAYEE TIN / FISHING BOAT AMOUNT / MEDICAL AMOUNT
 +94       WRITE !
 +95       WRITE ?5,ACRPTIN
 +96       WRITE ?25,ACRVTIN
 +97       WRITE ?39,$JUSTIFY(ACRAMT(5),12,2)
 +98       WRITE ?53,$JUSTIFY(ACRAMT(6),12,2)
 +99      ;
 +100     ;LINE16 BLANK
 +101      WRITE !
 +102     ;
 +103     ;LINE17 PAYEE'S NAME
 +104      WRITE !
 +105      WRITE ?5,ACRVADD(1)
 +106     ;
 +107     ;LINE18 BLANK
 +108      WRITE !
 +109     ;
 +110     ;LINE19 NONEMPLOYEE COMP AMOUNT / SUBSTITUTE PMT AMOUNT
 +111      WRITE !
 +112      WRITE ?39,$JUSTIFY(ACRAMT(7),12,2)
 +113      WRITE ?53,$JUSTIFY(ACRAMT(8),12,2)
 +114     ;
 +115     ;LINE20 BLANK
 +116      WRITE !
 +117     ;
 +118     ;LINE21 PAYEE ADDRESS LINE 1
 +119      WRITE !
 +120      WRITE ?5,ACRVADD(2)
 +121     ;
 +122     ;LINE22 PAYEE ADDRESS LINE 2 / CROP INSURANCE AMOUNT
 +123      WRITE !
 +124      WRITE ?5,ACRVADD(3)
 +125      WRITE ?53,$JUSTIFY(ACRAMT("A"),12,2)
 +126     ;
 +127     ;LINE23 BLANK
 +128      WRITE !
 +129     ;
 +130     ;LINE24 PAYEE CITY,STATE,ZIP
 +131      WRITE !
 +132      WRITE ?5,ACRVADD(4)
 +133     ;
 +134     ;LINE25 BLANK
 +135      WRITE !
 +136     ;
 +137     ;LINE26 BLANK   
 +138      WRITE !
 +139     ;
 +140     ;LINE27 GOLDEN PARACHUTE AMOUNT / PROCEEDS TO ATTORNEY AMOUNT
 +141      WRITE !
 +142      WRITE ?39,$JUSTIFY(ACRAMT("B"),12,2)
 +143      WRITE ?53,$JUSTIFY(ACRAMT("C"),12,2)
 +144     ;
 +145     ;LINE28 BLANK
 +146      WRITE !
 +147     ;
 +148     ;LINE29 STATE/PAYER'S STATE NO.
 +149      WRITE !
 +150      WRITE ?55,ACRPSN
 +151     ;
 +152     ;LINE30 BLANK  
 +153      WRITE !
 +154     ;
 +155      IF $GET(ACRCNT)#2
               FOR I=1:1:6
                   WRITE !
 +156     ;
 +157     ;----- SET DOLLAR AMOUNT ARRAY
 +158     ;
 +159      SET ACRTAMT(ACRTYP)=$GET(ACRTAMT(ACRTYP))+ACRAMT(ACRTYP)
 +160      SET ACRTCNT(ACRTYP)=$GET(ACRTCNT(ACRTYP))+1
 +161      QUIT 
LOC(ACRLOC) ;
 +1       ;----- ASK FINANCE LOCATION
 +2       ;
 +3       ;      RETURNS:
 +4       ;      ACRLOC  = PAYER IEN
 +5       ;
 +6        NEW DIC,DTOUT,DUOUT,X,Y
 +7        SET DIC="^ACR1099P("
 +8        SET DIC(0)="AEMQ"
 +9        SET DIC("A")="Select FINANCE LOCATION: "
 +10       DO ^DIC
 +11       IF $DATA(DTOUT)!($DATA(DUOUT))
               QUIT 
 +12       IF +Y'>0
               QUIT 
 +13       SET ACRLOC=+Y
 +14       QUIT 
YR(ACRYR) ;
 +1       ;----- ASK CALENDAR YEAR
 +2       ;
 +3       ;      RETURNS:
 +4       ;      ACRYR   = CALENDAR YEAR
 +5       ;
 +6        NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
 +7        SET DIR(0)="N^0000:9999"
 +8        SET DIR("A")="Select CALENDAR YEAR"
 +9        SET DIR("B")=($EXTRACT(DT,1,3)+1700)-1
 +10       DO ^DIR
 +11       IF $DATA(DTOUT)!($DATA(DUOUT))!($DATA(DIRUT))
               QUIT 
 +12       IF +Y'>0
               QUIT 
 +13       SET ACRYR=+Y
 +14       QUIT 
VEN(ACRVEN) ;
 +1       ;----- ASK VENDOR
 +2       ;
 +3       ;      RETURNS:
 +4       ;      ACRVEN  = VENDOR IEN
 +5       ;
 +6        NEW DIC,DTOUT,DUOUT,X,Y
 +7        SET DIC="^ACR1099V("
 +8        SET DIC(0)="AEMQ"
 +9        SET DIC("A")="Select VENDOR: "
 +10       DO ^DIC
 +11       IF $DATA(DTOUT)!($DATA(DUOUT))
               QUIT 
 +12       IF +Y'>0
               QUIT 
 +13       SET ACRVEN=+Y
 +14       QUIT 
UPDATE(ACRVEN,ACRYR) ;
 +1       ;----- UPDATE 1099 PRINT DATE FIELD IN ARMS 1099 VENDOR FILE
 +2       ;
 +3       ;      INPUT:
 +4       ;      ACRVEN  = VENDOR IEN
 +5       ;      ACRYR   = CALENDAR YEAR
 +6       ;
 +7        NEW DA,DIE,DR,X,Y
 +8        SET DA(1)=ACRVEN
 +9        SET DA=ACRYR
 +10       SET DIE="^ACR1099V("_DA(1)_",1,"
 +11       SET DR=".05////"_DT
 +12       DO ^DIE
 +13       QUIT 
ONE       ;EP -- PRINT ONE VENDOR 1099
 +1       ;
 +2        NEW ACRLOC,ACRVEN,ACRYR,ZTSAVE
 +3       ;
 +4        DO HOME^%ZIS
 +5        DO ^XBKVAR
 +6       ;
 +7        DO LOC(.ACRLOC)
 +8        IF '$GET(ACRLOC)
               QUIT 
 +9       ;
 +10       DO YR(.ACRYR)
 +11       IF '$GET(ACRYR)
               QUIT 
 +12      ;
 +13       DO VEN(.ACRVEN)
 +14       IF '$GET(ACRVEN)
               QUIT 
 +15      ;
 +16       SET ZTSAVE("ACRLOC")=""
 +17       SET ZTSAVE("ACRYR")=""
 +18       SET ZTSAVE("ACRVEN")=""
 +19       DO QUE^ACRFUTL("DQ1^ACRFIRS6",.ZTSAVE,"PRINT ONE 1099")
 +20      ;
 +21       DO ^%ZISC
 +22       QUIT 
DQ1       ;EP -- QUEUED JOB STARTS HERE
 +1       ;
 +2       ;      INPUT:
 +3       ;      ACRLOC  = PAYER IEN
 +4       ;      ACRVEN  = VENDOR IEN
 +5       ;      ACRYR   = CALENDAR YEAR
 +6       ;
 +7        NEW ACRMTOT,ACRMAMT,ACRNTOT,ACRNAMT
 +8       ;
 +9        WRITE @IOF
 +10      ;
 +11       DO ^XBKVAR
 +12      ;
 +13       DO PRT(ACRVEN,ACRLOC,ACRYR,$GET(ACRCNT),.ACRTAMT,.ACRTCNT)
 +14      ;
 +15       DO TOTALS(.ACRTAMT,.ACRTCNT)
 +16      ;
 +17       DO ^%ZISC
 +18       KILL ACRLOC,ACRVEN,ACRYR
 +19       QUIT 
TEST      ;EP -- PRINT TEST 1099s
 +1       ;
 +2        NEW ACRLOC,ACRYR,ZTSAVE
 +3       ;
 +4        DO ^XBKVAR
 +5       ;
 +6        DO LOC(.ACRLOC)
 +7        IF '$GET(ACRLOC)
               QUIT 
 +8       ;
 +9        DO YR(.ACRYR)
 +10       IF '$GET(ACRYR)
               QUIT 
 +11      ;
 +12       SET ZTSAVE("ACRLOC")=""
 +13       SET ZTSAVE("ACRYR")=""
 +14       DO QUE^ACRFUTL("DQ2^ACRFIRS6",.ZTSAVE,"PRINT TEST 1099s")
 +15      ;
 +16       DO ^%ZISC
 +17       QUIT 
DQ2       ;EP -- QUEUED JOB STARTS HERE
 +1       ;
 +2       ;      INPUT:
 +3       ;      ACRLOC  = PAYER IEN
 +4       ;      ACRYR   = CALENDAR YEAR
 +5       ;
 +6        NEW ACRTAMT,ACRTCNT,ACRVEN,ACRCNT
 +7       ;
 +8        WRITE @IOF
 +9       ;
 +10       DO ^XBKVAR
 +11      ;
 +12       SET (ACRVEN,ACRCNT)=0
 +13       FOR 
               IF ACRCNT>9
                   QUIT 
               SET ACRVEN=$ORDER(^ACR1099V("C",ACRYR,ACRVEN))
               IF 'ACRVEN
                   QUIT 
               Begin DoDot:1
 +14               SET ACRCNT=ACRCNT+1
 +15               IF ACRCNT>9
                       QUIT 
 +16               IF ACRCNT>1
                       IF ACRCNT#2
                           WRITE @IOF
 +17               DO PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,.ACRTAMT,.ACRTCNT)
               End DoDot:1
 +18      ;
 +19       DO TOTALS(.ACRTAMT,.ACRTCNT)
 +20      ;
 +21       KILL ACRLOC,ACRYR
 +22       DO ^%ZISC
 +23       QUIT 
RANGE     ;EP -- PRINT RANGE OF VENDOR 1099S
 +1       ;
 +2        NEW ACRLOC,ACRVEN,ACRYR,ZTSAVE
 +3       ;
 +4        DO ^XBKVAR
 +5       ;
 +6        KILL ^TMP("ACR1099",$JOB)
 +7       ;
 +8        DO LOC(.ACRLOC)
 +9        IF '$GET(ACRLOC)
               QUIT 
 +10      ;
 +11       DO YR(.ACRYR)
 +12       IF '$GET(ACRYR)
               QUIT 
 +13      ;
 +14       DO ALPHA(ACRYR)
 +15       IF '$DATA(^TMP("ACR1099",$JOB))
               Begin DoDot:1
 +16               WRITE !,"No Vendor data found for ",ACRYR
               End DoDot:1
               GOTO RANGE
 +17      ;
 +18       DO VEND(.ACRVEN)
 +19       IF ACRVEN']""
               QUIT 
 +20      ;
 +21       SET ZTSAVE("ACRLOC")=""
 +22       SET ZTSAVE("ACRYR")=""
 +23       SET ZTSAVE("ACRVEN")=""
 +24       DO QUE^ACRFUTL("DQ3^ACRFIRS6",.ZTSAVE,"PRINT RANGE OF 1099S")
 +25      ;
 +26       DO ^%ZISC
 +27       QUIT 
DQ3       ;EP -- QUEUED JOB STARTS HERE
 +1       ;
 +2       ;      INPUT:
 +3       ;      ACRLOC  = PAYER IEN
 +4       ;      ACRVEN  = VENDOR RANGE
 +5       ;      ACRYR   = CALENDAR YEAR
 +6       ;
 +7        NEW ACRTAMT,ACRTCNT
 +8       ;
 +9        DO ^XBKVAR
 +10      ;
 +11       DO LOOP3(ACRLOC,ACRYR,ACRVEN,.ACRTAMT,.ACRTCNT)
 +12      ;
 +13       KILL ACRLOC,ACRYR,ACRVEN
 +14       DO ^%ZISC
 +15       QUIT 
LOOP3(ACRLOC,ACRYR,ACRVEN,ACRTAMT,ACRTCNT) ;
 +1       ;
 +2       ;     INPUT:
 +3       ;     ACRLOC  = PAYER IEN
 +4       ;     ACRVEN  = VENDOR RANGE
 +5       ;     ACRYR   = CALENDAR YEAR
 +6       ;
 +7       ;     RETURNS:
 +8       ;     ACRTAMT = ARRAY CONTAINING AMOUNTS BY PAYMENT TYPE CODE
 +9       ;     ACRTCNT = ARRAY CONTAINING VENDOR COUNTS BY PAYMENT TYPE CODE
 +10      ;
 +11       NEW ACREND,ACRNAME,ACRCNT
 +12      ;
 +13       DO ALPHA(ACRYR)
 +14       IF '$DATA(^TMP("ACR1099",$JOB))
               QUIT 
 +15      ;
 +16       SET ACREND=$PIECE(ACRVEN,U,2)
 +17       SET ACRNAME=$PIECE(ACRVEN,U)
 +18       SET ACRNAME=$ORDER(^TMP("ACR1099",$JOB,ACRNAME),-1)
 +19      ;
 +20       SET ACRCNT=0
 +21       FOR 
               SET ACRNAME=$ORDER(^TMP("ACR1099",$JOB,ACRNAME))
               IF ACRNAME']""
                   QUIT 
               IF ACRNAME]ACREND
                   QUIT 
               Begin DoDot:1
 +22               SET ACRVEN=0
 +23               FOR 
                       SET ACRVEN=$ORDER(^TMP("ACR1099",$JOB,ACRNAME,ACRVEN))
                       IF 'ACRVEN
                           QUIT 
                       Begin DoDot:2
 +24                       IF $$AMT(ACRVEN,ACRYR)<600
                               QUIT 
 +25                       SET ACRCNT=ACRCNT+1
 +26                       IF ACRCNT>1
                               IF ACRCNT#2
                                   WRITE @IOF
 +27                       DO PRT(ACRVEN,ACRLOC,ACRYR,ACRCNT,.ACRTAMT,.ACRTCNT)
                       End DoDot:2
               End DoDot:1
 +28      ;
 +29       DO TOTALS(.ACRTAMT,.ACRTCNT)
 +30      ;
 +31       KILL ^TMP("ACR1099",$JOB)
 +32       QUIT 
VEND(ACRVEN) ;
 +1       ;----- GETS START AND END VENDORS IN RANGE SELECTION
 +2       ;
V         ;      RETURNS:
 +1       ;      ACRVEN  = CONTAINS BEGINNING AND ENDING VENDOR NAME RANGE
 +2       ; 
 +3        NEW DIR,X,Y
 +4        SET ACRVEN=""
 +5        SET DIR(0)="F"
 +6        SET DIR("A")="Start with VENDOR"
 +7        SET DIR("?")="Enter BEGINNING VENDOR in range"
 +8        DO ^DIR
 +9        IF $DATA(DTOUT)!($DATA(DUOUT))!($DATA(DIRUT))
               SET ACRVEN=""
               QUIT 
 +10       IF Y']""
               QUIT 
 +11       SET ACRVEN=Y
 +12       SET DIR("A")="End with VENDOR"
 +13       SET DIR("?")="Enter ENDING VENDOR in range"
 +14       DO ^DIR
 +15       IF $DATA(DTOUT)!($DATA(DUOUT))!($DATA(DIRUT))
               SET ACRVEN=""
               QUIT 
 +16       IF Y']""
               SET ACRVEN=""
               QUIT 
 +17       IF Y']ACRVEN
               Begin DoDot:1
 +18               WRITE !,"'",Y,"' does not follow '",ACRVEN,"'"
               End DoDot:1
               GOTO V
 +19       SET ACRVEN=ACRVEN_"^"_Y
 +20       QUIT 
TOTALS(ACRTAMT,ACRTCNT) ;
 +1       ;----- PRINTS GRAND TOTALS
 +2       ;
 +3       ;      INPUT:
 +4       ;      ACRTAMT = ARRAY CONTAINING AMOUNT TOTALS BY PAYMENT TYPE CODE
 +5       ;      ACRTCNT = ARRAY CONTAINING VENDOR COUNTS BY PAYMENT TYPE CODE
 +6       ;
 +7        WRITE @IOF
 +8       ;
 +9        NEW ACRGAMT,ACRGCNT,ACRTYP,I
 +10      ;
 +11       SET ACRTYP(1)="RENTS"
 +12       SET ACRTYP(2)="ROYALTIES"
 +13       SET ACRTYP(3)="OTHER INCOME"
 +14       SET ACRTYP(4)="FED INC TAX WHLD"
 +15       SET ACRTYP(5)="FISHING BOAT PROC"
 +16       SET ACRTYP(6)="MED & HLTH CARE"
 +17       SET ACRTYP(7)="NONEMPLOYEE COMP"
 +18       SET ACRTYP(8)="SUBSTITUTE PMTS"
 +19       SET ACRTYP("A")="CROP INS PROC"
 +20       SET ACRTYP("B")="EXC GOLD PARA"
 +21       SET ACRTYP("C")="PROC TO ATTY"
 +22      ;
 +23       FOR I=1:1:3
               WRITE !
 +24      ;
 +25       SET (ACRGCNT,ACRGAMT)=0
 +26       FOR I=1:1:8,"A","B","C"
               Begin DoDot:1
 +27      ;Q:'$D(ACRTAMT(I))
 +28               WRITE ?5,"TOTAL FOR ",ACRTYP(I)," PMTS:"
 +29               WRITE ?40,$JUSTIFY(+$GET(ACRTCNT(I)),4)
 +30               WRITE ?50,$JUSTIFY(+$GET(ACRTAMT(I)),12,2)
 +31               SET ACRGCNT=$GET(ACRGCNT)+$GET(ACRTCNT(I))
 +32               SET ACRGAMT=$GET(ACRGAMT)+$GET(ACRTAMT(I))
 +33               WRITE !!
               End DoDot:1
 +34      ;
 +35       WRITE ?40,"----"
 +36       WRITE ?50,"------------"
 +37       WRITE !
 +38       WRITE ?40,$JUSTIFY(ACRGCNT,4)
 +39       WRITE ?50,$JUSTIFY(ACRGAMT,12,2)
 +40       QUIT 
AMT(ACRVEN,ACRYR) ;
 +1       ;----- EXTRINSIC FUNCTION TO RETURN DOLLAR AMOUNT
 +2       ;
 +3        NEW X
 +4        SET X=$GET(^ACR1099V(ACRVEN,1,ACRYR,0))
 +5        SET Y=$PIECE(X,U,2)
 +6        IF $PIECE(X,U,6)="Y"
               SET Y=$PIECE(X,U,8)
 +7        QUIT Y
PADD(ACRLOC,ACRPADD) ;
 +1       ;----- RETURN PAYER'S ADDRESS ARRAY
 +2       ;
 +3        NEW I,DATA,X
 +4        KILL ACRPADD
 +5        FOR I=1:1:4
               SET ACRPADD(I)=""
 +6        SET I=0
 +7        SET DATA=$GET(^ACR1099P(ACRLOC,0))
 +8        IF $PIECE(DATA,U,2)]""
               Begin DoDot:1
 +9                SET I=I+1
 +10               SET ACRPADD(I)=$PIECE(DATA,U,2)
               End DoDot:1
 +11       IF $PIECE(DATA,U,3)]""
               Begin DoDot:1
 +12               SET I=I+1
 +13               SET ACRPADD(I)=$PIECE(DATA,U,3)
               End DoDot:1
 +14       IF $PIECE(DATA,U,4)]""
               Begin DoDot:1
 +15               SET I=I+1
 +16               SET ACRPADD(I)=$PIECE(DATA,U,4)
               End DoDot:1
 +17       SET X=$PIECE(DATA,U,5)_", "_$PIECE(^DIC(5,$PIECE(DATA,U,6),0),U,2)_"  "_$PIECE(DATA,U,7)
 +18       SET I=I+1
 +19       SET ACRPADD(I)=X
 +20       QUIT 
VADD(ACRVEN,ACRIRS,ACRVADD) ;
 +1       ;----- RETURN VENDOR'S ADDRESS ARRAY
 +2       ;
 +3        NEW I,DATA,X
 +4        KILL ACRVADD
 +5        FOR I=1:1:4
               SET ACRVADD(I)=""
 +6        SET ACRVADD(1)=$PIECE(^AUTTVNDR(ACRVEN,0),U)
 +7        IF ACRIRS]""
               SET ACRVADD(1)=ACRIRS
 +8        SET I=1
 +9        SET DATA=$GET(^AUTTVNDR(ACRVEN,13))
 +10       IF $PIECE(DATA,U)]""
               Begin DoDot:1
 +11               SET I=I+1
 +12               SET ACRVADD(I)=$PIECE(DATA,U)
               End DoDot:1
 +13       IF $PIECE(DATA,U,10)]""
               Begin DoDot:1
 +14               SET I=I+1
 +15               SET ACRVADD(I)=$PIECE(DATA,U,10)
               End DoDot:1
 +16       SET X=$PIECE(DATA,U,2)_", "_$PIECE(^DIC(5,$PIECE(DATA,U,3),0),U,2)_"  "_$PIECE(DATA,U,4)
 +17       SET ACRVADD(4)=X
 +18       QUIT