This guide describes the OECN State Software USAS SOAP service. This guide is intended for software developers interested in using SOAP to integrate with or add alternative interfaces to USAS.
This guide assumes basic familiarity with USAS and the USAS account coding scheme. It also assumes the reader is familiar with SOAP, XML and other related technologies.
- DAS or DA Site - Data Acquisition Sites. This term is obsolete. OECN sites are now refered to as ITC's
- ITC - Information Technology Centers are regional data processing centers that provide computer services to member school districts. Among the services ITC's provide is hosting of the USAS application for school districts.
- OECN -
Ohio Education Computer Network
- SSDT - State Software Development Team develops USAS, and other software, for school district on behalf of the Ohio Department of Education.
- USAS - Uniform School Accounting system. USAS refers to both the USAS software developed by the SSDT on behalf of the Ohio Department of Education, and the USAS accounting structure defined by the Ohio Auditors of State and Ohio Department of Education.
Status of this Document
This document is updated routinely to reflect the current version of the USAS SOAP service. Links to the latest version of this document can be obtained from the SSDT Public Wiki at https://wiki.ssdt-ohio.org/display/CTD/USAS+SOAP+Developers+Guide
This document does not represent the complete documentation for the USAS SOAP service. The actual API documentation is contained in the WSDL, the USAS XML Schema and the OECN RPC XML schema.
The WSDL and Schemas are distributed by the SSDT as part of the SOAP service installation kit. Vendors should contact the school district's ITC or the SSDT for the WSDL for currently supported versions. The current development version of the USAS SOAP service is available at: http://devel.ssdt.nwoca.org/usassoap/. The latest WSDL and Schemas are available on that page.
Schema clarification: Requisitions
The deliver to address lines on the Requisition are limited to 24 characters, not 30 as stated by the schema. The datatype for the deliver to address on the Requisition and the delivery address on the Purchase Order are the same, so we are unable to change the schema.
Developers should only use the development version of the SOAP service for reference or to review upcoming features. Developers should always check with the ITC or the SSDT to determine which version(s) are available and supported at the ITC sites.
Developers who need background documentation on USAS may wish to refer to the USAS User and Reference Manuals or the USAS System Managers Guide. This documents are available on-line at http://ssdt.oecn.k12.oh.us/projects/usas .
Developers who have questions or need technical advice on integrating with the USAS webservice are encouraged to join the ssdt-usas-dev-l list. This list is operated by the SSDT to assist developers with integration issues. For subscription options and to view the archives, visit http://listserv.nwoca.org/cgi/wa.exe?A0=ssdt-usas-dev-l.
Status of the USAS SOAP Service
The USAS SOAP service provides a limited subset of USAS functionality via a standards based SOAP service. See the WSDL for business functions supported by the service.
The SSDT believes that USAS SOAP service complies with the WS-I Basic Profile 1.0a WS-I Basic Profile 1.0a . The artifacts (definitions and messages) of the service have passed all assertions tested by the “WS-I Testing Tools v 1.0.1” provided by WS-I.
The SSDT believes that the WS-I BP 1.0a is the best solution to ensuring interoperability between various SOAP implementations. Developers wishing to use the USAS SOAP service are encouraged to use client tools that can support WS-I compliant services. Any developer detecting a WS-I compliance issue in the service artifacts is encouraged to contact the SSDT.
Developers intending to integrate with USAS may not have access to a USAS server for development and testing. The SSDT can provide access to a test server for development and testing. The test server will always have the most recent released version of the web service. A user account can be provided which has access to a sample district database with limited test data.
Developers interesting in a test account, should send mail to firstname.lastname@example.org with their request. Please include contact information, company and a brief description of your application and intended use.
USAS Service Architecture Overview
The USAS system is hosted on servers operated by individual ITC's for their member school districts. Each server hosts a USAS database for one or more school districts.
District Database Identification
Each database is identified by a "district code" or IRN. Some ITC's also support the use of NCES codes to identify district databases. After a SOAP client authenticates with the SOAP service, it must declare the district database on which it intends to operate. Alternatively, the SOAP client may query the service for the databases the user has access to and allow the user to select the district code.
SOAP Service Endpoints
Each ITC that supports the USAS SOAP service will provide one or more “SOAP endpoint” URL's for accessing the service for their districts. In most cases, a single endpoint will be used for all districts hosted by a given DA Site. However, in some cases, an ITC may provide a different endpoint for specific districts.
Most ITC will provide an HTTPS (SSL) end-point can be used to encrypt SOAP messages on the wire. Developers are encouraged to use HTTPS when available. Each ITC decides whether HTTPS is available or required and may have other local security policies regarding from what networks SOAP connections are available.
Authentication and Authorization
When a client connects to the service, it must provide username and password credentials for an account on the ITC server. Usernames and access rights are administered by the DA Site on behalf of the member district. The access rights and functions the account can perform are limited by rights granted by the ITC and any USAS security profiles established by the district.
The account used to access the SOAP service may be a normal end-user account of a standard USAS user. A normal user account does not need special rights to use the SOAP service. This sort of access is appropriate, for example, when providing an alternative interface to USAS and the back-end service is being used for authentication (pass-through authentication).
Alternatively, the ITC may provide a specific account to be used for SOAP access by specific trusted applications. This might be appropriate for an application that has its own authentication scheme that is being integrated with USAS.
For example, an “eProcurement” application might have it’s own user accounts and authentication scheme and might be configured to use a single USAS account to post transactions. This type of access must be negotiated between the developer, ITC and school district. All parties must be aware that this access model effectively turns much of the USAS security over to the third party application. The district and ITC must determine if the developer’s product is to be trusted in this model.
A given user account on a USAS server may be granted access to one or more school district databases. Therefore, the ITC might provide a single account to access multiple districts, or a separate account for each district. If when a single account is used, the users rights in each district may vary based on the USAS profile established by the district (see USAS User Profiles below).
USAS User Profiles
The USAS SOAP service applies all business rules and security implemented by the USAS system. This includes per-district user profiles. User profiles are a feature of USAS that permit fine grained control over what functions a user is able to perform and which USAS budget accounts they can see or use in transactions. A school district can establish profiles that control what any user (including users of the SOAP service) are able to perform.
A developer need not have any special understanding of how USAS security works or how it is applied. The security is applied automatically by the server based on the security settings and profiles established on the server. However, faults can be returned if an operation is performed that the user account is not authorized to perform.
Assuming Profile of Another User
A special feature of the service allows a sufficiently privileged account to assume (or impersonate) the profile of another USAS user. If a SOAP client impersonates another profile, any operations it performs will be limited by the impersonated user’s profile.
This may be useful in situations where the client application uses a single account to access USAS, but still wishes to use USAS security features to limit what accounts can be seen or functions performed.
When posting requisitions, the username used in the impersonation call will also be used as the "requisitioner" in USAS. This is currently true only for requisitions and not for any other data types.
Mapping Foreign Users to USAS Profiles by Convention
When assuming the role of another user, USAS does not interpret the username in any special way against a particular authentication source. USAS simply uses the profile name “as is” and looks for a corresponding profile.
Therefore, it is possible for a district to create profiles that are not traditional USAS user accounts. A third-party product and a school district could develop a convention for mapping usernames from the application to USAS profiles. This allows the district to control what the users of the third party application are permitted to do, without significant impact on the third party application.
For example, suppose an eProcurement application known as “Buy Good Stuff” (BGS) has it’s own user authentication is integrated with USAS. The BGS application could access USAS using a single username provided by the ITC. The “Buy Good Stuff” application could impersonate a USAS user profile in the form “BGS\username”, where username is the username in the BGS application.
The district can then use USAS’s security features to create profiles in the form “BGS\username” to control features available to users of the BGS application. The district can also provide a default profile that applies to all BGS users that do not have a specific profile.
In this way, a district could control what functions a given BGS user is permitted to perform or what USAS budget accounts they can see in a query. For example, suppose the user “smith” in the BGS application should only be allowed to see budget accounts that have “001” in the OPU field. The district could create a USAS profile for the user “BGS\smith” with this restriction.
The BGS application would need only to invoke assumeUserProfile for the user “BGS\smith” to cause USAS to enforce the restriction. BGS need not have any other understanding of the USAS security model.
The choice of the “BGS\” prefix in the above example is arbitrary and could be any convention agreed to by both the developer and district. The use of a convention that would not conflict with traditional USAS user accounts is strongly recommended.
USAS user profile names are currently limited to 20 characters. Therefore, the naming convention must be devised to fit within this constraint.
USAS SOAP Service Details
This section contains details of using the USAS SOAP service operations and parameters. Items in italics refer to operations (methods), parameters or element names provided used the service. See the WSDL or generated WSDL documentation for details for each operation, parameters and data types.
The USAS SOAP service is a “statefull” service. The login _operation, upon successful authentication, establishes a new session and returns a _sessionId. The session retains a connection to the USAS server and context for subsequent invocations of the service. The client application must retain this session id and pass it as a parameter to subsequent invocations of the service.
The steps for establishing a session are:
- Invoke _login _operation with credentials for an account on the USAS server
- Optional: Invoke _getDistrictList _to return a list of districts the user as access to
- Invoke _setDistrictAccess _to bind the session to a given district database
- Optional: Invoke assumeUserProfile to assume the profile of another user
After these steps are completed, the client may invoke any other USAS operation. The client may perform as many operations as necessary to perform its work. When the client is finished using the service, it should invoke the _logout _operation to cleanly close down the session.
It is important that the client invoke setDistrictAccess code to establish the district database to which the session is bound. This must be done exactly once after login and prior to any other USAS operation.
A client must not invoke setDistrictAccess more than once for a session. A fault will be returned if such an attempt is made and the session will be left in an indeterminate state. Client applications that need to access more than one district, must establish at least one session for each district.
After the database context is established, the client application may optionally invoke assumeUserProfile to impersonate the profile of a different USAS user. This operation will only succeed if the authenticated user is authorized to impersonate other users and if a suitable profile exists on the USAS server. The _assumeUserProfile _operation may be used multiple times for a given session.
Sessions consume resources on both the SOAP server and the back-end USAS server. Therefore, inactivity timeouts apply to the SOAP sessions. The timeout interval is configurable by each DA Site and defaults to approximately 45 minutes. If there is no activity for a session in during the timeout interval, the session will be deleted from the SOAP service. Any subsequent invocations using an expired sessionId will result in a fault being returned. Client applications that attempt to maintain long running connections, must be prepared to handle such faults.
The USAS SOAP service will accept multiple simultaneous requests for a given session. However, no guarantees are given regarding the order that the requests will be processed. Threaded client applications must use care if using a shared session, especially when using multiple invocations of _assumeUserProfile _with other operations.
For this reason, the SSDT recommends that threaded clients synchronize access such that only one thread performs operations for a given session. If multiple threads need to access the service simultaneously, it is preferable to have a separate session per thread, perhaps by maintaining a pool of active sessions.
Three distinct namespaces are used to define the service operations and parameters used by the service. These are described briefly below. See the SSDT web site for links to the WSDL and associated XML Schemas.
See #Resources for links to the schemas.
The WSDL defines custom SOAP faults for application specific errors. The faults are defined to clearly indicate the type of “normal” faults the client should be expected to handle. For example, getBudgetAccount can throw an AccountNotFoundFault.
However, not all possible faults are defined by the WSDL. All operations are capable of returning generic SOAP faults that indicate general failures. Examples of general failures include: “SessionId not found” (perhaps due to a timeout), connection failures, security violations (the user is not authorized for the operation). The client application should be written to expect and handle both application specific faults and general SOAP faults. The client must not assume that the only faults are those defined by the WSDL.
UsasGeneralFault is the base fault from which all other application faults are extended. The operations return either UsasGeneralfault directly or a fault message extended from it.
UsasGeneraFault messages always contain at least the standard SOAP fault elements (“faultcode” and “faultstring”). Client applications may minimally use these elements to retrieve the basic error information. Also included are several custom elements that are specific to USAS. The client may use these additional elements to retrieve detailed information about the fault.
The USAS system has the concept of “severity” when returning error conditions. Furthermore, USAS may return multiple errors for a single request. In general, multiple errors are associated with posting and update operations, but may occur for any operation.
When USAS returns multiple conditions of the same or differing severities, the messages are encapsulated in a response-msgs element and included in the fault response. The client may use this element to display to the user or for logging. A response-msgs _element, if present, will contain one or more _fatal, error, or warning elements that define the severity and contain the details of the message. Within these elements, a text element will contain the human readable error message. source, code, _or _vmsstatus elements may also appear, but are not intended for end-users. The latter elements may be useful for debugging or diagnosing problems with the SSDT.
Two other elements of UsasGeneralFault are also for convenience of clients that don’t wish to interpret the entire response-msgs _element. _UsasErrorMessage contains the text of the first message of the highest severity. Clients should use UsasErrorMessage, if only one message is to be displayed or logged. The _Severity _element is an enumerated element that contains the highest severity (Fatal, Error or Warning) of any message in the _response-msgs _element. The _Severity _can be regarded as the overall severity of the fault.
Qualified Success (Warning) Faults
In certain circumstances, USAS business rules require reporting one or more warning conditions as the result of a posting or validation operation. From a SOAP point of view, these faults are unusual because the fault does not indicate failure of the operation. Rather, the operation was successful but was qualified with warnings according to USAS business rules.
In all cases when a warning fault (e.g. PostingWarningFault) is returned, the USAS operation was completed successfully. When performing a posting operation, the client application must check for warning faults and process them as appropriate for the application. The warning might be shown the to user, logged or discarded. If the warning is displayed to the user, it must be shown in context of a successful operation.
In an interactive application, when performing a validation operation, it is recommended that messages from a warning fault be displayed to the user. A warning may contain important information that the user needs to decide whether to continue with a posting operation. For example, a warning might indicate “Available balance for account will be exceeded”, which may influence the users decision to proceed.
The SSDT choose this approach so that the reporting of both errors and warnings in a single response could be handled via the same fault structure. USAS may return a mixture of error and warning messages. Regardless of the severity of the fault, the messages will be returned in a fault derived from UsasGeneralFault and can be extracted from the message in the same manner by the client.
All cases where warning fault can occur are explicitly defined in the WSDL. A client application need only be concerned about a warning fault, if explicitly declared in the binding for the operation.
Auto-Assignment of Transaction Numbers
As of version 2.0 of the USAS SOAP service, most of the "posting" operations now support automatic assignment of transaction numbers. In previous versions, the application was required to determine the transaction number (e.g. purchase order number) before posting a new transaction.
In version 2.0, the transaction numbers are optional elements (may be omitted or empty). When the transaction number is not provided, the SOAP service will automatically assign the next available number.
Prior to version 2.0, posting operations, such as "postNewPurchaseOrder", returned an empty ("void") response. In version 2.0, it will return the actual <PurchaseOrder> element as posted with the assigned transaction number. Therefore, the client application will be able to determine the number that was assigned to the new transaction.
The use of this new feature is optional. The client application may continue to assign transaction numbers, if desired. In either case, an instance of the posted element will be returned on "post" operations.
"Split" Items on Requisitions or Purchase Orders
USAS requisitions and purchase orders support "splitting" an item into multiple accounts, allowing it to be printed as one line on the requisition or purchase order but stored as multiple lines each charged to a separate account code.
In order for USAS to recognize a "split" item, the first item is called the "combined" item, meaning this is the line item the following items are being combined into. The rest of the items that are to be combined with the first item are called "split items".
There are 2 ways of combining items, splitting the quantity and splitting the price.
Splitting the Quantity
This type of split involves splitting the quantity of a particular item among several different account codes. The unit price must be the same for each item. For example:
|Qty !! Description !! Price !! Account Code|
Resulting printed PO item:
|Qty !! Description !! Price !! Total|
Splitting the Price
This type of split involves splitting the price of a particular item among several different account codes. The quantity field must be 1 for the combined item and zero for the split items.
|Qty !! Description !! Price !! Account Code|
Resulting printed PO item:
|Qty !! Description !! Price !! Total|
Usage of "<SplitTag>"
In the requisition or purchase order xml document, the tag <SplitFlag> is required to be included as a part of the <item> information for both the combined and split items. The following values are accepted:
There must always be a "Combined" item first, immediately followed by one or more "Split_Price" or one or more "Split_Quantity" items. There cannot be both "Split_Price" and "Split_Quantity" items associated with the same "Combined" item.
The unit price must be the same for the "Combined" and all "Split_Quantity" items.
The quantity field must be 1 for the "Combined" item and zero for all "Split_Price" items.
Fault Message Codes
The table below defines response message codes returned by the USAS SOAP service faults. The codes define the nature of the fault in greater detail.
For faults that contain response-msgs _elements, each message (_fatal, error or _warning _element) may contain a _code _element. Developers may use these codes to programmatically test for specific types of USAS errors.
The codes in this table are the complete set of codes that can theoretically be produced by the current OpenVMS back-end implementation of USAS. However, in practice, some codes could never be returned by the USAS SOAP service. For example, “INVALIDXMLDATA” could not be returned in a USAS fault since the SOAP service would reject XML documents that do not conform to the USAS XML Schema.
|Common Messages||INVALIDXMLDATA||An incorrect tag was found, or XML document not in expected format.|
|KEYNOTPROVIDED||The key field is blank or zero.|
|ALREADYONFILE||The key is already on file.|
|INVALIDFUNCTION||An invalid 'function' tag value is present.|
|INVALIDOPERATION||An invalid 'operation' tag value is present|
|RECORDNOTFOUND||The record or records being read or searched for were not found.|
|INVALIDDATE||The date is invalid or not in the correct range.|
|FILEOPENINPUTFAIL||A data file failed to open for input.|
|FILEOPENIOFAIL||A data file failed to open for I/O.|
|PROTVIO||A protection violation occurred when trying to open a data file.|
|Account Balances||CASHNEGFUND||Negative fund balance for cash account.|
|CASHNEGREMAIN||Negative remaining balance for cash account.|
|CASHNEGBALLESSPAY||Negative cash balance less payables for cash account.|
|APPNEGREMAIN||Negative remaining balance for appropriation account.|
|BUDNEGREMAIN||Negative remaining balance for budget account.|
|APPNEGNEXTYEAR||Negative next year balance for appropriation account.|
|BUDNEGNEXTYEAR||Negative next year balance for budget account.|
|Invalid Accounts||NOACCOUNTACCESS||Access to given Account is denied.|
|ACCTNOTACTIVE||Account is not active.|
|CASHACCTNOTFOUND||Cash Account was not found on file.|
|APPACCTNOTFOUND||Appropriation Account was not found on file.|
|BUDACCTNOTFOUND||Budget Account was not found on file.|
|REVACCTNOTFOUND||Revenue Account was not found on file.|
|INVALIDTRANSIND||Invalid Transaction Indicator.|
|INVALIDFUNCTION||Invalid Function Code.|
|INVALIDRECEIPT||Invalid Receipt Code.|
|Account I/O||BUDACCTWRITEFAIL||Creation of Budget Account failed.|
|REVACCTWRITEFAIL||Creation of Revenue Account failed.|
|CASHACCTREWRITEFAIL||Update of Cash Account failed.|
|APPACCTREWRITEFAIL||Update of Appropriation Account failed.|
|BUDACCTREWRITEFAIL||Update of Budget Account failed.|
|REVACCTREWRITEFAIL||Update of Revenue Account failed.|
|Vendors||VENDORNOTFOUND||Vendor number was not found or is invalid.|
|VENDORNOTACTIVE||Vendor is not active.|
|VENDORISMULTIVENDOR||Vendor is a Multi-Vendor.|
|VENDORREWRITEFAIL||Update of Vendor record failed.|
|VENDORDIFFPO||Vendor number provided is different from Vendor on the Purchase Order.|
|General Transaction||ITEMOVERFLOW||The maximum allowable number of items per transaction was exceeded.|
|Requisitions||INVALIDREQNUMBER||Requisition number supplied is not valid or is already on file.|
|REQNOTFOUND||Requisition was not found on file.|
|NOASSOCIATEDITEMS||There were no item records posted for this Requisition.|
|REQWRITEFAIL||Creation of Requisition record failed.|
|REQDELONERECORD||Only one record is permitted when performing a delete operation.|
|REQACCESSDENIED||Access is denied to the Requisition.|
|REQALREADYPOSTED||Requisition already converted to a Purchase Order.|
|REQDELETEFAIL||Deletion of Requisition record failed.|
|GENERICBADLOCATION||The generic record type did not precede all other records in batch.|
|Purchase Orders||INVALIDPONUMBER||The Purchase Order number supplied is not valid or is already on file.|
|INVALIDDESCLINE||The Purchase Order Description line number is not valid or is already on file.|
|INVALIDDESCTYPE||The Purchase Order Description Type field is not valid.|
|PONOTFOUND||Purchase Order was not found on file.|
|POITEMNOTFOUND||Purchase Order Item was not found on file.|
|POHISTWRITEFAIL||Creation of POHIST record failed.|
|POHISTREWRITEFAIL||Update of POHIST record failed.|
|POHISTDELETEFAIL||Deletion of POHIST record failed.|
|POITEMWRITEFAIL||Creation of POAMT record failed.|
|POITEMREWRITEFAIL||Update of POAMT record failed.|
|POITEMDELETEFAIL||Deletion of POAMT record failed.|
|PODESCWRITEFAIL||Creation of PODESC record failed.|
|PODESCDELETEFAIL||Deletion of PODESC record failed.|
|PODESCREWRITEFAIL||Update of PODESC record failed.|
|FUTPODELETEFAIL||Deletion of FUTPO record failed.|
|ZEROQUANTITY||Purchase Order item quantity must not equal zero.|
|NOCHANGEKEY||The key cannot be changed.|
|Combined Items||QUANTITYNONZERO||Quantity did not equal zero for split-price item.|
|PRICENOTEQUAL||Price is not equal for all split-quantity items.|
|COMBINEDPRECEDESPL<span >IT</span>||A combined item did not precede split item.|
|INVALIDSPLITFLAG||The Split Flag field is not valid.|
|QUANTITYNOTONE||The quantity does not equal one for a split-price item.|
|DESCEQUALDASH||The description field does not equal a dash for split items.|
|Change Orders||NOCHANGEDATEPRIORY<span >R</span>||The Purchase Order date may not be changed on a Purchase Order from a prior fiscal year.|
|NOAMENDPO||Only new, partially filled or partially paid Purchase Orders may be amended.|
|NOCHANGEDATEAMEND<span >ED</span>||The date cannot be changed on a Purchase Order that has already been amended.|
|NOCHANGEVENDOR||The Vendor cannot be changed because there is an associated invoice or the PO status is not new.|
|ISSUELESSTHANPODAT<span >E</span>||An item's Issue Date must not be before the Purchase Order date.|
|INVALIDACCTMOD||The account code may not be changed on an existing Purchase Order item.|
|INVALIDQUANTMOD||The quantity may not be changed on an existing Purchase Order item.|
|INVALIDPRICEMOD||The price may not be changed on an existing Purchase Order item.|
|NOCANCELCOMBINED||You cannot cancel a combined item without canceling all of the associated split items.|
|INVALIDAMENDMENT||Invalid amendment record or original Purchase Order item was not found.|
|Purchase Order Del<span >ete</span>||PODELETEONERECORD||Only one record is permitted when deleting a Purchase Order.|
|POSTATUSNOTNEW||Purchase Order status is not new, cannot be deleted.|
|ASSOCINVCKNODELETE||There is an associated Invoice or Check, Purchase Order cannot be deleted.|
|ASSOCCANINVEXIST||There is an associated 'cancel' Invoice.|
|Invoices||INVALIDINVNUMBER||Invoice number supplied is not valid or is already on file.|
|INVOICENOTFOUND||Invoice number was not found on file.|
|INVOICEWRITEFAIL||Creation of INAMT record failed.|
|INVOICEREWRITEFAIL||Update of INAMT record failed.|
|INVPAYNOTFOUND||INVPAY record was not found on file.|
|INVPAYWRITEFAIL||Creation of INVPAY record failed.|
|INVPAYDELETEFAIL||Deletion of INVPAY record failed.|
|AMOUNTSBOTHNEGORP<span >OS</span>||Remaining encumbered amount and invoice amount must be both negative or both positive.|
|INVALIDINVSTATUS||Invalid Invoice status.|
|CANCELEXCEEDSENC||The canceled amount exceeds the remaining encumbrance amount.|
|POITEMCOMPFILLED||Invoice cannot be posted because Purchase Order item is already completely filled.|
|Checks||INVALIDCHECKNUMBER||Check number supplied is not valid or is already on file.|
|CHECKWRITEFAIL||Creation of Check record failed.|
|CHECKREWRITEFAIL||Update of Check record failed.|
|CHECKITEMWRITEFAIL||Creation of Check Item failed.|
|NEGATIVECHECK||The check to be created will be a 'negative check'.|
|NOUPDATEHIGHCHECK||The highest Check number on file was not updated.|
|NOPOSTPAYWITHOUTPO||Cannot post a payroll check without posting Purchase Order.|
|NOPOSTCHECKWOUTPO<span >INV</span>||Cannot post a check without posting Purchase Order and Invoice.|
|NOPOSTCHECKINVC||Cannot post a check when the Invoice status is 'Canceled'.|
|FINALMONTHCLOSE||Final month closed, but fiscal year is not.|
|NOPENDINGINVOICE||No associated pending invoice was found for selection.|
|NOSELECTIONSMADE||No invoices were selected for processing.|
|COLLAPSESETPROMPT||The collapse check items flag is set to 'prompt', instead of Y or N.|
|Receipts||INVALIDRCPTNUMBER||Receipt number supplied is not valid or is already on file.|
|RECEIPTWRITEFAIL||Creation of Receipt record failed.|
|RECEIPTREWRITEFAIL||Update of Receipt record failed.|
|RECEIPTDELETEFAIL||Deletion of Receipt record failed.|
|NOITEMS||No items associated with Receipt record.|
|Other I/O||USASDATREWRITEFAIL||Update of USASDAT record failed.|
|INVENTWRITEFAIL||Creation of INVENT record failed.|
|Invalid Dates||INVALIDPODATE||Purchase Order date is invalid or not in proper processing period.|
|INVALIDPAYDATE||Payroll date is invalid or not in proper processing period.|
|INVALIDINVDATE||Invoice date is invalid or not in proper processing period.|
|INVALIDPAYDUEDATE||Payment Due date is invalid or not in proper processing period.|
|INVALIDCHECKDATE||Check date is invalid or not in proper processing period.|
|INVALIDISSUEDATE||Issue Date is invalid or not in proper processing period.|
|INVALIDRCVDDATE||Received date is invalid or not in proper processing period.|
|INVALIDRCPTDATE||Receipt date is invalid or not in proper processing period.|
|INVALIDREQDATE||Requisition date is invalid or not in proper processing period.|
|INVALIDDELDATE||Delivery date is invalid.|
|AUTOPOST General||NOTALLFILESAVAIL||Not all USAS files were available for exclusive access.|
|NORECORDSINBATCH||No batch records were found in the batch.|
|RECNUMNOTNUMERIC||Record number is not numeric.|
|REFNUMNOTNUMERIC||Reference number is not numeric.|
|Inconsistent Data||INCONSISTENTVENDOR||Vendor number field is not consistent.|
|INCONSISTENTPOFLAG||Purchase Order posting flag is not consistent.|
|INCONSISTENTCHECKFL<span >G</span>||Check posting flag is not consistent.|
|INCONSISTENTREFDATE||Refund date field is not consistent.|
|INCONSISTENTCREATE||Check create flag is not consistent.|
|INCONSISTENTCHECK||Check number is not consistent.|
|INCONSISTENTCHECKDT||Check date is not consistent.|
|Invalid Numerics||POITEMNOTNUMERIC||Purchase Order item number is not numeric.|
|QUANTNOTNUMERIC||Quantity field is not numeric.|
|PRICENOTNUMERIC||Price field is not numeric.|
|INVAMTNOTNUMERIC||Invoice Amount field is not numeric.|
|AMOUNTNOTNUMERIC||Amount is not numeric.|
|INVALIDNUMERIC||Field is not numeric.|
|<span ></span>||<span ></span>||<span ></span>|