FBAAIAE ;ALB/FA - ADD/EDIT AN IPAC VENDOR AGREEMENT ;04 Dec 2013 07:27 AM
 ;;3.5;FEE BASIS;**123**;JAN 30, 1995;Build 51
 ;;Per VA Directive 6402, this routine should not be modified.
 ;
 ;-----------------------------------------------------------------------------
 ;                           Entry Points
 ; ADDEDIT  - Add/Edit an IPAC Vendor Agreement
 ;            NOTE: (actually called from first line of routine)
 ;-----------------------------------------------------------------------------
 ;
ADDEDIT ;EP
 ; Add/Edit an IPAC Vendor Agreement
 ; Called From: Menu - FBAA IPAC AGREEMENT Add/Edit an IPAC agreement
 N XX
 F  S XX=$$ADDEDIT1() Q:XX=1
 Q
 ;
ADDEDIT1()  ; Used to loop
 ; Input:       None
 ; Returns:     1 - User timed out or typed '^' to exit, 0 otherwise
 ; Called From: ADDEDT
 N IX,FLINE,MODE,STEXT,VAEDITED,VAIEN,VASTAT,VASTATO
 S FLINE="The following IPAC Agreements are currently on file:"
 S STEXT="Please select the IPAC agreement to edit or type NEW to create a new entry"
 S MODE=$$SELVA^FBAAIAU(FLINE,STEXT,1,"")       ; Select an IPAC Agreement
 I MODE="" Q 1                                  ; User exit
 I MODE=0 D ADDVA Q 0                           ; Add a new IPAC Agreement
 S VAIEN=MODE,MODE=1                            ; Edit IPAC agreement
 ;
 ; Attempt to lock the IPAC Vendor Agreement file
 Q:'$$LOCKVA^FBAAIAU(VAIEN) 0                   ; Attempt to lock the Vendor Agreement
 ;
 ; Warn the user if the selected agreement is incomplete
 S VASTATO=$P(^FBAA(161.95,VAIEN,0),U,4)        ; Current Agreement status
 I VASTATO="N" D                                ; Incomplete Vendor Agreement warning
 . W !!,"This IPAC Vendor Agreement is not complete. Complete it using this option"
 . W !,"or use the IPAC Vendor Agreement delete option to delete it."
 ;
 ; Store current Vendor agreement field values
 K ^TMP($J,"FBAAIAC")
 F IX=0:1:6 S ^TMP($J,"FBAAIAC",IX)=$G(^FBAA(161.95,VAIEN,IX))
 D EDITVA1(VAIEN)                               ; Edit the IPAC Agreement
 S VASTAT=$P(^FBAA(161.95,VAIEN,0),U,4)         ; Current Agreement status
 ;
 ; IPAC Agreement is still incomplete - unlock it and quit
 I VASTAT="N" D  Q 0
 . D UNLOCKVA^FBAAIAU(VAIEN)                    ; Unlock the Vendor Agreement
 . K ^TMP($J,"FBAAIAC")
 ;
 ; Check if the status went from N to A - First time agreement is complete
 I VASTATO="N",VASTAT="A" D  Q 0                ; Send ADD MRA
 . D A^FBAAIAQ(VAIEN)                           ; Create an ADD MRA record
 . D UNLOCKVA^FBAAIAU(VAIEN)                    ; Unlock the Vendor Agreement
 . K ^TMP($J,"FBAAIAC")
 ;
 ; Check to see if any of the field values were changed 
 S VAEDITED=0
 F IX=0:1:6 D  Q:VAEDITED
 . I $G(^FBAA(161.95,VAIEN,IX))'=$G(^TMP($J,"FBAAIAC",IX)) S VAEDITED=1
 ;
 ; Agreement was edited, create a MRA record for the changes
 D:VAEDITED=1 C^FBAAIAQ(VAIEN)                  ; Send Change MRA
 D UNLOCKVA^FBAAIAU(VAIEN)                      ; Unlock the Vendor Agreement
 K ^TMP($J,"FBAAIAC")
 Q 0
 ;
