MBox Design, LLC M2 Collision Care, Inc. ABS - Lawson - Accounts Payable Interface Module Design Specification Overview This document includes all details for the design of the ABS-Lawson AP Interface Module. The module includes all functions to as seamlessly as possible, link AP activity occurring at each Store, reflected in each store’s Mitchell ABS system’s data, with the M2 Collision Care, Inc.(“M2” or “M2 Automotive”) corporate AP and financial reporting system, which utilizes the Lawson financial software system. All windows planned in the Module are shown here. We have incorporated the PowerPoint screens used for discussion into this document to avoid confusion. It is expected that this specification, as of the date shown above, will be approved for development via a formal sign-off process. Module Functions - Summary The Module includes the following specific functions: ABS Export File locator and control - provides, maintains data to feed user-triggered file location and transfer to Lawson server’s directories, performed by the Export File Transfer function. Export File Transfer - user triggered process that locates ABS export files and physically transfers them to the Lawson server for importing into the AP Reconciliation Data Base. Eliminates manual searching of 25 store’s directories, drag-and-drop moving of files, etc. ABS file Importer - this function copies all data from each export file into the AP Reconciliation data base’s tables. Audit and Exception Reports - This includes a family of related reports, each specialized for one or more specific exception conditions. This enables focused correction of various kinds of data error conditions, missing data, wrong data, mismatches of dollar amounts, vendor ID’s, data present but no hard copy, and others. Some of these will be emailed. The main working report is the Active Invoices report. AP Reconciliation Editor - this is the main screen for the module, and provides the ability to retrieve specific rows of data from the data base for correction of errors, matching against hard copies of invoices, and if desired, direct entry M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - of invoices not entered into the ABS system’s data base. It includes complete validation logic as well as search and selection of lists of invoices that correspond to data on exception reports, to speed entry of correction data. The user will know in all cases whether each invoice row in the data base is completely free of errors, and can be posted to the Lawson data base before leaving the screen. An Excellike grid, combined with a detail window, allows the user to quickly see, review and handle a list of multiple invoices at one time, while seeing the detail data for an invoice identified by the cursor location. Lawson Import File Generation - this process will prompt for store selection, then scan the data in the Active Invoices Page 2 table, apply complete validation logic, and select all rows that meet full validation requirements, generating a data file that completely meets the requirements of Lawson’s AP520 program. Audit Trail Reports - all actions taken in the data base will be completely viewable via audit, and history listings. Email Module - this module will provide the ability to maintain a list of store/email addresses, and a list of automatically run reports that will be generated and emailed to these addresses on a scheduled basis. This function’s development is deferred. Functions Added or Increased after Preliminary Design and Proposal (Scope Increases) - These are functions that are either added completely, having been identified during the discovery process, or whose function has grown beyond what was originally envisioned in the Preliminary Design & Proposal document. It is vital that clear communication be maintained at all times regarding what can be expected, how it will work, how long it will take to create, and how much it will cost to develop. Areas in this specification that are related to these scope increases are highlighted in a blue font. Email List Maintenance - this is an additional screen that maintains data in the Store-Email table, a list of email addresses for each store to which exception reports are to be sent. Development of this function is deferred until after M2 management indicates it is ready for its development. Email Engine - this function generates reports with certain types of exception data and emails them to a specified list of users, using the Store-Email table as its source. It is run on demand by a user, and calls a Crystal Report, one store at a time, generates the report then send it to the designated users. This function is deferred for now. Out of Period Invoice Identification - Adds user selected current period, using a reference table in the data base containing the period numbers and start and end dates for each period. It also uses a OP Reason Code, indicating both if and why the invoice was out of period. The text explanations for the value of this code field are stored in a small reference table in the data base. Neither of these two tables are user maintainable, with a System Administrator providing direct data updates using SQL Enterprise Manager. This function M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 3 is provided to allow creation of a Out of Period Invoices exception report that is will produce repeatable results even as current period dates change, and avoids the complexities of determining open/closed periods automatically and retroactively. Vendor Location Detection - the Preliminary design proposal did not envision the complexity of handling multiple vendor locations, and of attempting to identify which is the correct location via an automatic process. Discussion of 11/26 defined this function, but was modified considerably in the 12/3 design meeting. A separate table, relating one or more stores to a given vendor location will be used in stead of the originally envisioned single field appended to the vendor location data. Vendor-specific Suspected Duplicate logic - the discussion of 11/26 resulted in a design decision to add a Vendor maintenance window with fields to support vendor specific duplicate filtering, which would override the default logic used to determine whether to set the Duplicate-Suspect invoice status flag. This design was amended during the 12/3 design meeting. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 4 Architecture The diagram below shows, in summary form, how the different elements of the Module work together to provide a complete interface and AP Invoice reconciliation set of tools for M2 financial management. ABS-LawsonAP interface Module Proposed Module Overview & Flow Stores Vendor Invoice - Received, entered - In ABS data Entry AP Interface Module ABS - RO Cost - AP Export Files .apd .apt AP Reconciliation Data Base (SQL) Import - All Exported data - Status of each tracked - Direct Edit, entry - Exception Reports - Validation to Lawson DB Data - Vendor table Also have data w/o hard copy Hard Copy Vendor Invoice - Received - Not entered - Not in ABS data FedEx'd Invoices Lawson System Lawson DB (SQL) - Vendor Master - AP - Payments AP520 Export File - For Lawson AP520 - Import - 100% Valid data Edit/Entry Window Matched - Retrieve data Hard copy matching Correct erorrs Make 100% postable Vendor Invoice - Received, entered at Corp. - Enter either into AP Reconciliation DB, or Lawson AP directly Exception Reports - Missing, incorrect Data - Organized by type of corrective action Audit Reports M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 5 Table and Process Flow The diagram below expands on the architecture diagram above and shows how each table and process work together. ABS-Lawson AP Interface Module Table and Process Flow Store ABS - AP Export Export Files: APCINVOICE APCDISTRIB A Import Process - Copies data into Temp tables, processes into Working tables - Updates Transfer History for each table - Duplicate detection - Vendor validation - Discount calculation - Distribution in balance Transfer Process - Scheduled Transfers - Updates Transfer History - Moves tables Generate Audit &Exception Reports - Audit/Working Report - Store, vendor specific - Each type of condition - Email Generator (deferred) A Transferred Files APCINVOICE & APCDISTRIB for each store Export Table Generator - Selects 100% OK invoices - Generates APCINVOICES & APCDISTRIB files - 100 %valid data Working Tables - Active_Invoices - Active_Invoice_ Distribution Transferred Reports Audit History - Changes - Users Main Working/ Window - Lists w/ Detail Corrective Action - Full Detail View Activities: - Invoice Matching - Distribution - Discounts - Vendors, - Flag Store Export Ready - Maintenance Screens - Action screens History Tables - Invoices - Distribution Export Run Log - Each run - History Link Lawson Export Files - APCINVOICES - APCDISTRIB Lawson AP520 Screen & Process - Imports data Lawson DB (SQL) - Vendor Master - AP - Payments M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 6 Work Flow – Major Steps The work flow sequence that has been discussed during the design conferences is summarized below for reference. It was previously presented in a PowerPoint visual to aid in simulating the way the work flow will go with this Module, and is incorporated into this specification to aid in understanding and for reference. The steps are: Run Scheduled Transfer Process – moves files, imports data into the Module Print the Active Invoices (Vendor Summary) Report – shows all invoice data for a Store, by Vendor. Use to perform Audit process. Match hard invoice copies to data on Active Invoices report – note changes Access Main Window in the Module – make changes as needed to correct problems found during audit. Auditor Flags Store as Export Ready in Main Window. Print Exception reports, emailing some to Stores to aid in resolving uncorrected invoices Work off remaining corrections to each Store’s batch as information becomes available to correct them. Each uncorrected invoice in essence becomes part of the succeeding batch. Run Lawson Export process – selecting by Store, using Store numbers flagged by Auditors as export ready M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 7 Module Main Window – User Interface This section illustrates approximately how the user interface will appear and describes how it will work. When the user starts up the program, the user will see the main display window, shown below, with no data displayed initially. Initiating a selection action causes the display portion of the window to display the retrieved data. The display shows most invoice data in an Excel-like grid. As the cursor is moved through each row, that row’s invoice detail data is displayed in the window to the right, including all distribution rows. This method combines the advantages of a single row display, with the ease of viewing detail without scrolling right and left, and to see an associated list of data, i.e., the distribution data, without mouse movement, clicking, opening and closing windows, etc. Part of each line’s display is colored “LED lights” that shown either red or green, indicating the status of that variable for each invoice. When an invoice’s display lights are all green, it will be selected for export to Lawson the next time that the export program is run. All cursor movements can be accomplished with soft-keys, or with the mouse. Pull-down menus provide access to maintenance functions, such as the Scheduled Transfers list, or Vendor data, and to initiate batchtype processes that do not have interactive screens, such as the Lawson Export process. Application - main window’s display (next page) - functions include: As user scrolls through list of invoices, the Invoice Detail window shows detail data for that specific invoice line in the grid. All fields except the “LED lights” are editable. New invoices are entered by starting a row at the end. A soft key for each field in the list and detail screen allows the user to “jump” directly to that field with keystrokes only, avoiding mouse movements. The selected invoice row in the grid is highlighted. Invoice Status “led lights” (green if yes, red if no) (display only) No, indicates that the indicated value is NOT acceptable for export to Lawson, Yes (green) that it is acceptable/valid for export: M = Matched/OK (yes = green) D-S – Not a Duplicate Suspect (yes = green) D-D – Not a Duplicate definite (yes = green) Dist.- Distribution OK (yes =green) Disc - Discount calculated, OK (yes = green) Vendor – OK (yes = green) OP -Out of Period Invoice Code (not colored) M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 8 ABS Lawson AP Interface Module – Main Window Control Store No Inv No No Inv Date Due Date 2456 1234 123 11/11/11 1/11/11 2457 1234 123 11/11/11 1/11/11 2458 1234 123 11/11/11 1/11/11 2459 1234 123 11/11/11 1/11/11 2460 1234 123 11/11/11 1/11/11 2461 1234 123 11/11/11 1/11/11 2462 1234 123 11/11/11 1/11/11 2463 1234 123 11/11/11 1/11/11 2464 1234 123 11/11/11 1/11/11 2465 1234 123 11/11/11 1/11/11 2466 1234 123 11/11/11 1/11/11 2467 1234 123 11/11/11 1/11/11 2468 1234 123 11/11/11 1/11/11 2469 1234 123 11/11/11 1/11/11 2470 1234 123 11/11/11 1/11/11 2471 1234 123 11/11/11 1/11/11 * Inv Amt Pay Amt $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 $99,999.99 <-----Invoice Status--------> D D D O M S D DT C V P 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 Vendor No. x--------------x Loc Code x----x x----name, address, city, state, zip---x RO# 9999 Payment Terms Code x--------x x----p/terms text------x Dist. GL Dist. Amount Disc % 5010 60.00 5010.1 -4.00 6.67% 5030 20.00 5030.1 -2.00 10.00% 5040 20.00 5040.1 -2.00 10.00% Pay Amt $99.999.99 Current Period No: 1 12/1/01 to 12/31/01 Highlights and Work Flow Notes: Update invoice data for a store from annotated printed report. Navigation Features (complete description in Window User Invoice Actions section below) – o Control F – Brings Control Number Range window (shown below) up – select invoice range, mark all as Matched OK. o Control G – prompts for a specific Control Number to Go To. o Soft keys for direct field access (described below) M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 9 Pull Down Menus Actions Menu - include: Retrieve Invoice Data - generates new Invoice data in screen. Run Scheduled Transfers – Includes a prompt for current period and OK to run transfer. Otherwise is an unattended process. Run Transfer File Import - initiates the unattended process to process transferred files. May be removed from menu, called by Scheduled Transfers process when it is completed. Processes all transferred files, regardless of source. Run Lawson Export – calls window (below) to view the export queue, enter authorization code (matches Module Parameters value), then runs process. Reports Menu- see Reports section for details. When selected, a window is displayed listing all available reports. Selecting one causes its parameters (if any) to be prompted for, then generates the report to the screen, from which it may be viewed or printed. Maintenance Menu - includes windows for performing data maintenance on: Module parameters Stores & Vendor Locations Scheduled Transfers Vendor Dup Suspect parameters Main Screen Functional Field Descriptions - the main window, shown above, in addition to the functions summarized above for the “led lights” and menus, will work as follows: Data Retrieval - when launched, the program initially displays the screen with no retrieved data. The user will initiate the retrieval process via the Actions Menu’s Retrieve Invoice Data option. It will bring a small selection screen to allow selection of the desired Store’s invoice data to be retrieved and displayed. The window prompts for selection of a Store Number. A drop-down list displays a list of store numbers and the associated store name/location to choose from. Control Number - display only column - uniquely identifies the invoice row, independently of its invoice number or other data. Invoice Number - can be changed as needed. Store Number - accessing the field will display a drop-down arrow, which when selected, will display the Stores drop-down list. Invoice Date - can be changed as needed; must be a valid calendar date. When accessed, the drop-down arrow will display, and when selected will display a calendar to aid in the selection or entry process. The date format, when keying dates is mm/dd/yy. Due Date - can be changed as needed. The data import program will “plug” a date as needed to “force” a discount if one is applicable for the vendor. Pay Amount - can be changed as needed. If changed, but the distribution values are not also changed, the Distribution Flag will be set to red, indicating that the invoice is not in balance with its distribution. “LED Lights” - these are display only indicators that change as a result of actions taken. The Invoice Status Flags are defined above. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification Page 10 Vendor Number - this field must be in the Vendor table, replicated from the Lawson data base. When accessed, the drop down arrow is clicked, the Vendor Search window to be displayed. Or, a valid Vendor Number can be entered. When the entry is changed, the displayed name, address, city, state and zip may change. Location Code - this field must be in the Vendor Location table, replicated from the Lawson data base. A single location vendor will have a location code of “0” (zero) in the display (not in the data). Accessing the field causes the drop-down arrow to display, which when selected causes the Vendor Location drop-down list to display. When changed, the displayed name, address, city, state and zip may change. Payment Terms Code - this field is display only, being retrieved from the Vendor Location table. It may change, along with the Payment Terms Text if/when the Vendor Location Code is changed. Distribution GL - this is the key to the list of distribution rows associated with the invoice. Each row may contain either a chargeto GL Account number, or a sub-account to which a discount is to be distributed. The associated Distribution Amount is negative if the row is for a discount, positive for a charge-go GL account. It is the intention of the design at this point that the distribution structure be generated from the incoming data, adding new rows for the associated discounts that are calculated, if the Vendor’s payment terms value has a payment terms authorizing a discount. Distribution % - this is a display only field to aid in cross-checking the automated calculation process with the payment terms, to determine if the calculated discount is the correct portion of the charge-to Distribution Amount. Pay Amount - this s a display only field that indicates the amount of the check that will be generated from the invoice’s data. The balance formula is: Invoice Amount must equal the sum of the Distribution Amounts, and the Invoice Amount must also equal the Pay Amount plus the negatively valued Discount Amount rows. It repeats the Pay Amount shown in the list for the invoice. Main Screen Program Notes: For all changes to any invoice’s data, the program writes a row to the Activity Log table, specifying what field(s) were changed, which User ID changed them, and the date/time of the activity. All invoice data updates are reflected both to the data retained in memory, used to drive the display, and data in the SQL data base, so that the what the user sees on the screen is always an exact match with data physically present in the data base. All user editable fields are accessible by keys, generally the Alt key plus an underscored letter in the field label. This allows the user to quickly move around the screen, to shift from the scrollable grid display to the detail window, directly the the field of interest, without having to use the mouse. The mouse remains completely functional, however. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 11 Window User Invoice Actions: These, or similar, “soft keys” are planned to enable the user to indicate or take actions without having to use the mouse and cause various actions to be taken to the data.: Note: we have altered the definitions of some flags, to “Not…” to allow all values to be Yes when “good to go,” indicated by the color green, and for No to always be indicated by the color Red on the screen. F1 - Indicate invoice is matched to hard copy – program checks to verify that all other invoice status flags are ‘Yes/green” (associated invoice status value is OK) indicating no invalid conditions exist in the data and that the Lawson import process will not reject the data, then if it is, sets the Matched invoice status flag to yes/green. F4 – Discount calculations are correct. Sets the Discount invoice status flag to yes/green. F5 – Delete/Flag this invoice to be deleted, indicating it is a duplicate of another, previously entered and/or processed invoice. This function causes the program to dim the invoice’s data line and to disallow any field updates to the invoice’s data. Pressing the F5 key again, with the cursor on a “deleted” row, un-deletes it, resetting its status to active. The Lawson Export program will detect this Deletion flag’s condition and write it to the History tables, but not place it in the exported data tables. F6 – Sets the Not a Duplicate Suspect flag from No/red to yes/green – this allows the user to indicate that an invoice that the import program found partially matching data for is in fact, not a duplication of a previously entered/processed invoice. F8 – Select a Store’s invoice data to retrieve and display. Initiates the Store selection window, clears the main data window, and repopulates it with data from the selected Store Number. F9 – Store Batch Audited – pressing this key brings a confirmation dialog box, then if OK’d, writes a row to the Export Queue table, indicating that the store’s main batch of invoices have been audited, their matched flags set to no/green, and that the person responsible for running the Lawson Export process can do so for this store’s batch. Alt + V – moves the cursor from any field in the Invoice row data (within the grid) to the Vendor Number field in the Invoice Detail window. Alt + L – moves the cursor from any field in the Invoice row data to the Vendor Location Code field in the Invoice Detail window. Alt + D – moves the cursor from any field in the Invoice row data to the first row in the Distribution GL sub-grid in the Invoice Detail window. Alt + A – moves the cursor from any field in the Invoice row data to the first row in the Distribution sub-grid, positioned in the Distribution Amount column, in the Invoice Detail window. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 12 Other invoice status flag resetting actions – these flags are changed when the data condition that caused them is corrected and include: Vendor Number – this flag indicates that an invalid vendor number is present in the invoice. When it is corrected in the Invoice Detail window, the flag is reset to Yes/green. Distribution – this flag indicates that the distribution was not in balance (flag set to No) with the invoice total amount to be paid, normally due to a data error in the imported data. When the algebraic sum of the distribution rows, as shown in the Invoice Detail window for the invoice is in balance with the Invoice Amount (Distribution Amounts sum = Invoice Amount, and Invoice Amount minus Discount Amounts = Pay Amount), then the Discounts flag is reset to yes/green. Discounts – this flag is set to No when the data import program encounters a data discrepancy while attempting to calculate payment discounts. This condition results from any discrepancy encountered by the data import program while it was attempting to calculate the discount amounts for the invoice. It is reset by accessing the Invoice Detail window for the invoice and correcting the Discount calculations manually. When the window is exited, the program will reset the Discounts flag to yes/green. Out of period Invoice Code – this is a single digit code that is normally zero, indicating that the Invoice Date is/was the current accounting period at the time it was imported or entered. If it is not, the following codes will appear. These codes do NOT prevent the invoice from being exported for Lawson import. The codes are: 0 = invoice date within current period 1 = invoice date not within current period, determined by Data Import program. 2 – 9 indicate that the invoice was entered in the Module’s screen, i.e., it was not imported from and ABS data source, with the reason as indicated by the user. These exact code values will be determined later in the project and are stored in the OP_Reason_Code reference table. Control Number Range Selection – pressing the Control + F key combination brings a prompt window allowing the user to select a range of Control Numbers to be flagged as Matched. The window resembles the following: Matching Range Selection From Control Number x---------x To x---------x OK to Flag as Matched? Yes M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 13 The range must be within the range for the Store selected, i.e., the data is viewable in the window. The window’s Control Number From and To windows have a drop-down list selection with the control numbers appearing in the window for selection. If an invalid Control number, by this definition is entered, the program rejects the entry. When the Yes button is clicked, an “Are you sure?” dialog box appears, allowing for Yes or Cancel options. Cancel returns the user to the main window, while Yes selects all rows shown in the window for processing and attempts to flag all rows as “no/green”. When processing is completed, including updating the data base as well as the screen’s data, a message box appears with one of two messages: “All selected invoices flagged as Matched successfully” “Invoices with the following control numbers had one or more invoice status flags indicating an error condition, and so could not be set to Matched, followed by a list of Control Numbers that did not have their Matched flags reset. New Invoice Entry – the screen also allows entry of a new invoice’s data by using the last row of the grid. All validations described for the fields above to allow changes also apply to this process, including vendor selections and other steps. The Out of Period Code field is accessible only for entry of new invoices, and its values are selectable from the OPReasonCode reference table, except that the values of 1 is reserved for use by the import program. The default is zero, and the user can click and get the drop-down list, showing all values available in the table, along with the text explanations of each code. Once the row is saved, the value cannot be changed. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 14 Secondary Windows - these are windows called from within the main window, accessed by selecting from the Maintenance menu. These windows are described below in terms of the fields they will have, but not the physcial appearance. All are simple windows with a group of data fields that are entered or changed, then the screen is saved by clicking on a “Save” button. Module Parameters This window maintains a single record in a table, which has a single field for each parameter. It is used to set the location on the Lawson server where transferred files are to be moved to, enter the Authorization Code needed to access both this screen and to run the Lawson Export process, and to change the current period data. The maintenance window will resemble the following: Field Notes: Working File Path - the location on the server where the Scheduled Transfer program is to place the uploaded files. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification Page 15 Authorization Code – this field is the “password” that must be entered to access both this maintenance window, and to run the Lawson export process. Period Number – this field is selectable from a drop-down list consisting of entries in the Period_Reference table. When one of the rows is selected, the period number, and its dates are stored in the Start and End date fields of the Module Parameters record. Current Period Dates - these dates establish the values for the current accounting period, used to determine whether an invoice that is being imported has a date that, at the time of import, fell outside of the current period’s start and end dates. Display only. Duplicate Suspect Flags – revised (12/2/01) logic. There are two conditions, either one of which will result in setting the setting of the Duplicate Suspect Flag to Yes. These are: o Invoice Starts With % – this field contains a decimal value, used as a percentage of the number of characters to be used in comparing the subject invoice with one or more possible targets, “subject” indicating the invoice that is being imported. The process consists of counting the number of characters in the subject invoice’s invoice number, multiplying this value by the Invoice Starts With % value to obtain the portion of the Invoice number that is to be used to attempt to identify one or more possible “target” invoices. If this process returns one or more invoices with invoice numbers that begin with this portion of the subject invoice’s invoice number, the Duplicate Suspect Flag is set to ye/red.s. o Invoice Amount and Invoice Date Matches – this process consists of using the subject invoice’s date and amount values and attempting to retrieve one or more invoices from the active and history tables. If it results in any resulting data, the Duplicate Suspect Flag is set to Yes/red. Global Vendor Update Option – when the screen is saved, if the Duplicate Suspect values have changed, the user is prompted for the option to reset all Vendors with the new options that may be in the VendorDupSuspectOverride table. Essentially this will clear the table, since the Vendor DupSuspect Override table contains only rows that have logic that is to override the default values. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 16 Stores and Store/Vendor Locations This window maintains the list of stores and the associated Vendor Locations associated with that store. This window resembles the following: Work Flow Purpose – this screen is used to establish both valid stores, as defined and used with the Module, and to link the store with one or more Vendor Locations, so the data import program can correctly identify the Vendor Location to be used, if one is applicable. The Store Code is provided to allow for use on reports. Field Notes: The top portion of the screen updates the Stores table, and defines valid stores and store names (locations) within the Module. The lower portion of the screen establishes Vendor Locations that are specific to this store. This data is stored in the Store Vendor Locations table, since the same Vendor location can be used by multiple Stores. Specific field requirements are: M2 Automotive - ABS to Lawson - AP Interface Module Design Specification Page 17 Store Number – display only, same as the Store ID shown in the upper portion of the screen. Vendor No – required entry – must be in the Vendors table, clicking on the field brings the Vendor Search window, from which a Vendor Number selection may be made, or the value may be entered directly. Location Code – must be in the Vendor Location table, for the previously entered Vendor ID. Click on the field brings a drop-down list of locations for that vendor, from which a selection may be made, or a value may be entered. The Name and Address data is display only, retrieved from the Vendor Location table. Scheduled Transfers This window maintains the data used by the automated file transfer program. It tell which locations will have files to transfer, where the files are, their suffixes, and what day in the week the transfer is to be attempted. This window resembles the following: Work Flow Purpose – this screen is used to setup data transfer from each Store. Multiple transfers from the same store in the same week can be scheduled if desired. It controls where the data is to be found, and the day of the week you want it transferred. Field Notes: M2 Automotive - ABS to Lawson - AP Interface Module Design Specification Page 18 Path - computer name and directory where the target file is to be searched for, using the \\servername\directory1 naming convention. ScheduledTransferWDay - weekday (0 = Sunday, 7 = Saturday) that the user wants to have any file generated by the users at the corresponding store located and transferred to the server. Vendor Duplicate Suspect Override This window provides maintenance to a purpose-specific table, the Vendor Duplicate Suspect Override table. This data is separate from the Vendor and Vendor Location data replicated from Lawson. Its window will resemble the following: Field Notes –One row is entered for each vendor that is to have Duplicate Suspect determination logic that is different from the default, or system logic. To remove the override condition for a vendor, the row is deleted. Tthis window has the following field logic: Vendor ID – must be in the Vendors table Duplicate Suspect Invoice No. % - this value will override the default (system) value during the Duplicate Suspect process when processing invoices having the this Vendor ID. Duplicate Suspect Amount/Date Flag – this is a yes/no flag that overrides the default equivalent. Modified Date Time – date time stamp when the row was last modified. User ID – user ID of the person last entering or modifying this row. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 19 Email Control List Maintenance This window allows maintenance of the Email Control table’s data. This data drives the Email Engine used to generate and email reports automatically. The maintenance window resembles the following: Field Notes: Report Code (RptCode) - identifies the row in the Report Definitions table that is to be run and emailed to the person Report Name - display only field showing the report’s menu name from the Reports Definitions row for the selected report. Name - full name of person associated with the email address. Store Number - store number associated with the person; may be “000” to indicate an email address that is at a corporate (not at a store). The entry must be in the Stores table. Store “000” indicates corporate. Email Address - email address to be used by the Email Engine for this person. UserID - display only field showing the user ID of the person last updating this row. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification Page 20 Modified Date Time - display only field showing the last time this row was updated. Action Menu Windows - the only function in the Action menu with a window is the Lawson Export process. When selected, a window is displayed resembling the one shown below. The user enters the appropriate Authorization Code, selects the desired Store to Export from the list by clicking on it, then saves the screen. The program then starts processing the invoices into the Lawson export tables. The details of the process are described in the Detailed Functional Logic section of this specification. Field Notes: Authorization Code – the user must enter the current value of the Authorization Code, as shown in the Module Parameters window to be able to save this screen and generate export data for Lawson. If the Authorization Code is forgotten, the System Administrator can reset it via direct data base maintenance. Store Number – the user clicks on the Store Number(s) for which export files are to be generated. The data shown is from the Export Queue table, which is populated by entries from the main screen, with users indicating that the Store number they are working on, and is displayed in the screen, has been audited and is ready for export. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 21 Drop-down Lists/Windows - these are simple lists of one or two fields that the user selects from when entering data. It is the list of valid selections for that field. Within the grid listing invoices, we envision drop-down lists for the fields below. The drop-down list arrow appears when the cursor is moved to that cell/column within the grid; Store Number - contains store number and name/description of the store. Invoice Date and Due Date - these cells will display a calendar function as the drop down list. Invoice Detail window - we envision the need for simple drop down lists for the following fields: Location Code - once a vendor has been selected, the Drop-down list for the Location Code will display the Code value, name and address data for that location within the selected vendor, if the vendor has multiple locations. Distribution GL - this list contains the GL Account and Discount GL Account values from which a selection can be made. Any given line in the Distribution GL list for an invoice can be either a GL account to which the purchase is to be charged, or a discount GL sub-account to which a calculated discount is to be charged. Vendor Search Window - this is a window that provide the ability to search for vendors using the Search Name of the vendor. It returns a list containing the Vendor No. and Search Name for all those matching the entered text. It is a “contains” search, meaning that the search program will return all those Vendor records that somewhere in their names have the character string entered. The returned list is then used to select a Vendor Code/ID in the Invoice Detail window for an invoice. Vendor Location – this lists the locations for a given vendor. Appears within the Invoice Detail Window. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 22 Detailed Functional Logic This section contains detailed specifications for each program and its associated process logic. Data Transfer - this program reads the Transfer Schedule and Transfer History table data to identify stores with data to be transferred to the server for importing into the Reconciliation Module. There is no screen, other than a form displaying progress and displaying any error messages. It is started by selecting an option within the main user window. It performs the following steps: Upon selection, retrieves the current accounting period number, start and end dates, then prompts the user to verify that this is the correct period, allowing to Cancel or Continue as options. This process then calls the actual Data Transfer program. Determine Store Transfer Schedule via the following steps: o From the Scheduled Transfers table, selects all rows. o For each selected Scheduled Transfers row, attempts to find a matching row in the Transfer History table. Matching logic determines if a Transfer History row for the matching store exists that has a week-day (Scheduled Day) value that falls within the current week (current week day converted/calculated to current week day range). o If the program finds a match between a Scheduled Transfers row and a Transfer History row, the Scheduled Transfers row is removed from the list. o When the cycle is complete, the resulting list is those Stores for which a transfer is scheduled for the current day or prior, but that has not been successfully completed. For each Store in the Store Transfer Schedule list, performs the following: o Using the ODBC connection, attaches the Stores Server. If connection fails, writes a row in the TransferHistoryErrors table, with the Action message of “ODBC connection failed.” The Scheduled Transfers row being processed is then skipped. o If the ODBC Connection succeeds, but the program fails to locate the file to be transferred, using the Path value in the Scheduled Transfer row being processed, writes a row in the TransferHistoryErrors table, with the Action message of ‘File not present in designated directory.” The Scheduled Transfers row being processed is then skipped. o If the file retrieval fails for any other reason, the program writes a row in the TransferHistoryERrors table, with the Action message of “other.” The Scheduled Transfers row being processed is then skipped. o The located file on the store’s server, using the successful connection and location, is then checked for possible duplication by attempting to retrieve a row from the TransferHistory table, matching the located file’s name to the TransferFileName field. o If a duplicate is identified, the program writes a row to the TransferHistoryErrors table, with the Action text of “Duplicate file name.” The Scheduled Transfers row being processed is then skipped. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification o If there is no duplicate, the file is moved/transferred to the local Server, using the Working File Path value in the Module Parameters record. Once the move is successful, the program writes a row in the TransferHistory table, with the file name transferred and datetime stamp. This completes the transfer process. The program continues to the next Scheduled Transfer row. Data Importer - this program reads the transferred tables, in matched pairs of APCINVOICE and APCDISTRIB tables, one invoice at a time, and copies each invoice’s data into the Temporary Invoice tables. This is a raw copy to move the data in its exact form from comma delimited file format into SQL data tables. When started, the Data Importer retrieves all Transfer_History table rows without an ImportDateTime value. These are the file pairs that have not been imported yet. Each pair of files is processed in turn. As the file is successfully imported, the associated ImportDateTime value is updated. Invoice Validation - this process is called by the Data Importer program and runs after the Data Importer has completely transferred one or more files into the Temporary tables. The objective of this process is to perform as much of the checking and reconciliation process automatically as possible. Also, it is an objective to get as many invoices into a completely valid state as early in the cycle as possible, and with as little human intervention as possible. Each invoice, and its associated distribution rows are retrieved from the Temporary tables, processed and written to the Working tables. The Temporary table rows are then deleted. All rows are transferred, regardless Page 23 of validation state, so that at the end of the process, the Temporary tables are empty. The steps include: Vendor Number validation - uses the Vendor Code in the incoming data to attempt a retrieval of a matching Vendor Code row in the Vendors table in this Module. If successful, set the VendorFlag to Yes. If not, sets it to No. Detection of Duplicate Invoices - this logic matches at two levels with the process defined below. The settings for the Suspect Duplicate Flag determining process are obtained by first selecting the values from the Vendor record for the invoice, and if none are present, by selecting the settings from the Module Parameter record.: Using the just imported row as the Source invoice, attempts to locate possible Target duplicate rows in the Active and History Invoice tables. Not Definite Duplicate - Using the source invoice’s Invoice Number as a retrieval, selects invoice rows from both the Active and History Invoice tables. If any rows result, sets the Not Definite Duplicate Flag to No, and writes the returned data to the Definite Duplicates table. If no data is returned, the flag is set to Yes, indicating that there are no definite duplicate invoices elsewhere in the data base. Not Duplicate Suspect – This process uses two distinct tests, either one of which can result in setting the Not Duplicate Suspect flag to No. Both tests are performed in any case, to avoid overlooking possible duplicates. Using the settings for either the vendor or the default settings, performs both tests. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification Starts With Test – steps are: o Calculate the number of characters to use in the Starts with Search by counting the invoice number’s number of characters, then multiplying by the Duplicate Suspect Invoice Number % value. o Using the resulting value, attempt selections using “Starts With” logic for potential target invoices in both the Active and History tables. o If data is returned, it is written to the Suspect Duplicates table, and the NotDuplicate SuspectFlag is set to No. Invoice Date and Amount Test – steps are: o Using the Source invoice’s Invoice Amount and Invoice Date fields, attempt selections on both the Active and History tables for invoice rows having both values that match the Source invoice’s data. This is an “and” search, in that both values must be true to get a matching invoice row. o If data is returned, is it written to the Suspect Duplicates table, and the Not Duplicate Suspect Flag is set to No. If any of the fields involved in the duplication process are shown in either the Vendor Dup Suspect Override table row for the invoice being process, or the Module Parameters table as being “turned off”, it is not included in the Suspect Duplicate Flag setting process. The Invoice number % field is “turned off” by entering a value of zero, indicating that none of the invoice number is to be used, or 1.00, indicating that only the complete invoice number is to be used, i.e., the same as the definite duplicate test. Page 24 Discount Calculation - the program retrieves the payment terms for the vendor shown in the invoice from the Vendor table, or there is a Location Code, from the Vendor Location table. If the payment terms does have a discount percentage, the distribution rows are modified so that there are additional distribution entries (rows) for each associated charge-to GL number, with a negative value being calculated using the payment term’s discount percent value. The process also inserts a Due Date value, using the payment terms data. If this process is performed, successfully, the Discount Flag is set to Yes. If any error condition is encountered, it is set to No. Distribution Validation - checks the total Distribution Amounts for the invoices distribution rows to be sure that the algebraic sum of the distribution and pay amount equals the invoice amount. If it does, the Distribution Flag is set to Yes. If not, it is set to No. The complete calculation verification is as follows: Invoice Amount = the sum of non-discount GL distribution rows, i.e., positive values. Pay Amount = Invoice Amount plus the sum of all discount GL distribution rows, i.e., the negative values. All invoice and distribution rows are written to the Working tables as each set is processed. The program then deletes the Temporary table rows just processed, and restarts the process by reading the next invoice row and its associated distribution rows, until the Temporary tables are empty. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification Out of Period Identification - the program retrieves the currently valid accounting period’s start and end dates from the Module Parameters table. Each invoice’s Invoice Date is compared to this date range, and if it does not fall within this date range, the Out of Period Reason Code is set to 1. Otherwise, it is set at 0 (zero). Lawson Export Process – after the menu selected window has been displayed, the Store to be process entered or selected, and the Authorization Code entered, the program then performs the following steps: Selects Invoice rows from the Active_Invoices table having the selected Store Number, and that also have Yes (true) values for all Invoice status Flags. Copies each Invoice’s data, and its associated Active_Invoice_Distribution rows, identified by the RowID for the selected invoices in the distribution rows, into the Export tables and History tables, one invoice at a time. Invoice rows where the Active Invoice data has the Deleted flag set to Yes (true), are copied to the History tables, but not to the Lawson export tables. After each invoice’s data is copied successfully, and the rows written to the data base, the source data rows are deleted from the Active Invoices tables, and the Number Invoices counter is incremented. As is stated in the table dictionaries in Appendix 1, the fields are matched field name for field name, so there is no cross reference table here. Any table’s field in the Active Invoices or Distribution tables without a corresponding field in the History or Export table formats is not copied into the respective table. Generally, this means that the entire Active record is copied into the History table, but Page 25 only the fields without “-IN” in their field names are copied to the Lawson Export tables. The process continues until all selected invoices rows have been successfully processed, at which time the Lawson Export Log record for the run is written to the table. The Export Log table row, from which the selection was initially taken is deleted. A process window is displayed while the program is running, showing the store number, the number of invoices selected, and number completed. Email Generation - this process reads the Email Control table and performs the following steps: Determines the weekday. Selects all email control rows with the scheduled weekday earlier than or equal to the current weekday. Eliminates those email control rows that have a matching entry in the email history table, indicating that the scheduled event has already been completed. This leaves a list of emails to be generated. For each resulting Scheduled Email, performs the following: o Using the indicated RptCode, retrieves and runs the identified Crystal Report, automatically exporting it as a Microsoft Word document. o If the .rpt file is unavailable, generates an Email Action Table entry with an action message “Report file unavailable.” o Generates an email, using the email engine, to the designated address, with the just generated, exported report file as an attachment. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification o If an error condition is encountered during the process, an Email Action table entry is generated with an appropriate error message. Otherwise, the Email Action table row generated indicates successful completion of the report and email. Background/Other Processes Vendor Data Replication - Page 26 Report Development Component, not the desktop Crystal Reports Development environment, to generate and otherwise process reports. All inquiry/data viewing will be provided via Crystal Reports created views. At this point, we envision the following reports: This process attaches the Lawson data base, clears the data from the Vendor and Vendor Location tables in this Module, and re-copies the tables completely from the Lawson source data, eliminating any possibility of the data becoming “our of synch.” This is a background, scheduled process initiated periodically as a scheduled SQL Job on the server. There is no direct user interface. Payment Terms Replication This process attaches the Lawson data base, completely replacing the Payment Terms table with the latest Lawson data. It serves only as a way to display Payment Terms Text that is associated with the Payment Terms Codes present in the Vendor Location and Invoice data. This is a background, scheduled process initiated periodically as a scheduled SQL Job on the server. There is no direct user interface Reports Menu The reports menu will be driven from a Report Definition table, so Crystal Reports can be added without modifying the program. The Reports program uses the Crystal Decisions Active Invoices –Selected by Store, sorted by Vendor ID Exception Reports - a family of reports including examples such as the following: o Invalid vendor ID o Unknown Vendor Location Code o Invoices not matched to hard copy o Duplicate suspects o Duplicate - definite o Distribution out of balance o Discount calculation error o Out of period invoices. o Others to be defined Transferred Invoices - exported to Lawson lists by various sort, selection criteria Activity Log - change activity for a range of invoices, various sort, selection criteria. Store Specific Errors - various including not entered by store, duplicate entries, entry errors. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - Page 27 Appendix 1 - Data Base Design Specifications Reference Tables - these tables contain relatively static data used to manage the flow of invoice data through the Module. StoreVendorLocns – this table relates a given store number to a single Vendor Location, and allows the same vendor location to be automatically determined for any number of stores. It is maintained via a user window. Its fields are: Module_Parameters table - this table contains one record, with fields for each parameter used to manage, setup and control various aspects of the programs and their functioning. Fields include: Row_ID - integer, unique identifier, sequential WorkingFilePath - 50 char field - location on the local server to which files are transferred for importing into the Working tables, using the \\servername\directory convention. AuthorizationCode – a password like value used as a simple system security code. Control access to the Module Parameters window itself, and is required for a user to run the Lawson Export process. PeriodNumber – number of the currently open accounting period. Selectable from the PeriodDate reference table. Current Period Start Date - used to determine whether invoice dates are out of the current period when the import process is run. Populated from the PeriodDate reference table when the period isselected by the user. Current Period End Date used to determine whether invoice dates are out of the current period when the import process is run. Populated from the PeriodDate reference table when the period is selected by the user. InvoiceNumber% - this is a 2 decimal value, used as a percentage, in determining which portion of an invoice’s invoice number is to be used in attempting to locating possible matching invoices. InvoiceDateAmount – a yes/no flag indicating whether to use the combined invoice date and amount fields as a method of identifying potential (suspected) duplicate invoices. Stores - this table contains one row for each store in M2’s network. RowID - integer - incremental, unique identifier for the row. StoreID - 6 character field - store number StoreName - 50 char text string identifying the store’s location/name. Store_Code - 2 character code identifying store DateTimeModified - date time field. RowID – unique, sequential identifier. StoreNo – store number – must be in Stores table. Vendor No. – vendor ID code, must be in the Vendors table. Location – location Code, must be in the Vendor Location table, with a matching associated Vendor No. ModDateTime – date time stamp when updated. UserID – User ID of person last updating the table. Vendors tables - these tables are a replication of the vendor data tables within the Lawson system’s data base. The replication process detects when vendor data in the Lawson data base has been added or changed, updating the data in these tables. There are two tables in the vendor data, a root, or main table, and separate table for each vendor’s locations. Each location can have a separate address and payment terms for invoices, as with the Lawson data structure. Vendors - this table contains one row for each “root” vendor ID in the Lawson data base. Its fields are the same field names as in the APVENMAST table in Lawson, from which this data is copied. All fields copied from Lawson are text type. VENDOR - vendor ID in Lawson; unique, non-duplicated number; also serves as the row ID in this table. VENDOR_VNAME (“Legal name” on screen) VENDOR_SNAME (“Search name” on screen) VENDOR_CONTCT ADDR1 - this address serves as the vendor’s “main” address. ADDR2 CITY_ADDR5 STATE_PROV POSTAL_CODE CREATE_DATE - from Lawson M2 Automotive - ABS to Lawson - AP Interface Module Design Specification ORIGIN_DATE - from Lawson TERM_CODE TAX_ID DateTime_Modified - date time stamp for when row last updated by the data copy/import process. VendorDupSuspectOverride – this table contains a row for each vendor that is has fields to override the Duplicate Suspect logic, used in the Data Import process. It is a separate table to allow the Vendor and Vendor Location tables to be completely rebuilt without losing these data fields, and to provide a much smaller, dedicated purpose table. It is maintained via a user window. Its fields are: RowID – sequential, unique identifier for the row. VendorID – must be in the Vendors table InvoiceNumber% - this is a 2 decimal value, used as a percentage, in determining which portion of an invoice’s invoice number is to be used in attempting to locating possible matching invoices. InvoiceDateAmount – a yes/no flag indicating whether to use the combined invoice date and amount fields as a method of identifying potential (suspected) duplicate invoices. Vendor_Locations - this table contains one row for each location for each vendor in the Vendors table. Only the second and subsequent addresses for a vendor are stored in this table. The main vendor address is in the VENDOR record. All data is copied except for the Store Number field. All fields are Text type, except DateTimeModified. The tables fields include: VENDOR - vendor ID in Lawson and in Vendors table. LOCATION_CODE - Location code in Lawson; combines with VENDOR to create a unique key for the row. VENDOR_VNAME (“legal name” on screen) ADDR1 ADDR2 CITY_ADDR5 STATE_PROV POSTAL_CODE TERM_CODE - if present, overrides TERMS_CODE in VENDORS row; blank if no override. Page 28 DateTimeModified - date time stamp for when row was last updated by the copy/import process. Payment Terms - this table is replicated from Lawson data so the discount calculation process will have the data it needs to run (discount date intervals and percentage values), and the text equivalent for the code can be displayed. The fields are the same names as in the TERMS table in Lawson, from which the data is copied. All fields are text type except as noted. The table is completely rebuilt each time the import/copy process is run. Only the fields with data that will be used within the Module is copied. The key design and operating assumption with this data is that all discounts possible will be calculated, regardless of the invoice date. TERMS_CD - unique identifier for the payment terms. RDESC _-01 - payment terms descriptive text DISC_PCT_01 - discount percentage, stored as a 1 decimal number, e.g., “0.02” for a 2% discount. DISCOUNT_DAY_01 - number of days to be eligible for a discount, calculated from the Invoice Date, stored as a number, e.g., “30” for 30 days. GL_Reference - this table contains one row for each GL number used within the Module. No user window is provided. It is a manually maintained subset of the full Chart of Accounts used by the company, containing only those GL accounts for distribution, and forms a template for how discounts for each distribution are to be generated. Fields include: RowID - unique, sequential identifier GLAccount - account number in the General Ledger system’s Chart of Account. AccountDescription - text description of the GL account number. DiscountGL - GL account number to be used for discount amounts charged to the GLAccount number. Includes sub-account portion of the GL number, e.g., 5010-1 for a distribution to the 5010 GL account number on an invoice where the vendor’s payment terms involves a calculated discount. DiscountGLDescription - text description of the subaccount for discounts. DateTimeModified - date time stamp of when the row was last updated. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification OP_Reason_Codes (out of period reason codes) – this small reference table, maintained by System Administrator (no user window) allows nonhard coded reason codes, changeable text equivalents, and ability to add new codes without altering program code. Its field are: OP_Reason_Code – single character value, unique, no duplicates, stored in data and used in display and prompts. Code_Description – text explanation for the associated code. Report_Definitions - This table is only maintained by a developer. There is no user-accessible menu. It stores the menu/display name for each Crystal Report used within the Module, and associates it with the actual .rpt file name. The data in the table is used to generate the Report menu within the Module’s main window. Its fields are: RowID - unique, sequential, SQL assigned identifier RptCode - developer assigned code for the specific report; 5 characters. MenuName - short text string for display in the Report Menu. CRFILName - actual Crystal Reports file name. Comments - documentation notes by developer. ModifiedDate - date time the row was last modified; SQL generated. Email_Control - this table provides the data for the Module’s email engine and links specific RptCodes in the Report Definitions table to specific email addresses. RowID - unique row identifier, SQL assigned RptCode - report code from the Report Definitions table that is to be run and emailed to the person in this record. Must be in the Report Definitions table Name - text name of the person to whom the report is to be sent StoreNo - store number of person to whom the email is addressed. “000” indicates that the addressee is a corporate (non-store) addressee. EmailAddress - actual email address to which the report is to be addressed. UserID - login user Id of the person last updating this row. ModDateTime - date time stamp when the row was last updated. Page 29 EmailActionLog - this file contains one row for each action taken by the EmailEngine within the Module. It identifies the report, addressee and datetime stamp for each report generated and emailed. Fields include: RowID - unique, incremental SQL Assigned integer RptCode - Report Code identifying the report that was run. Name - name from the Email ScheduledEmailWDay - weekday (0 = Sunday, 7 = Saturday) that the associated report is to be run and emailed to the designated user. EmailAddress - actual email address used EmailDateTime - date time stamp the report was generated and emailed. Action - text string indicating action taken by the Email Engine. Valid entries are: “Sent”, “No Rpt Code”, “Rpt Not Available”. ABS Data File Transfer Management - these files control the process of identifying where ABS data export files are located, and when each is to be transferred to the reconciliation data base’s directories for processing. Scheduled_Transfers table - this table contains one record for each store and scheduled transfer weekday combination. Each scheduled transfer is matched with a successful transfer from that store and appears in the corresponding Transfer_History table to fulfill the scheduled event. The table is designed so that if multiple scheduled transfers within one week are desired, the user simply adds an additional row. The software must check for duplicate Stores and Scheduled Transfer Week Day. The File Transfer Scheduler program attempts to locate files to transfer for each location each time it is run, if the day of the week is earlier or equal to the run day. The process automatically transfers the files exported from ABS and placed in the designated directory on the server from which the files are to be transferred. The Configuration table includes a parameter record informing the program where the files are to be transferred, so the data import program will locate them correctly for processing. The fields in this table include: RowID - incremental row assigned by SQL, unique. StoreID - store identifier code or number; must be in the Stores table. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification FileName - expected pattern of file name to be transferred (may not be needed) Path - computer name and directory where the target file is to be searched for, using the \\servername\directory1 naming convention. ScheduledTransferWDay - weekday (0 = Sunday, 7 = Saturday) that the user wants to have any file generated by the users at the corresponding store located and transferred to the server. DateTimeModified - date time stamp when row was last updated. UserID - Win NT domain login ID of person last updating the row. Transfer_History table- this table corresponds to the scheduled transfers table, except that it contains one row for each successful transfer. A file of the same name may not be transferred more than one by the transfer program. RowID - incremental row ID assigned by SQL, unique StoreID - Store ID ScheduledTransferWDay - weekday (0 = Sunday, 7 = Saturday); shows the scheduled transfer day that was fulfilled by the successful transfer process. When matched with the corresponding Scheduled Transfers row, calculated for the week being processed, this indicates to the program that the scheduled file transfer for that store has occurred successfully. If there is no match, the transfer is attempted. TransferFileNameInvoices - actual file name of the file transferred TransferFileNameDistribution - actual file name of the matching file transferred. TransferDateTime - date time stamp when the file was transferred ImportDateTime - date time stamp for when this row’s pair of files was successfully processed/imported into the Working tables. TransferHistoryErrors - this table contains one row for each attempt the Scheduled Transfers program makes to connect to a store’s server for file transfer, but the transfer fails. Fields are: RowID - sequential, unique identifier StoreID - store ID for the scheduled transfer Wday - scheduled transfer week day that was attempted DateTime - date time stamp of when the attempt was made Action - Text string indicating reason for the failure - values are: Page 30 o o o o ODBC connection failed File Not Present in designated directory Other Duplicate File name Period_Reference – this table contains one row for each accounting period. It is maintained only through Enterprise Manager, having no user accessible update window. It serves solely to provide reliable data for user selection and display of accounting period numbers and the associated period start and end dates. Its fields are: Row-ID – sequential, unique identifier PeriodNo – period number, 2 digit number indicating the period PeriodStartDate – date, indicating the first working/calendar date for the period. PeriodEndDate – date, indicating the last working/calendar date for the period. Lawson_Export_Log – this table contains one row for each time the Lawson Export program is run. It summarizes each run of the program, and provides a link back to specific invoices that are present in the History tables. Its fields are: RunNumber - sequential, unique identifier, incremented by each run StartDateTime – date time stamp of when the run was started. EndDateTime – date time stamp of when the run was completed. NumberInvoices – integer, the number of invoices written to the History tables. UserID- person performing the export process for this run. Export_Queue – this table is written to by user action within the main window. It indicates which Store numbers have had the bulk of a given batch of invoices audited, flagged as matched within the window, and are therefore eligible for export to Lawson. The rows are used to prompt for selection for stores to be processed for export by the Lawson Export process, and are deleted from the table after the export process has run successfully, generating a row in the Lawson_Export_Log table. RowID – sequential, unique, sequential row identifier M2 Automotive - ABS to Lawson - AP Interface Module Design Specification StoreNo – store number ready for export processing UserID – Windows NT Domain login user ID of person indicating that this Store is ready for export processing. DateTime – date time stamp when the row is written Temporary Tables - these tables are temporary tables populated by the initial data import from external tables. Once each file is imported, the second step of validation and error checking is performed, which transfers the data from the temporary table to the Working Tables, one invoice with its associated distribution data, at a time. The field names are the same as the source and export files, as well as some of the fields in the Working tables. Temp_Invoice (from APCINVOICES table) - the .APT suffixed files are copied directly into this temporary table: RowID - unique, sequential row identifier assigned by SQL. CVI-COMPANY - (numeric, 4; ABS = CORP_ID) - constant 2000 for all records (Field 1) CVI-VENDOR - (alpha-numeric, 9) - Vendor Code (field 2) CVI-INVOICE - (alpha, 22) - invoice number (field 4 CVI-VOUCHER-NBR - (alpha-numeric, 10, ABS=RO#XXXX) contains the RO number from ABS, as “RO#9999” format (field 7) $CVI-PROC-LEVEL - (alpha, 3, ABS=REG_APPROCESSED) (field 9) CVI-INVOICE-TYPE - (alpha, 1, blank for invoice, C for credit memo) (field 11) CVI-INVOICE-DTE - (numeric, 8, ABS=INVOICE_DATE) - Invoice Date as shown in data imported from ABS. Data in the import file is in yyyymmdd format. Convert to SQL date format during import. (field 14) CVI-DESCRIPTION - (alpha, 30, also carries the RO number as “RO#9999.” (field 20) CVI--BASE-INV-AMT - (numeric 15. 2 decimals; sum all for this invoice; if invoice type = C, credit memo, the negative value in ABS is converted to a positive value for Lawson). - This is the Invoice Total Amount. (field 21) Page 31 CVI-TRAN-INV-AMT - (numeric, 15, 2 decimals; same as CVIBASE-INV-AMT) (field 22). Temp_Distribution (APCDISTRIB) table - the .APD suffixed files are copied directly into this temporary table: RowID - unique, sequential identifier, assigned by SQL. CVD-COMPANY (numeric, 4, ABS=CORP_ID) (field 1) CVD-VENDOR (alpha numeric, 9, ABS=AP_NO) (field 2) CVD-INVOICE - alpha, 22, ABS=INVOICE_NUMBER) (field 4) CVD-DIST-SWQ-NBR (numeric, 4) (field 6) CVD-ORIG-TRAN-AMT- (numeric, 15, 2 decimals; $ Amount of distribution; value must be positive, credit memo Inv-Types are converted to positive values for Lawson. Null if the invoice was entered directly. (field 7) CVD-DIS-ACCT-UNIT (alpha, 15) - (field 11) CVD-DIS-ACCOUNT - (numeric, 4) - GL account of distribution amount, (field 12) CVD-DIS-SUB-ACCT - (numeric 4) (field 13) CVD-DESCRIPTION - (alpha, 30) (field 15) Working Tables - these tables are where all invoices are processed. They are, in effect, interposed between the Lawson formatted tables generated by the ABS store systems, and the similarly formatted tables generated from these data, only with 100% “clean” data, ready for smooth import into Lawson’s AP module. Source tables are the APCINVOICES and APCDISTRIB files from each store. These are imported as is, with potentially changeable data fields being written permanently into fields with a “-IN” suffix, the same data values written to the same field name without the suffix. The editing, validating and reconciliation process updates only the non-‘in’ fields, preserving a clear audit trail back to the source tables without having to view them directly. As changes are made to the tables data, the Audit History table is updated to provide an audit trail of what was changed and when. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification If an invoice is entered directly into the edit screen of the Module, i.e., was not present in an imported invoice file’s data, the “-IN” field is left null/blank. Page 32 Any invoice that is to be deleted, is not physically removed from the table, but simply has a Deleted flag set, and the data is transferred to the History tables. Each invoice has a set of flags that indicate its status. When all of the status flags are set to Yes, the invoice will have its data copied to the next Lawson export file created, and then transferred to the Invoice History tables, removed from the Active Invoice tables. The flags provide a clear, unambiguous way of identifying exactly what is not acceptable about each invoice, and provides a clear basis for each exception report and for metrics. Active_Invoices (from APCINVOICES table) - this table contains all invoice “header” information, i.e., that occurs once per invoice. The rows are those invoices that have been imported from the ABS export/interface tables, but that have not yet been exported to the files for import to Lawson. Once exported to Lawson, the data is transferred to the History_Invoices tables. Associated with each row are a set of binary (yes/no) data fields (“flags”) that indicate the status of each invoice. When all status fields are “yes” the invoice is a candidate for exporting from the Module and importing into Lawson without errors. The status fields indicate unperformed steps or data error conditions. Some flags are set by the user, with most being under control of a program/process that determines what the condition should be. The tables fields include: RowID - unique, sequential row identifier, also known as the “control number.” CVI-COMPANY - (numeric, 4; ABS = CORP_ID) - constant for all records CVI_VENDOR-IN - (alpha-numeric, 9, ABS=AP_NO) - Vendor Code/ID in data imported from ABS. CVI-VENDOR - (alpha-numeric, 9) - Vendor Code, validated as being the correct Vendor Code in Lawson CVI-INVOICE-IN - (alpha, 22, ABS=INVOICE#) - invoice number as entered in ABS, and in original import data. Null if the invoice was entered directly. CVI-INVOICE - (alpha, 22) - invoice number for export to Lawson; default is the same as invoice-in value; allows for change during reconciliation process. CVI-VOUCHER-NBR - (alpha-numeric, 10, ABS=RO#XXXX) contains the RO number from ABS, plus unknown 4 characters Invoice Date $CVI-AUTH_CODE - (alpha, 3, ABS=REG_ID) - not used, may need to be stuffed with constant value. $CVI-PROC-LEVEL - (alpha, 3, ABS=REG_APPROCESSED) CVI-INVOICE-TYPE - (alpha, 1, blank for invoice, C for credit memo) CVI-INVOICE-DTE-IN - (numeric, 8, ABS=INVOICE_DATE) Invoice Date as shown in data imported from ABS. Null if the invoice was entered directly. CVI-INVOICE-DTE - (numeric 8) - invoice date for export to Lawson, default is the same as the invoice date-in. CVI-DESCRIPTION - (alpha, 30, ABS=RO#XXXX) CVI--BASE-INV-AMT-IN - (numeric 15. 2 decimals; sum all for this invoice; if invoice type = C, credit memo, the negative value in ABS is converted to a positive value for Lawson). - This is the Invoice Total Amount. Null if the invoice was entered directly. CVI-BASE-INV-AMT - (numeric 15, 2 decimals) amount exported to Lawson CVI-TRAN-INV-AMT - (numeric, 15, 2 decimals; same as CVIBASE-INV-AMT) CVI-REC-STATUS - (numeric, 1) - redundant field; pass-through from ABS. CVI-CVI-POSTING-STATUS - pass-through from ABS export file to Module export to Lawson. StoreID - M2 Store number; must be a StoreID in the Scheduled_Transfers table. VendorLocCode - Lawson Vendor Location ID, updated from lookup in vendor and vendor location tables. Not updated, and Vendor Match Flag set to no if multiple Locations with same name are encountered, i.e., lookup is unsuccessful. PaymentTermsCode - payment terms code at the time the invoice was imported, from the Vendor Location table for the vendor. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification DueDate - date on/by which the invoice is to be paid. ImportDateTime - date time stamp indicating when this invoice was imported from the ABS interface table. ImportFileName - file name of the invoice header file (not the distribution detail file) from which this invoice was imported. NotDefiniteDuplicateFlag - if No, indicates that the invoice is considered to be a duplication of a previously imported or manually entered invoice. Must have the same Vendor Code, Invoice Number, and Invoice Date to be a “definite duplicate.” Yes indicates that the invoice is not a definite duplicate of another. NotSuspectDuplicateFlag - if No, indicates that the invoice may be a duplication of a previously imported or manually entered invoice. Must have the same Vendor Code and Invoice number as another invoice, but different invoice dates. Yes indicates that the invoice is not a suspected duplicate of another. MatchedFlag - Yes indicates that either a person has physically, visually matched the invoice hard copy received from the vendor with data on a screen, or that a programmatic condition substituting for this matching process has been performed with a successful outcome. No indicates that this matching has not been done. DistributedFlag - Yes indicates that this invoice’s distribution detail is correct DiscountOKFlag - Yes indicates that this invoice’s discounts have been calculated and are correct. Set to Yes if the payment terms do not authorize a discount. No indicates that the automatic distribution calculation process run during import failed for any reason. VendorOKFlag - Yes indicates that the vendor ID value for this invoice is correct. No indicates that the vendor lookup during data import failed. OutPeriodCode – this is a single character code indicating either that the invoice’s date was within the current accounting period, or depending on the value of the code, was not. Regardless of the value, it does not prevent exporting the invoice to Lawson. Its value is set either by the data import program, or by the screen entry. The values are: o 0 = date within current period. o 1 = data import program determined that the date was not within the current period. o 2-9 – other values to be determined, selectable Page 33 Deleted - normally 0, if 1 indicates that the Invoice is to be deleted and not exported to Lawson. Deleted invoices only are transferred to the History tables. UserID – windows NT domain user ID of person performing the last update action for the invoice row. DateTimeModified - date time stamp for the last time this invoice was updated. Active_Invoice_Distribution (APCDISTRIB) table - this table contains one row for each GL distribution (detail line) to which the invoice amount is to be charged. It is initially populated by the import process. Some distribution rows in a set belonging to a single invoice will carry GL numbers for discount amounts, which may be negative values. In these cases, the GL number will indicate a sub-account. The rows are linked to a single row in the Active_Invoices table by the ActiveInvoicesID field . Fields include: RowID - unique, sequential identifier ActiveInvoicesID - row id for the invoice to which this distribution row is linked. GL Number - Distribution GL Account number CVD-COMPANY (numeric, 4, ABS=CORP_ID) CVD-VENDOR (alpha numeric, 9, ABS=AP_NO) CVD-INVOICE - alpha, 22, ABS=INVOICE_NUMBER) CVD-ORIG-TRAN-AMT-IN (numeric, 15, 2 decimals; $ Amount of distribution; value must be positive, credit memo Inv-Types are converted to positive values for Lawson. Null if the invoice was entered directly. CVD-ORIG-TRAN-AMT (numeric, 15, 2 decimals) - amount exported to Lawson; associated with the CVD-DIS-ACCT-UNIT and CVD-DISACCOUNT CVD-DIS-ACCT-UNIT-IN (alpha, 15 ABS=SHOP_NO) - value imported with data from ABS. Null if the invoice was entered directly. CVD-DIS-ACCT-UNIT (alpha, 15) - value for export to Lawson CVD-DIS-ACCOUNT-IN (numeric 6, strip off Sales ID, use only first 4 digits) - GL account number of distribution amount Null if the invoice was entered directly. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification CVD-DIS-ACCOUNT - (numeric, 4) - GL account of distribution amount, or GL number of discount amount’s GL account to be used in the export to Lawson. DateTimeModified - date time stamp for the last time this detail/distribution row was updated. DefiniteDuplicates – this table contains the search results of the definite duplication testing performed in the data import and validation process. It is stored so that the results of the search can be retrieved on screen and via Crystal Reports, without having to replicate the selection process, which may take an unacceptable amount of time/delay. One row is written for each Target Invoice returned by the search process, so a single Source Invoice may result in multiple Target invoices being returned. The fields are: RowID – unique, sequential identifier SourceInvoiceNo – Number of the source invoice, used to locate others. TargetTable – either A, indicating the invoice number was found in the Active table, or H, indicating it was found in the History table. ControlNo – control number of the Target Invoice, which physically may be in either the Active or History tables. StoreNo – store number where the invoice originated. ImportDateTime – date time stamp when the import process was run, i.e, when this source invoice’s duplicates were identified. SuspectDuplicates – this table contains the search results of the suspect duplication testing performed in the data import and validation process. It is stored so that the results of the search can be retrieved on screen and via Crystal Reports, without having to replicate the selection process, which may take an unacceptable amount of time/delay. One row is written for each Target Invoice returned by the search process, so a single Source Invoice may result in multiple Target invoices being returned. The fields are: RowID – unique, sequential identifier SourceInvoiceNo – Number of the source invoice, used to locate others. TargetTable – either A, indicating the invoice number was found in the Active table, or H, indicating it was found in the History table. Page 34 ControlNo – control number of the Target Invoice, which physically may be in either the Active or History tables. TargetInvoiceNo – invoice number as carried in the target invoice’s row data; may be not an exact match, due to the Start With search logic. ImportDateTime – date time stamp when the import process was run, i.e, when this source invoice’s duplicates were identified. History Tables - these tables are read-only, and store invoice data that has been successfully processed and exported to Lawson. It is used for reference purposes, since it contains both data values present in the originally imported data and the final values exported to Lawson. It is also used to detect potential duplicate invoices. History_Invoices (from APCINVOICES table) - this table contains all invoice “header” information, i.e., that occurs once per invoice. The rows are those invoices that have been imported from the ABS export/interface tables, but that have not yet been exported to the files for import to Lawson. Once exported to Lawson, the data is transferred to the History_Invoices tables. Associated with each row are a set of binary (yes/no) data fields (“flags”) that indicate the status of each invoice. When all status fields are “yes” the invoice is a candidate for exporting from the Module and importing into Lawson without errors. The status fields indicate unperformed steps or data error conditions. Some flags are set by the user, with most being under control of a program/process that determines what the condition should be. The tables fields include: RowID - unique, sequential row identifier, also known as the “control number.” CVI-COMPANY - (numeric, 4; ABS = CORP_ID) - constant for all records CVI_VENDOR-IN - (alpha-numeric, 9, ABS=AP_NO) - Vendor Code/ID in data imported from ABS. CVI-VENDOR - (alpha-numeric, 9) - Vendor Code, validated as being the correct Vendor Code in Lawson CVI-INVOICE-IN - (alpha, 22, ABS=INVOICE#) - invoice number as entered in ABS, and in original import data. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification CVI-INVOICE - (alpha, 22) - invoice number for export to Lawson; default is the same as invoice-in value; allows for change during reconciliation process. CVI-VOUCHER-NBR - (alpha-numeric, 10, ABS=RO#XXXX) contains the RO number from ABS, plus unknown 4 characters Invoice Date $CVI-AUTH_CODE - (alpha, 3, ABS=REG_ID) - not used, may need to be stuffed with constant value. $CVI-PROC-LEVEL - (alpha, 3, ABS=REG_APPROCESSED) CVI-INVOICE-TYPE - (alpha, 1, blank for invoice, C for credit memo) CVI-INVOICE-DTE-IN - (numeric, 8, ABS=INVOICE_DATE) Invoice Date as shown in data imported from ABS. CVI-INVOICE-DTE - (numeric 8) - invoice date for export to Lawson, default is the same as the invoice date-in. CVI-DESCRIPTION - (alpha, 30, ABS=RO#XXXX) CVI--BASE-INV-AMT-IN - (numeric 15. 2 decimals; sum all for this invoice; if invoice type = C, credit memo, the negative value in ABS is converted to a positive value for Lawson). - This is the Invoice Total Amount. CVI-BASE-INV-AMT - (numeric 15, 2 decimals) amount exported to Lawson CVI-TRAN-INV-AMT - (numeric, 15, 2 decimals; same as CVIBASE-INV-AMT) CVI-REC-STATUS - (numeric, 1) - redundant field; pass-through from ABS. CVI-CVI-POSTING-STATUS - pass-through from ABS export file to Module export to Lawson. StoreID - M2 Store number; must be a StoreID in the Scheduled_Transfers table. VendorLocCode - Lawson Vendor Location ID, updated from lookup in vendor and vendor location tables. Not updated, and Vendor Match Flag set to no if multiple Locations with same name are encountered, i.e., lookup is unsuccessful. PaymentTermsCode - payment terms code at the time the invoice was imported, from the Vendor Location table for the vendor. DueDate - date on/by which the invoice is to be paid. ImportDateTime - date time stamp indicating when this invoice was imported from the ABS interface table. Page 35 ImportFileName - file name of the invoice header file (not the distribution detail file) from which this invoice was imported. OutPeriodCode – this is a single character code indicating either that the invoice’s date was within the current accounting period, or depending on the value of the code, was not. The values are: o 0 = date within current period. o 1 = data import program determined that the date was not within the current period. o 2-9 – other values to be determined, selectable Deleted - normally 0, if 1 indicates that the Invoice was deleted and not exported to Lawson. Deleted invoices only are transferred to the History tables. DateTimeWritten - date time stamp for when this invoice was transferred to the history tables. LawsonExportRunNo – run number field from the Lawson Export Log table row generated for the batch of invoices transferred from the Active tables to the History tables. ControlNumber –control number assigned to the invoice when imported into the Active Invoices table. History_Invoice_Distribution (APCDISTRIB) table - this table contains one row for each GL distribution (detail line) to which the invoice amount is to be charged. It is initially populated by the import process. Some distribution rows in a set belonging to a single invoice will carry GL numbers for discount amounts, which may be negative values. In these cases, the GL number will indicate a sub-account. The rows are linked to a single row in the Active_Invoices table by the ActiveInvoicesID field . Fields include: RowID - unique, sequential identifier ActiveInvoicesID - row id for the invoice to which this distribution row is linked. GL Number - Distribution GL Account number CVD-COMPANY (numeric, 4, ABS=CORP_ID) CVD-VENDOR (alpha numeric, 9, ABS=AP_NO) CVD-INVOICE - alpha, 22, ABS=INVOICE_NUMBER) CVD-ORIG-TRAN-AMT-IN (numeric, 15, 2 decimals; $ Amount of distribution; value must be positive, credit memo Inv-Types are converted to positive values for Lawson. M2 Automotive - ABS to Lawson - AP Interface Module Design Specification CVD-ORIG-TRAN-AMT (numeric, 15, 2 decimals) - amount exported to Lawson; associated with the CVD-DIS-ACCT-UNIT and CVD-DISACCOUNT CVD-DIS-ACCT-UNIT-IN (alpha, 15 ABS=SHOP_NO) - value imported with data from ABS. CVD-DIS-ACCT-UNIT (alpha, 15) - value for export to Lawson CVD-DIS-ACCOUNT-IN (numeric 6, strip off Sales ID, use only first 4 digits) - GL account number of distribution amount CVD-DIS-ACCOUNT - (numeric, 4) - GL account of distribution amount, or GL number of discount amount’s GL account to be used in the export to Lawson. DateTimeModified - date time stamp for the last time this detail/distribution row was updated. Page 36 data field in a table, along with its before and after values. What appears to the user as a single update action, may be reflected in this table as multiple rows, one for each field changed. This provides a complete audit trail for all user initiated changes in the data. All data is stored as text, except the Row ID, to allow simplicity and flexibility in the working of this table. The table’s fields are: RowID - assigned sequentially by the SQL data base, integer. Table - name of the table that was involved in the update action. FieldUpdated - name of the field updated. OldValue - content of the field prior to the update action. NewValue - content of the field after the update. UserID - user ID of the person performing the update. DateTime - date time when the update occurred. Activity_Log - this table contains one row for each user action within the module’s main window. These actions are defined as a change to a single Data Source Tables - these files are the format of the ABS generated Lawson import files that the data import process uses, and that the Lawson Export program generates. They are combined here for ease of reference. The differences are shown in the “when importing or exporting” notes. APCINVOICE - File format for Invoice Header record. These files are saved with the suffix of “.APT” and are comma-delimited. Many fields are not used, so exported data must have the correct number of commas to position those that are used correctly. Field No. Field Name 6 7 Not used CVIVOUCHERNBR Not Used $CVI-PROCLEVEL Not used CVIINVOICETYPE This is the actual format from the ABS documentation for the Lawson interface program. Shown here are only the fields that have actual data Field No. Field Name Type Size When Importing 1 CVICOMPANY CVI-VENDOR Not used CVI-INVOICE Not used Numer-ic 4 2000 AN 9 Alpha 15 2 3 4 5 When Exporting 2000 8 9 10 11 12 13 Not used Not used Type Size When Importing When Exporting AN 10 RO number RO Number Alpha 5 Store No Store No Alpha 1 Invoices = null Credit memo = c Invoices = null Credit memo = c M2 Automotive - ABS to Lawson - AP Interface Module Design Specification - March 8, 2016 Field No. Field Name Type Size When Importing 14 CVIINVOICE-DTE Numeric 8 4 digit year, month, day format; converte to SQL date format during import 15-19 20 21 22 23-72 Not used CVIDECRIPTION CVI-BASEINV-AMT CVI-TRANINV-AMT Not used Alpha Numer-ic 15, 2 Numer-ic 30 RO Number as “RO#9999 " 2 decimals 15.2 2 decimals When Exporting Export by convertin g SQL date to 4 digit year, month, day format, e.g., 20011115 for Nov 15, 2001 RO Number as “RO#999 9” 2 decimals 2 decimals APCDISTRIB File format- these files are saved with the suffix of “.APD.” Field No. Field Name Type Size When Importing When Exporting 1 CVDCOMPANY CVDVENDOR Not used Nume-ic 4 2000 2000 AN 9 2 3 Page 37 4 CVDINVOICE Not used CVD-DISTSWQ-NBR CVD-ORIGTRAN-AMT Not used Not used Not used CVD-DISACCT-UNIT CVD-DISACCOUNT Alpha 15 Numeric 4 Numeric 15.2 2 decimals 2 decimals Alpha 15 Store no Store no Numeric 6 Trim right most 0 off the end Numeric 4 14 15 CVD-DISSUB-ACCT Not used CVDDESCRIPTIO N Alpha 30 16-36 Not used 5 6 7 8 9 10 11 12 13 Ro number, as “RO#999 9” Ro number, as “RO#999 9”