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

ACRFUFMZ.m

Go to the documentation of this file.
  1. ACRFUFMZ ;IHS/OIRM/DSD/AEF - MATCH OPEN DOCUMENTS FROM CORE FOR UFMS [ 05/16/2007 9:44 AM ]
  1. ;;2.1;ADMIN RESOURCE MGMT SYSTEM;**22**;NOV 05, 2001
  1. ;NEW ROUTINE ACR*2.1*22 UFMS
  1. ;
  1. ; File ^ACRZ("ACRCORE",##) is created by READ^ACRFUFMR
  1. ; by reading the flat file provided by CORE.
  1. ; File name is Docs##.txt where ## is the Accounting Point.
  1. ; Comma delimiters were stripped and replaced by the ARMS
  1. ; up-arrow (^) delimiter, which is used throughout.
  1. ;
  1. ; ^ACRZ("ACRCORE",##)=
  1. ; Piece 1: AP = Accounting Point
  1. ; 2: doc_type = CORE Document Type (see below)
  1. ; 3: doc_no = CORE Document number
  1. ; 4: fy = 4-digit Fiscal Year
  1. ; 5: can = Common Accounting Number (CAN)
  1. ; 6: obj_cls = Object Class Code (OCC)
  1. ; 7: amt = Dollar Amount
  1. ; 8: ref = Reference Code
  1. ; 9: ein = CORE Vendor EIN
  1. ;
  1. ; CORE DOC_TYPE =
  1. ; AP - Requisition/Purchase Order/Contracts
  1. ; AT - Airline
  1. ; GP - Government Payment
  1. ; GR - Grants (Non-PMS)
  1. ; PM - Grants (PMS)
  1. ; PR - Payroll
  1. ; TN - Training
  1. ; TR - Travel
  1. ; MO - Mixed obligations
  1. ; MD - Miscellaneous documents
  1. ;
  1. ; ****************************************
  1. ; ****************************************
  1. ; This routine loops through the ^ACRZ("ACRCORE" entries and
  1. ; attempts to match the CORE document number with ARMS
  1. ; documents in the FMS Document, FMS Document History Record and
  1. ; the 1166 Approvals for Payment files.
  1. ;
  1. ; When it finds a document hit, the routine matches the CAN,
  1. ; Fiscal Year, and Object Class Code supplied by CORE.
  1. ;
  1. ; When it finds a match the routine:
  1. ; 1) sets the error variable ACRERR to null
  1. ; 2) sets ^ACRZ("ACRDOC",CORE Index number) = DOCUMENT String
  1. ; Piece 1 = Accounting Point_-_Vendor IEN
  1. ; 2 = ASUFAC number_-_Vendor IEN
  1. ; 3 = Vendor name
  1. ; 4 = Vendor EIN
  1. ; 5 = Vendor suffix
  1. ; 6 = ARMS Requisition number or blank
  1. ; 7 = Document or Transaction dates
  1. ; 8 = Identifier, Invoice number or blank
  1. ; 9 = Accounting point (begins CORE data string)
  1. ; 10 = CORE Document Type
  1. ; 11 = CORE Document number
  1. ; 12 = 4 digit Fiscal Year
  1. ; 13 = Common Accounting Number (CAN)
  1. ; 14 = Object Class Code (OCC)
  1. ; 15 = CORE Dollar amount
  1. ; 16 = CORE Reference code
  1. ; 17 = Receiving Report Status
  1. ; 18 = Invoice Status
  1. ; 19 = Vendor Error flag
  1. ; 3) retreives the Vendor IEN from ARMS record (can be zero if no Vendor)
  1. ; 4) if no Vendor in the FMS Document file, sets
  1. ; ^ACRZ("NOVNDR",Core Index number) = DOCUMENT_CORE strings
  1. ; As Travel documents will not have a vendor they are captured
  1. ; in the ^ACRZ("TR",Core Index number)= DOCUMENT_CORE strings regardless
  1. ; of whether or not they are matched in ARMS
  1. ; Other entries will be obligations only
  1. ; 5) checks the entry in the VENDOR file for errors
  1. ; if an error is found, ACRERR = Error string
  1. ; errors are set in ^ACRZ("ERR",CORE Index number) = DOCUMENT_CORE_ACRERR
  1. ; 6) sets ^ACRZ("VNDR",Vendor IEN) =DOCUMENT_CORE_ACRERR
  1. ; ACRERR can = "NO ERRORS" or Vendor file errors
  1. ; 7) in addition, sets non-ARMS documents and certain subsets into:
  1. ; a. ^ACRZ("PAY",CORE Index number)= CORE string (Non-ARMS Payroll)
  1. ; b. ^ACRZ("CHS",CORE Index number)= CORE string (Non-ARMS Contract Health)
  1. ; c. ^ACRZ("GR",CORE Index number)= CORE string (Non-ARMS Grants)
  1. ; d. ^ACRZ("GTRIP",CORE Index number)= CORE string (Non-ARMS GovTrip Travel)
  1. ; e. ^ACRZ("ITEMS",CORE Index number)= CORE string (ARMS Items in matched documents)
  1. ; f. ^ACRZ("NOMATCH",CORE Index number)= CORE string (ARMS Hit, no precise match)
  1. ; g. ^ACRZ("TR",CORE Index number)= CORE string (All Old ARMS Travel match)
  1. ; h. ^ACRZ("TOTALS",CORE Index number)= CORE string (Totals of all reports)
  1. ; i. ^ACRZ("CEIN",CORE Index number)= CORE string (CORE/ARMS Vendor mismatches)
  1. ; j. ^ACRZ("NOHIT",CORE Index number)= CORE string (No known category)
  1. ; *********************************
  1. ; *********************************
  1. EN ;EP; MAIN ENTRY POINT -- CALLED BY READ^ACRFUFMR THROUGH TASKMAN
  1. D INIT
  1. D LOOP
  1. D TOTAL
  1. D ENW^ACRFUFMR ;CREATE REPORTS IN CSV FORMAT
  1. Q
  1. ; *********************************
  1. ; *********************************
  1. INIT ;SET UP GLOBALS
  1. K ^ACRZ("ACRDOC")
  1. K ^ACRZ("VNDR")
  1. K ^ACRZ("ERR")
  1. K ^ACRZ("NOVNDR")
  1. K ^ACRZ("NOHIT")
  1. K ^ACRZ("NOMATCH")
  1. K ^ACRZ("PAY")
  1. K ^ACRZ("TOTALS")
  1. K ^ACRZ("ITEMS")
  1. K ^ACRZ("GTRIP")
  1. K ^ACRZ("CHS")
  1. K ^ACRZ("TR")
  1. K ^ACRZ("GR")
  1. K ^ACRZ("CEIN") ;AUDIT FOR MISMATCHED EIN'S
  1. ;INITIALIZE VARIABLES
  1. K ACR,ACRDCNT,ACRVCNT,ACRECNT,ACRERR,ACRTCNT,ACRZCNT,ACRMCNT,ACRAP,ACRPCNT
  1. K ACRGTRIP,ACRGTOT,ACRCHST,ACRTRTOT,ACRTAIL,ACRNTRT,ACRGRTOT
  1. K ACRCEIN,ACRAMT,ACRHIT,ACRCORE
  1. S (ACR,ACRDCNT,ACRVCNT,ACRECNT,ACRERR,ACRTCNT,ACRZCNT,ACRMCNT,ACRPCNT)=0
  1. S (ACRGTOT,ACRCHST,ACRTRTOT,ACRGRTOT,ACRAMT)=0
  1. S ASUFAC=$$ASUFAC^ACRFFF4(+$P(^AUTTSITE(1,0),U))
  1. Q
  1. ; *********************************
  1. ; *********************************
  1. LOOP ;LOOP THROUGH CORE OPEN DOCUMENTS
  1. F S ACR=$O(^ACRZ("ACRCORE",ACR)) Q:'ACR D
  1. .S ACRMATCH=0
  1. .D SETCORE ;PIECE OUT CORE VARIABLES (they will float)
  1. .Q:ACRCDOC="" ;SCREEN EXEMPTIONS
  1. .;LOOK FOR MATCH IN ARMS FILES
  1. .I $D(^ACRDOC("B",ACRCDOC))!($D(^ACRDOC("C",ACRCDOC))) D Q:ACRMATCH
  1. ..D HITDOC(ACRCDOC) ;FMS DOCUMENT FILE
  1. .I $$REQ D HITDOC(ACRREQ) S ACRREQ="" Q:ACRMATCH ;FOUND REBUILT REQ
  1. .I $D(^AFSLAFP("N",ACRCDOC)) D HIT1166^ACRFUFMX(ACRCDOC,0) Q:ACRMATCH ;1166 APPROVALS FOR PAYMENT FILE
  1. .I $D(^ACRDHR("B",ACRCDOC)) D HITDHR^ACRFUFMX(ACRCDOC) Q ;FMS DOCUMENT HISTORY RECORD FILE
  1. .Q:$D(^ACRZ("NOMATCH",ACR)) ;ALREADY COUNTED
  1. .;NO HIT -- ACCOUNT FOR NONARMS
  1. .D NONARMS
  1. Q
  1. ; ***********************************
  1. NONARMS ;ASSIGN NON-ARMS TO APPROPRIATE FILES
  1. ; ***********************************
  1. ;
  1. ;CHS FI PAID **********************
  1. I ACRCHS D CHSSET(ACR) Q ;DON'T CHECK CHS VENDOR
  1. ;
  1. ;CHECK CORE VENDOR ****************
  1. S ACRV=$$VEN^ACRFUFMU(ACRCEIN) ;CHECK CORE VENDOR
  1. S:ACRV=0 ACRERR="NO VENDOR FOUND"
  1. I ACRV,ACRCEIN'[111111111,'$D(^ACRZ("VNDR",ACRV)) D
  1. .Q:ACRCTYP="TR" ;DON'T WANT TRAVEL VENDORS
  1. .D CKVEND^ACRFUFMU(ACRV)
  1. .S ACRSTR="CORE VENDOR FOUND"_U_U_U_ACRCORE_U_U
  1. .D SETVND
  1. ;
  1. ;GOVTRIP *************************
  1. I ACRGTRIP D Q
  1. .S ^ACRZ("GTRIP",ACR)="NO HIT GOV TRIP"_U_ACRCORE_U_ACRERR
  1. .S ACRGTOT=ACRGTOT+1
  1. ;
  1. ;ARMS TRAVEL/AIRLINE *************
  1. I ACRCTYP="TR"!(ACRCTYP="AT") D Q ;CAPTURE TRAVEL/AIRLINE
  1. .Q:$D(^ACRZ("TR",ACR))
  1. .S ^ACRZ("TR",ACR)="NO HIT TRAVEL"_U_U_U_U_ACRCORE
  1. .S ACRTRTOT=ACRTRTOT+1
  1. ;
  1. ;GRANTS **************************
  1. I ACRCTYP="GR"!(ACRCTYP="PM") D Q
  1. .S ^ACRZ("GR",ACR)="NO HIT GRANT"_U_ACRCORE_U_ACRERR
  1. .S ACRGRTOT=ACRGRTOT+1
  1. ;
  1. ;NOHIT -- LEFTOVERS **************
  1. S ^ACRZ("NOHIT",ACR)="NO HIT UNKNOWN"_U_ACRCORE_U_ACRERR
  1. S ACRTCNT=ACRTCNT+1
  1. Q
  1. ; *********************************
  1. TOTAL ;SET TOTALS ***********************
  1. S ^ACRZ("TOTALS","TOTAL")=ACRAMT ;Total amount from all CORE Docs
  1. S ^ACRZ("ACRDOC","TOTAL")=ACRDCNT ;# of matched documents w/Vendor
  1. S ^ACRZ("VNDR","TOTAL")=ACRVCNT ;# of unique Vendors
  1. S ^ACRZ("NOHIT","TOTAL")=ACRTCNT ;# of Unidentified No Hits
  1. S ^ACRZ("NOMATCH","TOTAL")=ACRMCNT ;# of Hits with No Match
  1. S ^ACRZ("NOVNDR","TOTAL")=ACRZCNT ;# of matched Documents w/o Vendors
  1. S ^ACRZ("ERR","TOTAL")=ACRECNT ;# of Vendors with Errors
  1. S ^ACRZ("PAY","TOTAL")=ACRPCNT ;# of Payroll documents (No Hit)
  1. S ^ACRZ("GTRIP","TOTAL")=ACRGTOT ;# of GovTrip documents (No Hit)
  1. S ^ACRZ("CHS","TOTAL")=ACRCHST ;# of CHS documents (No Hit)
  1. S ^ACRZ("TR","TOTAL")=ACRTRTOT ;# of non-GovTrip Travel documents
  1. S ^ACRZ("GR","TOTAL")=ACRGRTOT ;# of Grants documents (No Hit)
  1. Q
  1. ; *********************************
  1. ; *********************************
  1. SETCORE ; SET VARIABLES FROM CORE FILE STRING
  1. S (ACRV,ACRCDOC,ACRREQ,ACRSTR)=""
  1. S ACRGTRIP=0
  1. S ACRCORE=^ACRZ("ACRCORE",ACR)
  1. S ACRCTYP=$P(ACRCORE,U,2) ;CORE DOCUMENT TYPE
  1. S ACRCAMT=$P(ACRCORE,U,7) ;CORE DOLLAR AMOUNT
  1. S ACRAMT=ACRAMT+ACRCAMT ;TOTAL ALL AMOUNTS FOR AREA
  1. ;
  1. I ACRCTYP="PR" D Q ;DON'T WANT PAYROLL ************
  1. .S ^ACRZ("PAY",ACR)="PAYROLL"_U_ACRCORE
  1. .S ACRPCNT=ACRPCNT+1
  1. ;
  1. S ACRCDOC=$P(ACRCORE,U,3) ;CORE DOCUMENT NUMBER
  1. I $E(ACRCDOC,1,3)="HHS",$L(ACRCDOC)>19 D
  1. .S ACRCDOC=$E(ACRCDOC,11,25) ;CHECK FOR EXTENSION DOC NUMBERS
  1. ;
  1. S:ACRCTYP="AT" ACRCTYP="TR" ;CHANGE AIRLINE TO TRAVEL
  1. I ACRCTYP="TR"!(ACRCTYP="TN") D ;CHECK GOVTRIP TRAVEL DOC
  1. .F I="CB","TA","RM" I $E(ACRCDOC,9,10)=I S ACRGTRIP=1
  1. .S MRSTR=$G(MRSTR)+1 ;COUNT TRAVEL
  1. ;
  1. S ACRCAP=$P(ACRCORE,U) ;CORE ACCOUNTING POINT
  1. S ACRCFY=$P(ACRCORE,U,4) ;CORE FISCAL YEAR
  1. S ACRCCAN=$P(ACRCORE,U,5) ;CORE CAN
  1. S ACRCOCC=$P(ACRCORE,U,6) ;CORE OBJECT CLASS CODE
  1. S ACRCREF=$P(ACRCORE,U,8) ;CORE REFERENCE CODE
  1. S ACRCEIN=$P(ACRCORE,U,9) ;CORE VENDOR EIN
  1. S ACRAP=$E(ACRCCAN,2,3) ;GET ACTUAL AP FROM CAN
  1. S ACRCHS=$$CHS^ACRFUFMU ;SET CHS FLAG
  1. Q
  1. ;
  1. ; ***********************************
  1. HITDOC(ACRDOC) ;FOUND CORE DOCUMENT NUMBER IN ARMS FMS DOCUMENT FILE
  1. ;
  1. ; - Enters with: ACRCDOC = CORE document number
  1. ;
  1. ; ACRCORE VARIABLES FROM string from CORE file
  1. ;
  1. N ACRDA,ACRREQ,ACRXZ
  1. F ACRXZ="B","C" D Q:ACRMATCH
  1. .Q:'$D(^ACRDOC(ACRXZ,ACRDOC))
  1. .S ACRDA=0
  1. .F S ACRDA=$O(^ACRDOC(ACRXZ,ACRDOC,ACRDA)) Q:'ACRDA D Q:ACRMATCH
  1. ..S ACRMATCH=$$MATCHDOC(ACRDA)
  1. Q
  1. ;
  1. ; ***********************************
  1. MATCHDOC(ACRDA) ;Check ARMS against CORE
  1. ;
  1. ;----- LOOP THROUGH PO ITEMS IN FMS SUPPLIES AND SERVICES FILE
  1. ; AND MATCH WITH CORE DATA
  1. ; Enters with: ACRDOCDA = FMS Document file IEN
  1. ; ACRCOCC = CORE OCC
  1. ; ACRCFY = CORE Fiscal Year
  1. ; ACRCCAN = CORE CAN
  1. ; ACRCEIN = CORE VENDOR EIN
  1. ; ACRFY = ARMS
  1. ; ACROCC = ARMS OCC
  1. ; ACRCAN = ARMS CAN
  1. ; Returns: 0 = No match
  1. ; 1 = Match
  1. ;
  1. N ACRCANDA,ACRCAN,ACRSS0,ACRIDA,ACRDEPT,ACROCCDA,ACROCC,ACRFY
  1. N ACRRFIN,ACRIFIN,ACRID
  1. K ACRXX
  1. S (ACRCAN,ACROCC)=""
  1. S (ACRMATCH,ACRHIT)=0
  1. S ACRDOC0=$G(^ACRDOC(ACRDA,0))
  1. S ACRREQ=$P(ACRDOC0,U) ;REQUISITION/TRAVEL NUMB
  1. S ACRCC=$P(ACRDOC0,U,4) ;REQUEST TYPE
  1. ;GET VENDOR FROM DOCUMENT OR THE CREDIT CARD DEFAULT VENDOR
  1. S ACRV=$S(ACRCC=35:$$CCVEN^ACRFUFMU,1:$$VENDOR^ACRFUFMU(ACRDA))
  1. I ACRV,'ACRCHS,ACRCTYP="TR" S ACRV=0 ;DON'T WANT TRAVELER
  1. S ACRID=$P(ACRDOC0,U,14)
  1. S ACRSTR=ACRREQ_U_$$DOCDT^ACRZFFU(ACRDA)_U_ACRID ;DOC DAT,IDENTIFIER
  1. F ACRX="C","J" D Q:ACRHIT
  1. .S ACRIDA=0
  1. .F S ACRIDA=$O(^ACRSS(ACRX,ACRDA,ACRIDA)) Q:'ACRIDA D
  1. ..S ACRSS0=$G(^ACRSS(ACRIDA,0))
  1. ..S ACRSS0=$TR(ACRSS0,"""")
  1. ..S ACROCCDA=$P(ACRSS0,U,4) ;OBJECT CLASS CODE
  1. ..S ACRCANDA=$P(ACRSS0,U,5) ;COMMON ACCOUNTING NUMBER
  1. ..S ACRDEPT=$P(ACRSS0,U,6)
  1. ..S ACRFY=$$FYFUN^ACRFUTL1(ACRDEPT)
  1. ..D PIECE^ACRFUFMU
  1. ..S ACRMATCH=$$MATCH^ACRFUFMU ;LOOK FOR FY,CAN,OCC MATCH
  1. ..I ACRMATCH D
  1. ...D ITEMS^ACRFUFMI(ACRCDOC,ACRIDA,ACRCORE,.ACRRFIN,.ACRIFIN,.ACRHIT) ;SETS ITEMS INTO ^ACRZ("ITEMS"
  1. .I ACRHIT D SET
  1. .I 'ACRHIT D SETCK^ACRFUFMU("NO MATCH DOC",ACR)
  1. Q ACRHIT
  1. ;
  1. ; ***********************************
  1. SET ;EP; SET ACRZ(NODE,# WITH MATCHED DATA
  1. ; ENTERS WITH DATA STRING FROM
  1. ; FMS DOCUMENT FILE or
  1. ; 1166 APPROVALS FOR PAYMENT FILE or
  1. ; FMS DOCUMENT HISTORY RECORD FILE
  1. ; ACRV = VENDOR FILE IEN
  1. ;
  1. S ACRMATCH=1
  1. I ACRV'>0 S ACRV=$$VEN^ACRFUFMU(ACRCEIN) ;CHECK CORE VENDOR
  1. S ACRERR=$S(ACRV>0:$$CKVEND^ACRFUFMU(ACRV),1:"") ;CHECK FOR VENDOR ERRORS
  1. S:ACRERR="" ACRERR="NO VENDOR ERRORS"
  1. S ACRSTR=ACRSTR_U_ACRCORE_U_ACRRFIN_U_ACRIFIN ;ADD ARMS RR & INVOICE STATUS
  1. ;
  1. ; TRAVEL ****************************
  1. I ACRCTYP="TR"!(ACRCTYP="AT") D Q
  1. .S MSG=$S(ACRV>0:$$VNAME^ACRFUFMU(ACRV),1:"TRAVELLER")
  1. .S ^ACRZ("TR",ACR)=MSG_U_ACRSTR_U_ACRERR
  1. .D SETVND
  1. .S ACRTRTOT=ACRTRTOT+1
  1. .D SETCK^ACRFUFMU(MSG,ACR)
  1. ;
  1. ; NO VENDOR IN ARMS *****************
  1. I ACRV=0 D Q
  1. .S ^ACRZ("NOVNDR",ACR)="NO VENDOR"_U_ACRSTR
  1. .I ACRCEIN'["1111111111" D
  1. ..S ^ACRZ("CEIN",ACR)=ACRCEIN_"/NO IHS"_U_ACRCORE ;CAPTURE CORE VENDOR EIN FOR DOCUMENT
  1. .S ACRZCNT=ACRZCNT+1
  1. .D SETCK^ACRFUFMU("",ACR)
  1. ;
  1. ; ARMS MATCH WITH VENDOR ************
  1. D SETVND
  1. S ^ACRZ("ACRDOC",ACR)=ACRSTR
  1. S ACRDCNT=ACRDCNT+1
  1. D SETCK^ACRFUFMU("",ACR)
  1. Q
  1. SETVND ;EP - SET STRING INTO VNDR NODE *********
  1. Q:ACRV'>0
  1. S ACRAPV=ACRAP_"-"_ACRV
  1. S ACRASV=ASUFAC_"-"_ACRV
  1. S:ACRERR="" ACRERR="NO VENDOR ERRORS"
  1. S ACRVNAM=$$VNAME^ACRFUFMU(ACRV)
  1. S ACREIN=$$EIN^ACRFUFMU(ACRV)
  1. S ACRSFX=$$SFX^ACRFUFMU(ACRV)
  1. S ACRSTR=ACRAPV_U_ACRASV_U_ACRVNAM_U_ACREIN_U_ACRSFX_U_ACRSTR_U_ACRERR ;ADD VENDOR INFORMATION
  1. Q:$D(^ACRZ("VNDR",ACRV)) ;SET STRING AND QUIT IF FOUND
  1. S ^ACRZ("VNDR",ACRV)=ACRSTR ;SET VNDR
  1. S ACRVCNT=ACRVCNT+1
  1. I ACRERR'["NO VENDOR ERRORS" D
  1. .S ACRECNT=ACRECNT+1
  1. .S ^ACRZ("ERR",ACR)=ACRSTR
  1. Q
  1. ; ***********************************
  1. CHSSET(ACR) ;EP;
  1. S ^ACRZ("CHS",ACR)="NO HIT CHS"_U_ACRCORE
  1. S ACRCHST=ACRCHST+1
  1. Q
  1. ; ***********************************
  1. REQ() ;BUILD ORIGINAL REQUISITION NUMBER
  1. N ACRCANDA,ACRLOCDA,ACRLOC
  1. S ACRCANDA=$O(^AUTTCAN("B",ACRCCAN,0))
  1. I ACRCANDA="" Q 0 ;NOT IN COMMON ACCOUNTING NUM FILE
  1. S ACRLOCDA=$P($G(^AUTTCAN(ACRCANDA,0)),U,6)
  1. I ACRLOCDA="" S ACRLOCDA=$P($G(^ACRCAN(ACRCANDA,0)),U,7)
  1. I ACRLOCDA="" Q 0 ;NO LOCATION POINTER
  1. S ACRLOC=$P(^AUTTLCOD(ACRLOCDA,0),U)
  1. S ACRREQ=$E(ACRLOC)_$E(ACRCDOC,1,2)_"-"_$E(ACRCDOC,3,5)_"-"_$E(ACRCDOC,6)_"-"_$E(ACRCDOC,7,10)
  1. I '$D(^ACRDOC("B",ACRREQ)) S ACRREQ="" Q 0 ;NOT IN DOC FILE
  1. Q 1