ADDVA ;
 ; Add a new IPAC Vendor Agreement
 ; Called From: ADDEDIT
 N FYR,VAIEN,VASTAT,VENIEN,XX
 S VENIEN=$$VENDSEL()                           ; Select a Vendor
 Q:VENIEN=""                                    ; No Vendor selected
 ;
 ; Display any active or new agreements for the selected vendor
 Q:'$$DISPVA(VENIEN)
 S FYR=$$FYR()                                  ; Ask fiscal year via DIR
 ;
 ; Add an IPAC Vendor Agreement for the selected vendor
 Q:'$$ADDVA1(VENIEN,FYR,.VAIEN)
 S VASTAT=$P(^FBAA(161.95,VAIEN,0),U,4)         ; Current Agreement status
 D:VASTAT'="N" A^FBAAIAQ(VAIEN)                 ; Create an ADD MRA record
 Q
 ;
VENDSEL()   ; Selects a Vendor to add an agreement for
 ; Input:       None
 ; Output:      None
 ; Returns:     VENIEN          - IEN of the selected Vendor or "" if not selected
 ; Called From: ADDVA
 N DA,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,QUIT,VENIEN,X,Y
 S DIC="^FBAAV(",DIC(0)="AEQM"
 S DIC("A")="Select a Vendor: "
 S DIC("S")="I $P($G(^(""AMS"")),""^"",4)=""F"""    ; Only Show Federal Vendors
 D ^DIC
 I Y'>0 Q ""                                        ; No selected Vendor
 S VENIEN=+Y,QUIT=0
 I $P($G(^FBAAV(VENIEN,"ADEL")),U,1)="Y" D          ; Deleted Vendor
 . S DIR(0)="Y"
 . W !!,"This vendor has been deleted from the Austin vendor database"
 . S DIR("A")="Do you wish to continue",DIR("B")="No"
 . D ^DIR
 . S:Y'>0 QUIT=1
 Q:QUIT ""
 Q VENIEN
 ;
FYR() ; Prompt the user for the Fiscal year of the agreement
 ; Input:       None
 ; Output:      None
 ; Returns:     FYR     - IEN of the selected Vendor or "" if not selected
 ; Called From: ADDVA
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,XX,Y,FBCURR,FBMON,FBYR
 S DIR(0)="161.95,2"
 S FBCURR=$$FMTE^XLFDT(DT,"7D")    ; current date
 S FBMON=$P(FBCURR,"/",2)          ; current month
 S FBYR=$P(FBCURR,"/",1)           ; current year
 I FBMON'<10 S FBYR=FBYR+1         ; for Oct-Dec, Fiscal year is Calendar year+1
 S DIR("B")=FBYR
 D ^DIR
 Q Y
 ;
DISPVA(VENIEN) ; Display any active or new agreements on file for this vendor
 ; Input:       VENIEN      - Selected Vendor IEN
 ; Output:      New/Active agreements for vendor are displayed
 ; Returns:     Selected Vendor or "" if no vendor was de-selected
 ; Called From: ADDVA
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,FLINE,VAIEN,VASTAT,X,Y
 ;
 ; Selected Vendor doesn't have any new or active agreements
 I '$D(^FBAA(161.95,"AVA",VENIEN,"A")),'$D(^FBAA(161.95,"AVA",VENIEN,"N")) Q VENIEN
 S FLINE="This vendor has the following active IPAC agreement(s) on file:"
 D SELVA^FBAAIAU(FLINE,"",0,VENIEN)
 W !
 S DIR(0)="Y",DIR("A")="Do you wish to continue with this vendor",DIR("B")="No"
 D ^DIR
 Q:Y'>0 ""                                      ; De-select the vendor
 Q VENIEN
 ;
