FBAAIAU ;ALB/FA - BUILD C8 MESSAGE ;03 Dec 2013 9:34 AM
;;3.5;FEE BASIS;**123**;JAN 30, 1995;Build 51
;;Per VA Directive 6402, this routine should not be modified.
;
; Contains utility functions for IPAC Vendor Agreement Management
;
;-----------------------------------------------------------------------------
; Methods
; CHKREQ - Makes sure that all the required fields of the IPAC Vendor
; agreement have values and if they do, changes the status of
; the agreement to 'A'
; DELALL - Delete all Vendor Agreements (161.95) and MRAs (161.96)
; LOCKVA - Attempts to lock a specified IPAC Vendor Agreement
; SELMRA - Displays a list of all the current MRA records and allows the
; user to select one
; SELVA - Displays a list of all the current IPAC Vendor Agreements and
; allows the user to either select one to be edited or type 'NEW'
; to enter a new one
; VADISP - Returns the IPAC Vendor Agreement Display Layout for a
; specified vendor agreement
; VALOAD - Returns an array of external field values for a specified
; Vendor Agreement
; UNLOCKVA - Unlocks a specified IPAC Vendor Agreement
;-----------------------------------------------------------------------------
;
CHKREQ(VAIEN) ;EP
; Checks to see if all of the required fields of the IPAC vendor agreement have
; been entered and if so, change the status of the agreement to 'A'
; Input: VAIEN - IEN of the IPAC Vendor agreement to be checked
; Called From: FBAAIAE, FBAAIAC
; NOTE: Quits if the current status of the agreement is not 'N' without
; doing anything. Also, the fields of the Vendor agreement are
; HARD CODED in this method - if a new required field is added this
; method must be modified
N ARR,ERR,DA,DIE,DR,DTOUT,FLD,FLDINFO,NDE,PCE,STOP
Q:'$D(^FBAA(161.95,VAIEN,0)) ; Invalid IPAC agreement IEN
Q:$P(^FBAA(161.95,VAIEN,0),U,4)'="N" ; Status isn't 'N'
;
; First get a list of all the required fields
F FLD=1:1:16,7.5 D ; NOTE: HARD CODED field list
. D FIELD^DID(161.95,FLD,,"GLOBAL SUBSCRIPT LOCATION;SPECIFIER","ARR","ERR")
. Q:$E(ARR("SPECIFIER"),1)'="R" ; Not a required field
. S FLDINFO(FLD)=ARR("GLOBAL SUBSCRIPT LOCATION") ; Node;Piece
;
; Now loop Through all of the required fields and check for data
S FLD=0,STOP=0
F D Q:FLD="" Q:STOP
. S FLD=$O(FLDINFO(FLD))
. Q:FLD=""
. S NDE=$P(FLDINFO(FLD),";",1),PCE=$P(FLDINFO(FLD),";",2)
. S:$P($G(^FBAA(161.95,VAIEN,NDE)),U,PCE)="" STOP=1 ; Missing required field
Q:STOP
;
S DIE=161.95,DA=VAIEN
S DR="3////A"
D ^DIE
Q
;
DELALL ;EP
; Clean-up utility to delete all existing Vendor agreements and MRA records
; Input: None
; Output: ^FBAA(161.95) AND ^FBAA(161.96) are cleared
N DA,DIE,DIK,DR,DTOUT
S DIK="^FBAA(161.95,"
S DA=0
F D Q:DA=""
. S DA=$O(^FBAA(161.95,DA))
. Q:DA=""
. D ^DIK
;
S DIK="^FBAA(161.96,"
S DA=0
F D Q:DA=""
. S DA=$O(^FBAA(161.96,DA))
. Q:DA=""
. D ^DIK
;
; Reset the Last IPAC number
S DIE=161.4,DA=1,DR="80///100"
D ^DIE ; File the new last number
Q
;
SELVA(FLINE,STEXT,NEW,SVENIEN) ;EP
; Displays all of the currently filed IPAC Vendor agreements and allows the user
; to select one to edit or type 'NEW' to enter a new one
; Input: FLINE - Text of the first line to be displayed
; STEXT - User Selection prompt to be displayed
; NOTE: "" is allowed here. If null, this becomes a
; display only method with no ability select a Vendor
; OR to type NEW to enter a new one
; NEW - 1 to allow NEW as a valid selection, 0 otherwise
; SVENIEN - IEN of a specified vendor
; Optional, if specified, only IPAC agreements for the
; specified vendor will be displayed
; Output: Current IPAC Vendor agreements displayed to the screen, if there are none,
; a message is displayed
; Returns: VAIEN - IEN of the selected IPAC Agreement
; 0 - User wants/needs to enter a new agreement
; "" - No IPAC Vendor Agreement was selected
N CNT,LN,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IX,OUT,VADATA,VAIEN,VENIEN,X,XX,Y
S:'$D(SVENIEN) SVENIEN=""
;
; First create and array of all current IPAC Vendor Agreement data to display
S CNT=0,VAIEN=0
F D Q:+VAIEN=0
. S VAIEN=$O(^FBAA(161.95,VAIEN))
. Q:+VAIEN=0
. S VENIEN=$P(^FBAA(161.95,VAIEN,0),U,2) ; Vendor IEN
. Q:(SVENIEN'="")&(SVENIEN'=VENIEN) ; Not the selected Vendor
. S CNT=CNT+1
. S XX=$$LJ^XLFSTR(CNT,3) ; Selection #
. S XX=XX_$$LJ^XLFSTR($P(^FBAA(161.95,VAIEN,0),U,1),11) ; ID
. S XX=XX_$$LJ^XLFSTR($P(^FBAA(161.95,VAIEN,0),U,3),5) ; Fiscal Year
. S XX=XX_$$LJ^XLFSTR($$GET1^DIQ(161.2,VENIEN_",",.01),"29T") ; Vendor Name
. S XX=XX_" "
. S XX=XX_$P(^FBAA(161.95,VAIEN,0),U,4)_" " ; Status
. S XX=XX_$$LJ^XLFSTR($P(^FBAA(161.95,VAIEN,0),U,5),"26T") ; Description
. S VADATA(CNT)=VAIEN_U_XX
;
I 'CNT D Q OUT
. S OUT=""
. Q:STEXT=""
. W !!,"No IPAC Agreements are currently on file."
. H:'NEW 1
. Q:'NEW
. S DIR("A")="Enter a new agreement"
. S DIR(0)="Y"
. D ^DIR
. S:+Y=1 OUT=0
;
; Next display all of the current IPAC Vendor Agreements
S DIR(0)="FO",LN=0
S:NEW DIR("B")="NEW"
S LN=LN+1,DIR("A",LN)=FLINE
S LN=LN+1,DIR("A",LN)=" "
S LN=LN+1,DIR("A",LN)="# ID FY Vendor S Description"
S LN=LN+1,DIR("A",LN)="-- ---------- ---- ------------------------------ - -------------------------"
S IX=""
F D Q:IX=""
. S IX=$O(VADATA(IX))
. Q:IX=""
. S LN=LN+1,DIR("A",LN)=$P(VADATA(IX),U,2)
I STEXT="" D Q "" ; Just display, no selection
. W !!
. S LN=""
. F D Q:LN=""
. . S LN=$O(DIR("A",LN))
. . Q:LN=""
. . W !,DIR("A",LN)
S LN=LN+1,DIR("A",LN)=" "
S LN=LN+1,DIR("A",LN)=STEXT
S DIR("A")="Selection #"
SELVA1 ; Looping tag
W !!
K X,Y
D ^DIR
I $D(DTOUT)!$D(DUOUT) Q "" ; User timed out or pressed ^
S XX=$$UP^XLFSTR(Y)
I NEW Q:(XX="NEW")!(XX="N")!(XX="NE")!(XX="") 0 ; Creating a new one
I 'NEW Q:XX="" "" ; User quitting
I XX>0,XX'>CNT,XX?.N Q $P(VADATA(XX),U,1) ; Selected IEN
;
W !!,*7,"Enter a number from 1-"_CNT
W:NEW " or Type 'NEW'"
H 1
G SELVA1
;
SELMRA(FLINE,STEXT,STATUS,ACTION) ;EP
; Displays all of the currently filed MRA records with a status of 'T' and
; allows the user to select one
; Input: FLINE - Text of the first line to be displayed
; STEXT - User Selection prompt to be displayed
; STATUS - 'P' - Display pending MRA Records
; 'T' - Display transmitted MRA records
; '' - Display both pending and transmitted records
; ACTION - 'A' - Display Add MRA records
; 'C' - Display Change MRA records
; 'D' - Display Deleted MRA records
; '' - Display MRA records with any type of action
; Output: MRA Records that match the specified criteria are displayed to the screen.
; If there are none, a message is displayed
; Returns: MRAIEN - IEN of the selected MRA Record
; "" - No MRA record was selected
N CNT,LN,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IX,MRAACT,MRADATA,MRAIEN,MRASTAT
N OUT,TDT,VAIEN,VENIEN,X,XX,Y,ZZ
;
; First create and array of all current MRA records that match the selection criteria
S CNT=0,MRAIEN=0
F D Q:+MRAIEN=0
. S MRAIEN=$O(^FBAA(161.96,MRAIEN))
. Q:+MRAIEN=0
. S ZZ=^FBAA(161.96,MRAIEN,0)
. S MRAACT=$P(ZZ,U,4) ; Action of the MRA Record
. S MRASTAT=$P(ZZ,U,5) ; Status of the MRA Record
. I STATUS'="",STATUS'=MRASTAT Q ; Not the specified status
. I ACTION'="",ACTION'=MRAACT Q ; Not the specified action
. S CNT=CNT+1
. S XX=$$LJ^XLFSTR(CNT,3) ; Selection #
. S XX=XX_$$LJ^XLFSTR($P(ZZ,U,3),11) ; IPAC Agreement ID
. S XX=XX_$$LJ^XLFSTR(MRASTAT,2) ; Status
. S XX=XX_$$LJ^XLFSTR(MRAACT,2) ; Action
. I (STATUS="")!(STATUS="T") D ; Transmit Date
. . S TDT=$P(ZZ,U,6)
. . S:TDT'="" TDT=$$FMTE^XLFDT(TDT,2) ; Converted to external
. . S XX=XX_$$LJ^XLFSTR(TDT,9)
. ;
. ; Only displaying MRA records with an action of DELETE - no more columns to display
. I ACTION="D" S MRADATA(CNT)=MRAIEN_U_XX Q
. S VAIEN=$P(ZZ,U,2) ; IPAC Agreement IEN
. S VENIEN=$P($G(^FBAA(161.95,VAIEN,0)),U,2) ; Vendor IEN
. S XX=XX_$$LJ^XLFSTR($$GET1^DIQ(161.2,VENIEN_",",.01),"30T")_" " ; Vendor Name
. S XX=XX_$$LJ^XLFSTR($P(^FBAA(161.95,VAIEN,0),U,5),"23T") ; Description
. S MRADATA(CNT)=MRAIEN_U_XX
;
I 'CNT D Q OUT
. S OUT=""
. Q:STEXT=""
. W !!,"No MRA records that match the specified criteria are currently on file."
;
; Next display all of the found MRA Records
S DIR(0)="FO",LN=0
S LN=LN+1,DIR("A",LN)=FLINE
S LN=LN+1,DIR("A",LN)=" "
S LN=LN+1,DIR("A",LN)="# ID A "
I (STATUS="")!(STATUS="T") D
. S DIR("A",LN)=DIR("A",LN)_"S Trans Dt "
I (ACTION'="D") D
. S DIR("A",LN)=DIR("A",LN)_"Vendor Description"
S LN=LN+1,DIR("A",LN)="-- ---------- - "
I (STATUS="")!(STATUS="T") D
. S DIR("A",LN)=DIR("A",LN)_"- -------- "
I (ACTION'="D") D
. S DIR("A",LN)=DIR("A",LN)_"------------------------------ ----------------------"
S IX=""
F D Q:IX=""
. S IX=$O(MRADATA(IX))
. Q:IX=""
. S LN=LN+1,DIR("A",LN)=$P(MRADATA(IX),U,2)
S LN=LN+1,DIR("A",LN)=" "
S LN=LN+1,DIR("A",LN)=STEXT
S DIR("A")="Selection #"
SELMRA1 ; Looping tag
W !!
K X,Y
D ^DIR
I $D(DTOUT)!$D(DUOUT) Q "" ; User timed out or pressed ^
S XX=$$UP^XLFSTR(Y)
Q:XX="" "" ; User quitting
I XX>0,XX'>CNT,XX?.N Q $P(MRADATA(XX),U,1) ; Selected IEN
;
W !!,*7,"Enter a number from 1-"_CNT
H 1
G SELMRA1
;
VADISP(VAIEN,TOSCREEN,VAOUT) ;EP
; Returns the IPAC Vendor Agreement Display Layout for a specified vendor
; agreement
; Input: VAIEN - Vendor Agreement IEN to build display layout for
; TOSCREEN - 1 - Display the Vendor Agreement to the screen, don't return VAOUT
; 0 - Don't display it, return array VAOUT instead
; Output: VAOUT - Array of IPAC Vendor Agreement Display Layout lines
; Only returned if TOSCREEN=0
;
N LN,VADATA,XX
K VAOUT
; Invalid Vendor Agreement
Q:'$D(^FBAA(161.95,VAIEN))
;
D VALOAD(VAIEN,.VADATA)
S XX=VADATA("ID"),VAOUT(1)="IPAC Vendor Agreement ID: "_$$LJ^XLFSTR(XX,12)
S XX=VADATA("STAT"),VAOUT(1)=VAOUT(1)_"Status: "_$$LJ^XLFSTR(XX,10)
S XX=VADATA("FY"),VAOUT(1)=VAOUT(1)_"FY: "_$$LJ^XLFSTR(XX,1,6)
S XX=VADATA("VENDOR"),VAOUT(2)="Vendor: "_$$LJ^XLFSTR(XX,48)
S XX=VADATA("DESC"),VAOUT(3)=" Desc: "_$$LJ^XLFSTR(XX,62)
S XX=VADATA("SHAN"),VAOUT(4)=" Sharing Agreement #: "_$$LJ^XLFSTR(XX,"15T")
S XX=VADATA("CALC"),VAOUT(5)="Customer ALC: "_$$LJ^XLFSTR(XX,10)
S XX=VADATA("RTAS"),VAOUT(5)=VAOUT(5)_"Receiver TAS: "_$$LJ^XLFSTR(XX,"29T")
S XX=VADATA("STAS"),VAOUT(6)=$$LJ^XLFSTR("",24," ")_" Sender TAS: "_$$LJ^XLFSTR(XX,"29T")
S XX=VADATA("ASN"),VAOUT(7)="Agency Field Station #: "_$$LJ^XLFSTR(XX,"10T")
S XX=VADATA("OB"),VAOUT(7)=VAOUT(7)_"Obligating Document #: "_$$LJ^XLFSTR(XX,"19T")
S VAOUT(8)="Station Contact: "
S XX=VADATA("CON"),VAOUT(9)=" Name: "_$$LJ^XLFSTR(XX,62)
S XX=VADATA("CONPHN"),VAOUT(10)=" Phone: "_$$LJ^XLFSTR(XX,"17T")
S XX=VADATA("CONEM"),VAOUT(10)=VAOUT(10)_" Email: "_$$LJ^XLFSTR(XX,"40T") ; 1st 40 chars or email
S VAOUT(11)=$S($L(XX)'>40:"",1:" "_$E(XX,41,$L(XX))) ; Remaining chars of email
S VAOUT(12)="Complete Line of Accounting: "
S XX=VADATA("LOA"),VAOUT(13)=" "_$$LJ^XLFSTR(XX,62)
S VAOUT(14)="Description of Goods & Services: "
S XX=VADATA("GOOD"),VAOUT(15)=" "_$$LJ^XLFSTR(XX,"70T")
S VAOUT(16)=$S($L(XX)'>70:"",1:" "_$E(XX,71,140)) ; Next 70 chars
S VAOUT(17)=$S($L(XX)'>140:"",1:" "_$E(XX,141,$L(XX))) ; Remaining chars
S VAOUT(18)="Miscellaneous Info: "
S XX=VADATA("MISC1"),VAOUT(19)="1) "_$$LJ^XLFSTR(XX,"75T")
S VAOUT(20)=$S($L(XX)'>75:"",1:" "_$E(XX,76,150)) ; Next 75 chars
S VAOUT(21)=$S($L(XX)'>150:"",1:" "_$E(XX,151,$L(XX))) ; Remaining chars
S XX=VADATA("MISC2"),VAOUT(22)="2) "_$$LJ^XLFSTR(XX,"75T")
S VAOUT(23)=$S($L(XX)'>75:"",1:" "_$E(XX,76,$L(XX))) ; Remaining chars
Q:'TOSCREEN
;
S LN=""
F D Q:LN=""
. S LN=$O(VAOUT(LN))
. Q:LN=""
. I VAOUT(LN)="***" W ! Q
. W:$TR(VAOUT(LN)," ","")'="" !,VAOUT(LN)
K VAOUT
Q
;
VALOAD(VAIEN,VADATA) ;EP
; Returns an array of external field values for a specified Vendor Agreement
; Input: VAIEN - Vendor Agreement IEN
; Output: VADATA("ASN") - Agency Field Station Number
; VADATA("CALC") - Customer ALC
; VADATA("CON") - Station Contact Name
; VADATA("CONEM") - Station Contact Email
; VADATA("CONPHN")- Station Contact Phone
; VADATA("DESC") - Vendor Agreement Description
; VADATA("FY") - Fiscal Year
; VADATA("GOOD") - Description of Goods and Services
; VADATA("ID") - Vendor Agreement ID
; VADATA("LOA") - Complete line of Accounting
; VADATA("OB") - Obligating document number
; VADATA("MISC1") - Miscellaneous Info 1
; VADATA("MISC2") - Miscellaneous Info 2
; VADATA("RTAS") - Receiver TAS
; VADATA("SHAN") - Sharing Agreement Number
; VADATA("STAS") - Sender TAS
; VADATA("STAT") - Vendor Agreement Status
; VADATA("VENDOR")- External Vendor name
;
;
N IPAC
D GETS^DIQ(161.95,VAIEN_",","**","E","IPAC")
S VADATA("ID")=IPAC(161.95,VAIEN_",",".01","E")
;
S VADATA("VENDOR")=IPAC(161.95,VAIEN_",",1,"E")
S VADATA("FY")=IPAC(161.95,VAIEN_",",2,"E")
S VADATA("STAT")=IPAC(161.95,VAIEN_",",3,"E")
S VADATA("DESC")=IPAC(161.95,VAIEN_",",4,"E")
S VADATA("SHAN")=IPAC(161.95,VAIEN_",",5,"E")
S VADATA("CALC")=IPAC(161.95,VAIEN_",",6,"E")
S VADATA("RTAS")=IPAC(161.95,VAIEN_",",7,"E")
S VADATA("STAS")=IPAC(161.95,VAIEN_",",7.5,"E")
S VADATA("ASN")=IPAC(161.95,VAIEN_",",8,"E")
S VADATA("OB")=IPAC(161.95,VAIEN_",",9,"E")
S VADATA("CON")=IPAC(161.95,VAIEN_",",10,"E")
S VADATA("CONPHN")=IPAC(161.95,VAIEN_",",11,"E")
S VADATA("CONEM")=IPAC(161.95,VAIEN_",",12,"E")
S VADATA("LOA")=IPAC(161.95,VAIEN_",",13,"E")
S VADATA("GOOD")=IPAC(161.95,VAIEN_",",14,"E")
S VADATA("MISC1")=IPAC(161.95,VAIEN_",",15,"E")
S VADATA("MISC2")=IPAC(161.95,VAIEN_",",16,"E")
Q
;
LOCKVA(VAIEN,DMSG) ;EP
; Attempt to lock IPAC Vendor Agreement
; Input: VAIEN - IPAC Vendor Agreement to be locked
; DMSG - 1 - Display locked message
; 0 - Don't display locked message
; Optional, defaults to 1
; Returns: 1 - IPAC Vendor Agreement locked, 0 otherwise
;
S:'$D(DMSG) DMSG=1
L +^FBAA(161.95,VAIEN):0
I '$T D Q 0
. W:DMSG !!,"Somebody is already editing this agreement. Try again later."
. H 1
Q 1
;
UNLOCKVA(VAIEN) ;EP
; Unlock the IPAC Vendor Agreement
; Input: VAIEN - Vendor Agreement to be locked
; Output: IPAC Vendor Agreement is unlocked
L -^FBAA(161.95,VAIEN)
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HFBAAIAU 16577 printed Dec 13, 2024@01:55:41 Page 2
FBAAIAU ;ALB/FA - BUILD C8 MESSAGE ;03 Dec 2013 9:34 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 ; Contains utility functions for IPAC Vendor Agreement Management
+5 ;
+6 ;-----------------------------------------------------------------------------
+7 ; Methods
+8 ; CHKREQ - Makes sure that all the required fields of the IPAC Vendor
+9 ; agreement have values and if they do, changes the status of
+10 ; the agreement to 'A'
+11 ; DELALL - Delete all Vendor Agreements (161.95) and MRAs (161.96)
+12 ; LOCKVA - Attempts to lock a specified IPAC Vendor Agreement
+13 ; SELMRA - Displays a list of all the current MRA records and allows the
+14 ; user to select one
+15 ; SELVA - Displays a list of all the current IPAC Vendor Agreements and
+16 ; allows the user to either select one to be edited or type 'NEW'
+17 ; to enter a new one
+18 ; VADISP - Returns the IPAC Vendor Agreement Display Layout for a
+19 ; specified vendor agreement
+20 ; VALOAD - Returns an array of external field values for a specified
+21 ; Vendor Agreement
+22 ; UNLOCKVA - Unlocks a specified IPAC Vendor Agreement
+23 ;-----------------------------------------------------------------------------
+24 ;
CHKREQ(VAIEN) ;EP
+1 ; Checks to see if all of the required fields of the IPAC vendor agreement have
+2 ; been entered and if so, change the status of the agreement to 'A'
+3 ; Input: VAIEN - IEN of the IPAC Vendor agreement to be checked
+4 ; Called From: FBAAIAE, FBAAIAC
+5 ; NOTE: Quits if the current status of the agreement is not 'N' without
+6 ; doing anything. Also, the fields of the Vendor agreement are
+7 ; HARD CODED in this method - if a new required field is added this
+8 ; method must be modified
+9 NEW ARR,ERR,DA,DIE,DR,DTOUT,FLD,FLDINFO,NDE,PCE,STOP
+10 ; Invalid IPAC agreement IEN
if '$DATA(^FBAA(161.95,VAIEN,0))
QUIT
+11 ; Status isn't 'N'
if $PIECE(^FBAA(161.95,VAIEN,0),U,4)'="N"
QUIT
+12 ;
+13 ; First get a list of all the required fields
+14 ; NOTE: HARD CODED field list
FOR FLD=1:1:16,7.5
Begin DoDot:1
+15 DO FIELD^DID(161.95,FLD,,"GLOBAL SUBSCRIPT LOCATION;SPECIFIER","ARR","ERR")
+16 ; Not a required field
if $EXTRACT(ARR("SPECIFIER"),1)'="R"
QUIT
+17 ; Node;Piece
SET FLDINFO(FLD)=ARR("GLOBAL SUBSCRIPT LOCATION")
End DoDot:1
+18 ;
+19 ; Now loop Through all of the required fields and check for data
+20 SET FLD=0
SET STOP=0
+21 FOR
Begin DoDot:1
+22 SET FLD=$ORDER(FLDINFO(FLD))
+23 if FLD=""
QUIT
+24 SET NDE=$PIECE(FLDINFO(FLD),";",1)
SET PCE=$PIECE(FLDINFO(FLD),";",2)
+25 ; Missing required field
if $PIECE($GET(^FBAA(161.95,VAIEN,NDE)),U,PCE)=""
SET STOP=1
End DoDot:1
if FLD=""
QUIT
if STOP
QUIT
+26 if STOP
QUIT
+27 ;
+28 SET DIE=161.95
SET DA=VAIEN
+29 SET DR="3////A"
+30 DO ^DIE
+31 QUIT
+32 ;
DELALL ;EP
+1 ; Clean-up utility to delete all existing Vendor agreements and MRA records
+2 ; Input: None
+3 ; Output: ^FBAA(161.95) AND ^FBAA(161.96) are cleared
+4 NEW DA,DIE,DIK,DR,DTOUT
+5 SET DIK="^FBAA(161.95,"
+6 SET DA=0
+7 FOR
Begin DoDot:1
+8 SET DA=$ORDER(^FBAA(161.95,DA))
+9 if DA=""
QUIT
+10 DO ^DIK
End DoDot:1
if DA=""
QUIT
+11 ;
+12 SET DIK="^FBAA(161.96,"
+13 SET DA=0
+14 FOR
Begin DoDot:1
+15 SET DA=$ORDER(^FBAA(161.96,DA))
+16 if DA=""
QUIT
+17 DO ^DIK
End DoDot:1
if DA=""
QUIT
+18 ;
+19 ; Reset the Last IPAC number
+20 SET DIE=161.4
SET DA=1
SET DR="80///100"
+21 ; File the new last number
DO ^DIE
+22 QUIT
+23 ;
SELVA(FLINE,STEXT,NEW,SVENIEN) ;EP
+1 ; Displays all of the currently filed IPAC Vendor agreements and allows the user
+2 ; to select one to edit or type 'NEW' to enter a new one
+3 ; Input: FLINE - Text of the first line to be displayed
+4 ; STEXT - User Selection prompt to be displayed
+5 ; NOTE: "" is allowed here. If null, this becomes a
+6 ; display only method with no ability select a Vendor
+7 ; OR to type NEW to enter a new one
+8 ; NEW - 1 to allow NEW as a valid selection, 0 otherwise
+9 ; SVENIEN - IEN of a specified vendor
+10 ; Optional, if specified, only IPAC agreements for the
+11 ; specified vendor will be displayed
+12 ; Output: Current IPAC Vendor agreements displayed to the screen, if there are none,
+13 ; a message is displayed
+14 ; Returns: VAIEN - IEN of the selected IPAC Agreement
+15 ; 0 - User wants/needs to enter a new agreement
+16 ; "" - No IPAC Vendor Agreement was selected
+17 NEW CNT,LN,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IX,OUT,VADATA,VAIEN,VENIEN,X,XX,Y
+18 if '$DATA(SVENIEN)
SET SVENIEN=""
+19 ;
+20 ; First create and array of all current IPAC Vendor Agreement data to display
+21 SET CNT=0
SET VAIEN=0
+22 FOR
Begin DoDot:1
+23 SET VAIEN=$ORDER(^FBAA(161.95,VAIEN))
+24 if +VAIEN=0
QUIT
+25 ; Vendor IEN
SET VENIEN=$PIECE(^FBAA(161.95,VAIEN,0),U,2)
+26 ; Not the selected Vendor
if (SVENIEN'="")&(SVENIEN'=VENIEN)
QUIT
+27 SET CNT=CNT+1
+28 ; Selection #
SET XX=$$LJ^XLFSTR(CNT,3)
+29 ; ID
SET XX=XX_$$LJ^XLFSTR($PIECE(^FBAA(161.95,VAIEN,0),U,1),11)
+30 ; Fiscal Year
SET XX=XX_$$LJ^XLFSTR($PIECE(^FBAA(161.95,VAIEN,0),U,3),5)
+31 ; Vendor Name
SET XX=XX_$$LJ^XLFSTR($$GET1^DIQ(161.2,VENIEN_",",.01),"29T")
+32 SET XX=XX_" "
+33 ; Status
SET XX=XX_$PIECE(^FBAA(161.95,VAIEN,0),U,4)_" "
+34 ; Description
SET XX=XX_$$LJ^XLFSTR($PIECE(^FBAA(161.95,VAIEN,0),U,5),"26T")
+35 SET VADATA(CNT)=VAIEN_U_XX
End DoDot:1
if +VAIEN=0
QUIT
+36 ;
+37 IF 'CNT
Begin DoDot:1
+38 SET OUT=""
+39 if STEXT=""
QUIT
+40 WRITE !!,"No IPAC Agreements are currently on file."
+41 if 'NEW
HANG 1
+42 if 'NEW
QUIT
+43 SET DIR("A")="Enter a new agreement"
+44 SET DIR(0)="Y"
+45 DO ^DIR
+46 if +Y=1
SET OUT=0
End DoDot:1
QUIT OUT
+47 ;
+48 ; Next display all of the current IPAC Vendor Agreements
+49 SET DIR(0)="FO"
SET LN=0
+50 if NEW
SET DIR("B")="NEW"
+51 SET LN=LN+1
SET DIR("A",LN)=FLINE
+52 SET LN=LN+1
SET DIR("A",LN)=" "
+53 SET LN=LN+1
SET DIR("A",LN)="# ID FY Vendor S Description"
+54 SET LN=LN+1
SET DIR("A",LN)="-- ---------- ---- ------------------------------ - -------------------------"
+55 SET IX=""
+56 FOR
Begin DoDot:1
+57 SET IX=$ORDER(VADATA(IX))
+58 if IX=""
QUIT
+59 SET LN=LN+1
SET DIR("A",LN)=$PIECE(VADATA(IX),U,2)
End DoDot:1
if IX=""
QUIT
+60 ; Just display, no selection
IF STEXT=""
Begin DoDot:1
+61 WRITE !!
+62 SET LN=""
+63 FOR
Begin DoDot:2
+64 SET LN=$ORDER(DIR("A",LN))
+65 if LN=""
QUIT
+66 WRITE !,DIR("A",LN)
End DoDot:2
if LN=""
QUIT
End DoDot:1
QUIT ""
+67 SET LN=LN+1
SET DIR("A",LN)=" "
+68 SET LN=LN+1
SET DIR("A",LN)=STEXT
+69 SET DIR("A")="Selection #"
SELVA1 ; Looping tag
+1 WRITE !!
+2 KILL X,Y
+3 DO ^DIR
+4 ; User timed out or pressed ^
IF $DATA(DTOUT)!$DATA(DUOUT)
QUIT ""
+5 SET XX=$$UP^XLFSTR(Y)
+6 ; Creating a new one
IF NEW
if (XX="NEW")!(XX="N")!(XX="NE")!(XX="")
QUIT 0
+7 ; User quitting
IF 'NEW
if XX=""
QUIT ""
+8 ; Selected IEN
IF XX>0
IF XX'>CNT
IF XX?.N
QUIT $PIECE(VADATA(XX),U,1)
+9 ;
+10 WRITE !!,*7,"Enter a number from 1-"_CNT
+11 if NEW
WRITE " or Type 'NEW'"
+12 HANG 1
+13 GOTO SELVA1
+14 ;
SELMRA(FLINE,STEXT,STATUS,ACTION) ;EP
+1 ; Displays all of the currently filed MRA records with a status of 'T' and
+2 ; allows the user to select one
+3 ; Input: FLINE - Text of the first line to be displayed
+4 ; STEXT - User Selection prompt to be displayed
+5 ; STATUS - 'P' - Display pending MRA Records
+6 ; 'T' - Display transmitted MRA records
+7 ; '' - Display both pending and transmitted records
+8 ; ACTION - 'A' - Display Add MRA records
+9 ; 'C' - Display Change MRA records
+10 ; 'D' - Display Deleted MRA records
+11 ; '' - Display MRA records with any type of action
+12 ; Output: MRA Records that match the specified criteria are displayed to the screen.
+13 ; If there are none, a message is displayed
+14 ; Returns: MRAIEN - IEN of the selected MRA Record
+15 ; "" - No MRA record was selected
+16 NEW CNT,LN,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IX,MRAACT,MRADATA,MRAIEN,MRASTAT
+17 NEW OUT,TDT,VAIEN,VENIEN,X,XX,Y,ZZ
+18 ;
+19 ; First create and array of all current MRA records that match the selection criteria
+20 SET CNT=0
SET MRAIEN=0
+21 FOR
Begin DoDot:1
+22 SET MRAIEN=$ORDER(^FBAA(161.96,MRAIEN))
+23 if +MRAIEN=0
QUIT
+24 SET ZZ=^FBAA(161.96,MRAIEN,0)
+25 ; Action of the MRA Record
SET MRAACT=$PIECE(ZZ,U,4)
+26 ; Status of the MRA Record
SET MRASTAT=$PIECE(ZZ,U,5)
+27 ; Not the specified status
IF STATUS'=""
IF STATUS'=MRASTAT
QUIT
+28 ; Not the specified action
IF ACTION'=""
IF ACTION'=MRAACT
QUIT
+29 SET CNT=CNT+1
+30 ; Selection #
SET XX=$$LJ^XLFSTR(CNT,3)
+31 ; IPAC Agreement ID
SET XX=XX_$$LJ^XLFSTR($PIECE(ZZ,U,3),11)
+32 ; Status
SET XX=XX_$$LJ^XLFSTR(MRASTAT,2)
+33 ; Action
SET XX=XX_$$LJ^XLFSTR(MRAACT,2)
+34 ; Transmit Date
IF (STATUS="")!(STATUS="T")
Begin DoDot:2
+35 SET TDT=$PIECE(ZZ,U,6)
+36 ; Converted to external
if TDT'=""
SET TDT=$$FMTE^XLFDT(TDT,2)
+37 SET XX=XX_$$LJ^XLFSTR(TDT,9)
End DoDot:2
+38 ;
+39 ; Only displaying MRA records with an action of DELETE - no more columns to display
+40 IF ACTION="D"
SET MRADATA(CNT)=MRAIEN_U_XX
QUIT
+41 ; IPAC Agreement IEN
SET VAIEN=$PIECE(ZZ,U,2)
+42 ; Vendor IEN
SET VENIEN=$PIECE($GET(^FBAA(161.95,VAIEN,0)),U,2)
+43 ; Vendor Name
SET XX=XX_$$LJ^XLFSTR($$GET1^DIQ(161.2,VENIEN_",",.01),"30T")_" "
+44 ; Description
SET XX=XX_$$LJ^XLFSTR($PIECE(^FBAA(161.95,VAIEN,0),U,5),"23T")
+45 SET MRADATA(CNT)=MRAIEN_U_XX
End DoDot:1
if +MRAIEN=0
QUIT
+46 ;
+47 IF 'CNT
Begin DoDot:1
+48 SET OUT=""
+49 if STEXT=""
QUIT
+50 WRITE !!,"No MRA records that match the specified criteria are currently on file."
End DoDot:1
QUIT OUT
+51 ;
+52 ; Next display all of the found MRA Records
+53 SET DIR(0)="FO"
SET LN=0
+54 SET LN=LN+1
SET DIR("A",LN)=FLINE
+55 SET LN=LN+1
SET DIR("A",LN)=" "
+56 SET LN=LN+1
SET DIR("A",LN)="# ID A "
+57 IF (STATUS="")!(STATUS="T")
Begin DoDot:1
+58 SET DIR("A",LN)=DIR("A",LN)_"S Trans Dt "
End DoDot:1
+59 IF (ACTION'="D")
Begin DoDot:1
+60 SET DIR("A",LN)=DIR("A",LN)_"Vendor Description"
End DoDot:1
+61 SET LN=LN+1
SET DIR("A",LN)="-- ---------- - "
+62 IF (STATUS="")!(STATUS="T")
Begin DoDot:1
+63 SET DIR("A",LN)=DIR("A",LN)_"- -------- "
End DoDot:1
+64 IF (ACTION'="D")
Begin DoDot:1
+65 SET DIR("A",LN)=DIR("A",LN)_"------------------------------ ----------------------"
End DoDot:1
+66 SET IX=""
+67 FOR
Begin DoDot:1
+68 SET IX=$ORDER(MRADATA(IX))
+69 if IX=""
QUIT
+70 SET LN=LN+1
SET DIR("A",LN)=$PIECE(MRADATA(IX),U,2)
End DoDot:1
if IX=""
QUIT
+71 SET LN=LN+1
SET DIR("A",LN)=" "
+72 SET LN=LN+1
SET DIR("A",LN)=STEXT
+73 SET DIR("A")="Selection #"
SELMRA1 ; Looping tag
+1 WRITE !!
+2 KILL X,Y
+3 DO ^DIR
+4 ; User timed out or pressed ^
IF $DATA(DTOUT)!$DATA(DUOUT)
QUIT ""
+5 SET XX=$$UP^XLFSTR(Y)
+6 ; User quitting
if XX=""
QUIT ""
+7 ; Selected IEN
IF XX>0
IF XX'>CNT
IF XX?.N
QUIT $PIECE(MRADATA(XX),U,1)
+8 ;
+9 WRITE !!,*7,"Enter a number from 1-"_CNT
+10 HANG 1
+11 GOTO SELMRA1
+12 ;
VADISP(VAIEN,TOSCREEN,VAOUT) ;EP
+1 ; Returns the IPAC Vendor Agreement Display Layout for a specified vendor
+2 ; agreement
+3 ; Input: VAIEN - Vendor Agreement IEN to build display layout for
+4 ; TOSCREEN - 1 - Display the Vendor Agreement to the screen, don't return VAOUT
+5 ; 0 - Don't display it, return array VAOUT instead
+6 ; Output: VAOUT - Array of IPAC Vendor Agreement Display Layout lines
+7 ; Only returned if TOSCREEN=0
+8 ;
+9 NEW LN,VADATA,XX
+10 KILL VAOUT
+11 ; Invalid Vendor Agreement
+12 if '$DATA(^FBAA(161.95,VAIEN))
QUIT
+13 ;
+14 DO VALOAD(VAIEN,.VADATA)
+15 SET XX=VADATA("ID")
SET VAOUT(1)="IPAC Vendor Agreement ID: "_$$LJ^XLFSTR(XX,12)
+16 SET XX=VADATA("STAT")
SET VAOUT(1)=VAOUT(1)_"Status: "_$$LJ^XLFSTR(XX,10)
+17 SET XX=VADATA("FY")
SET VAOUT(1)=VAOUT(1)_"FY: "_$$LJ^XLFSTR(XX,1,6)
+18 SET XX=VADATA("VENDOR")
SET VAOUT(2)="Vendor: "_$$LJ^XLFSTR(XX,48)
+19 SET XX=VADATA("DESC")
SET VAOUT(3)=" Desc: "_$$LJ^XLFSTR(XX,62)
+20 SET XX=VADATA("SHAN")
SET VAOUT(4)=" Sharing Agreement #: "_$$LJ^XLFSTR(XX,"15T")
+21 SET XX=VADATA("CALC")
SET VAOUT(5)="Customer ALC: "_$$LJ^XLFSTR(XX,10)
+22 SET XX=VADATA("RTAS")
SET VAOUT(5)=VAOUT(5)_"Receiver TAS: "_$$LJ^XLFSTR(XX,"29T")
+23 SET XX=VADATA("STAS")
SET VAOUT(6)=$$LJ^XLFSTR("",24," ")_" Sender TAS: "_$$LJ^XLFSTR(XX,"29T")
+24 SET XX=VADATA("ASN")
SET VAOUT(7)="Agency Field Station #: "_$$LJ^XLFSTR(XX,"10T")
+25 SET XX=VADATA("OB")
SET VAOUT(7)=VAOUT(7)_"Obligating Document #: "_$$LJ^XLFSTR(XX,"19T")
+26 SET VAOUT(8)="Station Contact: "
+27 SET XX=VADATA("CON")
SET VAOUT(9)=" Name: "_$$LJ^XLFSTR(XX,62)
+28 SET XX=VADATA("CONPHN")
SET VAOUT(10)=" Phone: "_$$LJ^XLFSTR(XX,"17T")
+29 ; 1st 40 chars or email
SET XX=VADATA("CONEM")
SET VAOUT(10)=VAOUT(10)_" Email: "_$$LJ^XLFSTR(XX,"40T")
+30 ; Remaining chars of email
SET VAOUT(11)=$SELECT($LENGTH(XX)'>40:"",1:" "_$EXTRACT(XX,41,$LENGTH(XX)))
+31 SET VAOUT(12)="Complete Line of Accounting: "
+32 SET XX=VADATA("LOA")
SET VAOUT(13)=" "_$$LJ^XLFSTR(XX,62)
+33 SET VAOUT(14)="Description of Goods & Services: "
+34 SET XX=VADATA("GOOD")
SET VAOUT(15)=" "_$$LJ^XLFSTR(XX,"70T")
+35 ; Next 70 chars
SET VAOUT(16)=$SELECT($LENGTH(XX)'>70:"",1:" "_$EXTRACT(XX,71,140))
+36 ; Remaining chars
SET VAOUT(17)=$SELECT($LENGTH(XX)'>140:"",1:" "_$EXTRACT(XX,141,$LENGTH(XX)))
+37 SET VAOUT(18)="Miscellaneous Info: "
+38 SET XX=VADATA("MISC1")
SET VAOUT(19)="1) "_$$LJ^XLFSTR(XX,"75T")
+39 ; Next 75 chars
SET VAOUT(20)=$SELECT($LENGTH(XX)'>75:"",1:" "_$EXTRACT(XX,76,150))
+40 ; Remaining chars
SET VAOUT(21)=$SELECT($LENGTH(XX)'>150:"",1:" "_$EXTRACT(XX,151,$LENGTH(XX)))
+41 SET XX=VADATA("MISC2")
SET VAOUT(22)="2) "_$$LJ^XLFSTR(XX,"75T")
+42 ; Remaining chars
SET VAOUT(23)=$SELECT($LENGTH(XX)'>75:"",1:" "_$EXTRACT(XX,76,$LENGTH(XX)))
+43 if 'TOSCREEN
QUIT
+44 ;
+45 SET LN=""
+46 FOR
Begin DoDot:1
+47 SET LN=$ORDER(VAOUT(LN))
+48 if LN=""
QUIT
+49 IF VAOUT(LN)="***"
WRITE !
QUIT
+50 if $TRANSLATE(VAOUT(LN)," ","")'=""
WRITE !,VAOUT(LN)
End DoDot:1
if LN=""
QUIT
+51 KILL VAOUT
+52 QUIT
+53 ;
VALOAD(VAIEN,VADATA) ;EP
+1 ; Returns an array of external field values for a specified Vendor Agreement
+2 ; Input: VAIEN - Vendor Agreement IEN
+3 ; Output: VADATA("ASN") - Agency Field Station Number
+4 ; VADATA("CALC") - Customer ALC
+5 ; VADATA("CON") - Station Contact Name
+6 ; VADATA("CONEM") - Station Contact Email
+7 ; VADATA("CONPHN")- Station Contact Phone
+8 ; VADATA("DESC") - Vendor Agreement Description
+9 ; VADATA("FY") - Fiscal Year
+10 ; VADATA("GOOD") - Description of Goods and Services
+11 ; VADATA("ID") - Vendor Agreement ID
+12 ; VADATA("LOA") - Complete line of Accounting
+13 ; VADATA("OB") - Obligating document number
+14 ; VADATA("MISC1") - Miscellaneous Info 1
+15 ; VADATA("MISC2") - Miscellaneous Info 2
+16 ; VADATA("RTAS") - Receiver TAS
+17 ; VADATA("SHAN") - Sharing Agreement Number
+18 ; VADATA("STAS") - Sender TAS
+19 ; VADATA("STAT") - Vendor Agreement Status
+20 ; VADATA("VENDOR")- External Vendor name
+21 ;
+22 ;
+23 NEW IPAC
+24 DO GETS^DIQ(161.95,VAIEN_",","**","E","IPAC")
+25 SET VADATA("ID")=IPAC(161.95,VAIEN_",",".01","E")
+26 ;
+27 SET VADATA("VENDOR")=IPAC(161.95,VAIEN_",",1,"E")
+28 SET VADATA("FY")=IPAC(161.95,VAIEN_",",2,"E")
+29 SET VADATA("STAT")=IPAC(161.95,VAIEN_",",3,"E")
+30 SET VADATA("DESC")=IPAC(161.95,VAIEN_",",4,"E")
+31 SET VADATA("SHAN")=IPAC(161.95,VAIEN_",",5,"E")
+32 SET VADATA("CALC")=IPAC(161.95,VAIEN_",",6,"E")
+33 SET VADATA("RTAS")=IPAC(161.95,VAIEN_",",7,"E")
+34 SET VADATA("STAS")=IPAC(161.95,VAIEN_",",7.5,"E")
+35 SET VADATA("ASN")=IPAC(161.95,VAIEN_",",8,"E")
+36 SET VADATA("OB")=IPAC(161.95,VAIEN_",",9,"E")
+37 SET VADATA("CON")=IPAC(161.95,VAIEN_",",10,"E")
+38 SET VADATA("CONPHN")=IPAC(161.95,VAIEN_",",11,"E")
+39 SET VADATA("CONEM")=IPAC(161.95,VAIEN_",",12,"E")
+40 SET VADATA("LOA")=IPAC(161.95,VAIEN_",",13,"E")
+41 SET VADATA("GOOD")=IPAC(161.95,VAIEN_",",14,"E")
+42 SET VADATA("MISC1")=IPAC(161.95,VAIEN_",",15,"E")
+43 SET VADATA("MISC2")=IPAC(161.95,VAIEN_",",16,"E")
+44 QUIT
+45 ;
LOCKVA(VAIEN,DMSG) ;EP
+1 ; Attempt to lock IPAC Vendor Agreement
+2 ; Input: VAIEN - IPAC Vendor Agreement to be locked
+3 ; DMSG - 1 - Display locked message
+4 ; 0 - Don't display locked message
+5 ; Optional, defaults to 1
+6 ; Returns: 1 - IPAC Vendor Agreement locked, 0 otherwise
+7 ;
+8 if '$DATA(DMSG)
SET DMSG=1
+9 LOCK +^FBAA(161.95,VAIEN):0
+10 IF '$TEST
Begin DoDot:1
+11 if DMSG
WRITE !!,"Somebody is already editing this agreement. Try again later."
+12 HANG 1
End DoDot:1
QUIT 0
+13 QUIT 1
+14 ;
UNLOCKVA(VAIEN) ;EP
+1 ; Unlock the IPAC Vendor Agreement
+2 ; Input: VAIEN - Vendor Agreement to be locked
+3 ; Output: IPAC Vendor Agreement is unlocked
+4 LOCK -^FBAA(161.95,VAIEN)
+5 QUIT
+6 ;