ADDVA1(VENIEN,FYR,VAIEN) ; Add a new IPAC Vendor agreement for the selected vendor
 ; Input:       VENIEN      - Selected Vendor IEN
 ;              FYR         - Fiscal Year of the new IPAC agreement
 ; Output:      VAIEN       - IEN of the added/edited Vendor agreement
 ;              Vendor agreement is filed for the selected vendor
 ; Returns:     0 if New entry couldn't be added 1 otherwise
 ; Called From: ADDVA
 N DA,DIC,DIE,DO,DR,DTOUT,VAID,X,Y
 Q:'$$LOCKVA 0                                  ; Lock IPAC Agreement file
 S VAID=$$NEXTVAID()                            ; Last IPAC ID number
 D UNLOCKVA                                     ; Unlock Vendor Agreement file            
 ;
 ; Add a new entry to the IPAC Vendor Agreement file with Identity fields only
 ; NOTE: if not all the identity fields are added, no agreement is filed
 S X=VAID,DIC=161.95
 S DIC(0)="Z",DIC("DR")="1////^S X=VENIEN;2///^S X=FYR;3////N"
 D FILE^DICN
 I (+Y'>0)!($P(Y,U,3)'=1) D  Q 0
 . W !!," A new IPAC Agreement cannot be filed at this time."
 S VAIEN=+Y
 S DIE=161.95,DA=VAIEN
 S DR="4:16"
 D ^DIE
 D CHKREQ^FBAAIAU(VAIEN)                        ; Check the status
 Q 1
 ;
NEXTVAID()  ; Increments the last IPAC ID number in the parameter file
 ; and returns the new value
 ; Input:       None
 ; Output:      Sets the Last IPAC ID number parameter
 ; Returns:     Next Available IPAC ID number
 N DA,DR,DIE,DTOUT,VAID
 I '$D(^FBAA(161.4,1,"IPAC"))!'$D(^FBAA(161.95)) S VAID=100
 E  S VAID=^FBAA(161.4,1,"IPAC")
 ;
 ; Make sure this is truly the last number and if not, find the last one
 S:$D(^FBAA(161.95,"B",VAID)) VAID=$O(^FBAA(161.95,"B",""),-1)
 S VAID=VAID+1                                  ; Get the new 'LAST' ID
 S DIE=161.4,DA=1,DR="80///^S X=VAID"
 D ^DIE                                         ; File the new last number
 Q VAID
 ; 
EDITVA1(VAIEN) ; Edit the selected IPAC Vendor agreement
 ; Input:       VAIEN       - IEN of the IPAC Vendor agreement to edit
 ; Called From: ADDVA
 N DA,DIE,DR,DTOUT,INV,VASTAT
 S DIE=161.95,DA=VAIEN
 S VASTAT=$P(^FBAA(161.95,VAIEN,0),U,4),INV=0
 ;
 ; Check for current invoices for the selected agreement
 S:$D(^FBAAC("IPAC",VAIEN))!($D(^FBAA(162.1,"IPAC",VAIEN))!($D(^FBAAI("IPAC",VAIEN)))) INV=1
 ;
 ; Display Vendor and Fiscal Year but don't allow edit if invoices exist
 I INV D
 . N FYR,VENDOR
 . S VENDOR=$P(^FBAA(161.95,VAIEN,0),"^",2)
 . S VENDOR=$E($P(^FBAAV(VENDOR,0),"^",1),1,36)
 . S FYR=$P(^FBAA(161.95,VAIEN,0),"^",3)
 . W !!,"The IPAC Agreement you have selected has been used on one or more payment "
 . W !,"records.  Because of this the Vendor and the Fiscal Year are not editable."
 . W !!,"     VENDOR: ",$$LJ^XLFSTR(VENDOR,38),"(No editing allowed)"
 . W !,"FISCAL YEAR: ",$$LJ^XLFSTR(FYR,38),"(No editing allowed)",!
 S DR=$S('INV:"1:2;",1:"")
 S DR=DR_$S(VASTAT'="N":"3:16",1:"4:16")
 D ^DIE
 D CHKREQ^FBAAIAU(VAIEN)                        ; Check the status
 Q
 ;
LOCKVA() ; Attempt to lock the Vendor agreement file to add a new agreement
 ; Input:   None
 ; Output:  Vendor agreement file locked or error message displayed
 ; Returns: 1 - Vendor agreement file locked, 0 otherwise
 L +^FBAA(161.95,0):0
 I '$T D  Q 0
 . W !!,"Someone is editing the IPAC Agreement file.  Cannot enter a new IPAC agreement"
 . W !,"file at this time.  Try again at a later time."
 Q 1
 ;
UNLOCKVA() ; Unlock Vendor agreement file
 ; Input:   None
 ; Output:  Vendor agreement file unlocked
 L -^FBAA(161.95,0)
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFBAAIAE   9410     printed  Sep 23, 2025@19:31:37                                                                                                                                                                                                     Page 2
FBAAIAE   ;ALB/FA - ADD/EDIT AN IPAC VENDOR AGREEMENT ;04 Dec 2013 07:27 AM
 +1       ;;3.5;FEE BASIS;**123**;JAN 30, 1995;Build 51
 +2       ;;Per VA Directive 6402, this routine should not be modified.
 +3       ;
 +4       ;-----------------------------------------------------------------------------
 +5       ;                           Entry Points
 +6       ; ADDEDIT  - Add/Edit an IPAC Vendor Agreement
 +7       ;            NOTE: (actually called from first line of routine)
 +8       ;-----------------------------------------------------------------------------
 +9       ;
ADDEDIT   ;EP
 +1       ; Add/Edit an IPAC Vendor Agreement
 +2       ; Called From: Menu - FBAA IPAC AGREEMENT Add/Edit an IPAC agreement
 +3        NEW XX
 +4        FOR 
               SET XX=$$ADDEDIT1()
               if XX=1
                   QUIT 
 +5        QUIT 
 +6       ;
ADDEDIT1() ; Used to loop
 +1       ; Input:       None
 +2       ; Returns:     1 - User timed out or typed '^' to exit, 0 otherwise
 +3       ; Called From: ADDEDT
 +4        NEW IX,FLINE,MODE,STEXT,VAEDITED,VAIEN,VASTAT,VASTATO
 +5        SET FLINE="The following IPAC Agreements are currently on file:"
 +6        SET STEXT="Please select the IPAC agreement to edit or type NEW to create a new entry"
 +7       ; Select an IPAC Agreement
           SET MODE=$$SELVA^FBAAIAU(FLINE,STEXT,1,"")
 +8       ; User exit
           IF MODE=""
               QUIT 1
 +9       ; Add a new IPAC Agreement
           IF MODE=0
               DO ADDVA
               QUIT 0
 +10      ; Edit IPAC agreement
           SET VAIEN=MODE
           SET MODE=1
 +11      ;
 +12      ; Attempt to lock the IPAC Vendor Agreement file
 +13      ; Attempt to lock the Vendor Agreement
           if '$$LOCKVA^FBAAIAU(VAIEN)
               QUIT 0
 +14      ;
 +15      ; Warn the user if the selected agreement is incomplete
 +16      ; Current Agreement status
           SET VASTATO=$PIECE(^FBAA(161.95,VAIEN,0),U,4)
 +17      ; Incomplete Vendor Agreement warning
           IF VASTATO="N"
               Begin DoDot:1
 +18               WRITE !!,"This IPAC Vendor Agreement is not complete. Complete it using this option"
 +19               WRITE !,"or use the IPAC Vendor Agreement delete option to delete it."
               End DoDot:1
 +20      ;
 +21      ; Store current Vendor agreement field values
 +22       KILL ^TMP($JOB,"FBAAIAC")
 +23       FOR IX=0:1:6
               SET ^TMP($JOB,"FBAAIAC",IX)=$GET(^FBAA(161.95,VAIEN,IX))
 +24      ; Edit the IPAC Agreement
           DO EDITVA1(VAIEN)
 +25      ; Current Agreement status
           SET VASTAT=$PIECE(^FBAA(161.95,VAIEN,0),U,4)
 +26      ;
 +27      ; IPAC Agreement is still incomplete - unlock it and quit
 +28       IF VASTAT="N"
               Begin DoDot:1
 +29      ; Unlock the Vendor Agreement
                   DO UNLOCKVA^FBAAIAU(VAIEN)
 +30               KILL ^TMP($JOB,"FBAAIAC")
               End DoDot:1
               QUIT 0
 +31      ;
 +32      ; Check if the status went from N to A - First time agreement is complete
 +33      ; Send ADD MRA
           IF VASTATO="N"
               IF VASTAT="A"
                   Begin DoDot:1
 +34      ; Create an ADD MRA record
                       DO A^FBAAIAQ(VAIEN)
 +35      ; Unlock the Vendor Agreement
                       DO UNLOCKVA^FBAAIAU(VAIEN)
 +36                   KILL ^TMP($JOB,"FBAAIAC")
                   End DoDot:1
                   QUIT 0
 +37      ;
 +38      ; Check to see if any of the field values were changed 
 +39       SET VAEDITED=0
 +40       FOR IX=0:1:6
               Begin DoDot:1
 +41               IF $GET(^FBAA(161.95,VAIEN,IX))'=$GET(^TMP($JOB,"FBAAIAC",IX))
                       SET VAEDITED=1
               End DoDot:1
               if VAEDITED
                   QUIT 
 +42      ;
 +43      ; Agreement was edited, create a MRA record for the changes
 +44      ; Send Change MRA
           if VAEDITED=1
               DO C^FBAAIAQ(VAIEN)
 +45      ; Unlock the Vendor Agreement
           DO UNLOCKVA^FBAAIAU(VAIEN)
 +46       KILL ^TMP($JOB,"FBAAIAC")
 +47       QUIT 0
 +48      ;
ADDVA     ;
 +1       ; Add a new IPAC Vendor Agreement
 +2       ; Called From: ADDEDIT
 +3        NEW FYR,VAIEN,VASTAT,VENIEN,XX
 +4       ; Select a Vendor
           SET VENIEN=$$VENDSEL()
 +5       ; No Vendor selected
           if VENIEN=""
               QUIT 
 +6       ;
 +7       ; Display any active or new agreements for the selected vendor
 +8        if '$$DISPVA(VENIEN)
               QUIT 
 +9       ; Ask fiscal year via DIR
           SET FYR=$$FYR()
 +10      ;
 +11      ; Add an IPAC Vendor Agreement for the selected vendor
 +12       if '$$ADDVA1(VENIEN,FYR,.VAIEN)
               QUIT 
 +13      ; Current Agreement status
           SET VASTAT=$PIECE(^FBAA(161.95,VAIEN,0),U,4)
 +14      ; Create an ADD MRA record
           if VASTAT'="N"
               DO A^FBAAIAQ(VAIEN)
 +15       QUIT 
 +16      ;
VENDSEL() ; Selects a Vendor to add an agreement for
 +1       ; Input:       None
 +2       ; Output:      None
 +3       ; Returns:     VENIEN          - IEN of the selected Vendor or "" if not selected
 +4       ; Called From: ADDVA
 +5        NEW DA,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,QUIT,VENIEN,X,Y
 +6        SET DIC="^FBAAV("
           SET DIC(0)="AEQM"
 +7        SET DIC("A")="Select a Vendor: "
 +8       ; Only Show Federal Vendors
           SET DIC("S")="I $P($G(^(""AMS"")),""^"",4)=""F"""
 +9        DO ^DIC
 +10      ; No selected Vendor
           IF Y'>0
               QUIT ""
 +11       SET VENIEN=+Y
           SET QUIT=0
 +12      ; Deleted Vendor
           IF $PIECE($GET(^FBAAV(VENIEN,"ADEL")),U,1)="Y"
               Begin DoDot:1
 +13               SET DIR(0)="Y"
 +14               WRITE !!,"This vendor has been deleted from the Austin vendor database"
 +15               SET DIR("A")="Do you wish to continue"
                   SET DIR("B")="No"
 +16               DO ^DIR
 +17               if Y'>0
                       SET QUIT=1
               End DoDot:1
 +18       if QUIT
               QUIT ""
 +19       QUIT VENIEN
 +20      ;
FYR()     ; Prompt the user for the Fiscal year of the agreement
 +1       ; Input:       None
 +2       ; Output:      None
 +3       ; Returns:     FYR     - IEN of the selected Vendor or "" if not selected
 +4       ; Called From: ADDVA
 +5        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,XX,Y,FBCURR,FBMON,FBYR
 +6        SET DIR(0)="161.95,2"
 +7       ; current date
           SET FBCURR=$$FMTE^XLFDT(DT,"7D")
 +8       ; current month
           SET FBMON=$PIECE(FBCURR,"/",2)
 +9       ; current year
           SET FBYR=$PIECE(FBCURR,"/",1)
 +10      ; for Oct-Dec, Fiscal year is Calendar year+1
           IF FBMON'<10
               SET FBYR=FBYR+1
 +11       SET DIR("B")=FBYR
 +12       DO ^DIR
 +13       QUIT Y
 +14      ;
DISPVA(VENIEN) ; Display any active or new agreements on file for this vendor
 +1       ; Input:       VENIEN      - Selected Vendor IEN
 +2       ; Output:      New/Active agreements for vendor are displayed
 +3       ; Returns:     Selected Vendor or "" if no vendor was de-selected
 +4       ; Called From: ADDVA
 +5        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,FLINE,VAIEN,VASTAT,X,Y
 +6       ;
 +7       ; Selected Vendor doesn't have any new or active agreements
 +8        IF '$DATA(^FBAA(161.95,"AVA",VENIEN,"A"))
               IF '$DATA(^FBAA(161.95,"AVA",VENIEN,"N"))
                   QUIT VENIEN
 +9        SET FLINE="This vendor has the following active IPAC agreement(s) on file:"
 +10       DO SELVA^FBAAIAU(FLINE,"",0,VENIEN)
 +11       WRITE !
 +12       SET DIR(0)="Y"
           SET DIR("A")="Do you wish to continue with this vendor"
           SET DIR("B")="No"
 +13       DO ^DIR
 +14      ; De-select the vendor
           if Y'>0
               QUIT ""
 +15       QUIT VENIEN
 +16      ;
ADDVA1(VENIEN,FYR,VAIEN) ; Add a new IPAC Vendor agreement for the selected vendor
 +1       ; Input:       VENIEN      - Selected Vendor IEN
 +2       ;              FYR         - Fiscal Year of the new IPAC agreement
 +3       ; Output:      VAIEN       - IEN of the added/edited Vendor agreement
 +4       ;              Vendor agreement is filed for the selected vendor
 +5       ; Returns:     0 if New entry couldn't be added 1 otherwise
 +6       ; Called From: ADDVA
 +7        NEW DA,DIC,DIE,DO,DR,DTOUT,VAID,X,Y
 +8       ; Lock IPAC Agreement file
           if '$$LOCKVA
               QUIT 0
 +9       ; Last IPAC ID number
           SET VAID=$$NEXTVAID()
 +10      ; Unlock Vendor Agreement file            
           DO UNLOCKVA
 +11      ;
 +12      ; Add a new entry to the IPAC Vendor Agreement file with Identity fields only
 +13      ; NOTE: if not all the identity fields are added, no agreement is filed
 +14       SET X=VAID
           SET DIC=161.95
 +15       SET DIC(0)="Z"
           SET DIC("DR")="1////^S X=VENIEN;2///^S X=FYR;3////N"
 +16       DO FILE^DICN
 +17       IF (+Y'>0)!($PIECE(Y,U,3)'=1)
               Begin DoDot:1
 +18               WRITE !!," A new IPAC Agreement cannot be filed at this time."
               End DoDot:1
               QUIT 0
 +19       SET VAIEN=+Y
 +20       SET DIE=161.95
           SET DA=VAIEN
 +21       SET DR="4:16"
 +22       DO ^DIE
 +23      ; Check the status
           DO CHKREQ^FBAAIAU(VAIEN)
 +24       QUIT 1
 +25      ;
NEXTVAID() ; Increments the last IPAC ID number in the parameter file
 +1       ; and returns the new value
 +2       ; Input:       None
 +3       ; Output:      Sets the Last IPAC ID number parameter
 +4       ; Returns:     Next Available IPAC ID number
 +5        NEW DA,DR,DIE,DTOUT,VAID
 +6        IF '$DATA(^FBAA(161.4,1,"IPAC"))!'$DATA(^FBAA(161.95))
               SET VAID=100
 +7       IF '$TEST
               SET VAID=^FBAA(161.4,1,"IPAC")
 +8       ;
 +9       ; Make sure this is truly the last number and if not, find the last one
 +10       if $DATA(^FBAA(161.95,"B",VAID))
               SET VAID=$ORDER(^FBAA(161.95,"B",""),-1)
 +11      ; Get the new 'LAST' ID
           SET VAID=VAID+1
 +12       SET DIE=161.4
           SET DA=1
           SET DR="80///^S X=VAID"
 +13      ; File the new last number
           DO ^DIE
 +14       QUIT VAID
 +15      ; 
EDITVA1(VAIEN) ; Edit the selected IPAC Vendor agreement
 +1       ; Input:       VAIEN       - IEN of the IPAC Vendor agreement to edit
 +2       ; Called From: ADDVA
 +3        NEW DA,DIE,DR,DTOUT,INV,VASTAT
 +4        SET DIE=161.95
           SET DA=VAIEN
 +5        SET VASTAT=$PIECE(^FBAA(161.95,VAIEN,0),U,4)
           SET INV=0
 +6       ;
 +7       ; Check for current invoices for the selected agreement
 +8        if $DATA(^FBAAC("IPAC",VAIEN))!($DATA(^FBAA(162.1,"IPAC",VAIEN))!($DATA(^FBAAI("IPAC",VAIEN))))
               SET INV=1
 +9       ;
 +10      ; Display Vendor and Fiscal Year but don't allow edit if invoices exist
 +11       IF INV
               Begin DoDot:1
 +12               NEW FYR,VENDOR
 +13               SET VENDOR=$PIECE(^FBAA(161.95,VAIEN,0),"^",2)
 +14               SET VENDOR=$EXTRACT($PIECE(^FBAAV(VENDOR,0),"^",1),1,36)
 +15               SET FYR=$PIECE(^FBAA(161.95,VAIEN,0),"^",3)
 +16               WRITE !!,"The IPAC Agreement you have selected has been used on one or more payment "
 +17               WRITE !,"records.  Because of this the Vendor and the Fiscal Year are not editable."
 +18               WRITE !!,"     VENDOR: ",$$LJ^XLFSTR(VENDOR,38),"(No editing allowed)"
 +19               WRITE !,"FISCAL YEAR: ",$$LJ^XLFSTR(FYR,38),"(No editing allowed)",!
               End DoDot:1
 +20       SET DR=$SELECT('INV:"1:2;",1:"")
 +21       SET DR=DR_$SELECT(VASTAT'="N":"3:16",1:"4:16")
 +22       DO ^DIE
 +23      ; Check the status
           DO CHKREQ^FBAAIAU(VAIEN)
 +24       QUIT 
 +25      ;
LOCKVA()  ; Attempt to lock the Vendor agreement file to add a new agreement
 +1       ; Input:   None
 +2       ; Output:  Vendor agreement file locked or error message displayed
 +3       ; Returns: 1 - Vendor agreement file locked, 0 otherwise
 +4        LOCK +^FBAA(161.95,0):0
 +5        IF '$TEST
               Begin DoDot:1
 +6                WRITE !!,"Someone is editing the IPAC Agreement file.  Cannot enter a new IPAC agreement"
 +7                WRITE !,"file at this time.  Try again at a later time."
               End DoDot:1
               QUIT 0
 +8        QUIT 1
 +9       ;
UNLOCKVA() ; Unlock Vendor agreement file
 +1       ; Input:   None
 +2       ; Output:  Vendor agreement file unlocked
 +3        LOCK -^FBAA(161.95,0)
 +4        QUIT 
 +5       ;