MacroHard's Overall Design Document for BCI Project


Table of Contents:

Executive Summary and General Description:

Main Window Documentation:

Customer Information Interface Specification:

Order Information Interface Specification:

Product List Interface Specification:

Route List Interface Specification:

Database Model:

Glossary:

Screen Snapshots:

Editors:

HTML:


Table of Contents:



Search for Product:

This window is opened by clicking on the [Search] button on the Product List window. The purpose of this window is to allow users to locate a specific product in the product list if they already know all or part of the product's name or ID number.

Window Title: Search for Product



    Text in window: "Enter a Product Name and/or Product ID# to search for:"
    Button: [Help]
      Function: User clicks on this button to access the on-line help facility.
      Bad input: none
    Button: [Done]
      Function: User clicks on this button to execute the search with the given parameters (in the Name and Product ID fields). The first record in the Product List that matches the given parameters will be at the top of the screen when the Search for Product window closes.
      Errors: Bad input in the Product ID field will be detected at this point. If bad input is detected, the Search for Product window will remain open with the bad input highlighted, and an error message will appear, indicating to the user the problem encountered. For example, if the user enters a name in the Product ID field which is expecting a number, an error message saying "Invalid Product ID Number" will be shown to the user. If no matches are found, the Product List window will reappear with the first record at the top of the screen.
    Button: [Cancel]
      Function: Clear data in entry fields and return to Product List window without any changes to the position in the list.
      Bad input: none
    Entry field: Name
      Function: User enters a string of characters to search for in the product list.
      Type of input: character, not case sensitive
      Default value: blank
      Bad input: none
    Entry field - Product ID
      Function: User enters a string of numeric characters to search for in the product list.
      Type of input: numeric characters only (0-9)
      Default value: blank
      Bad input: non-numeric characters
      Assumptions:
        1. If no matches are found, the first record in the current product list will be at the top of the list when the search is executed. An error window will appear to let the user know that no matches were found.
        2. If multiple matches are found, the first matching record will be at the top of the list when the search is executed.
        3. It is considered a match if the value entered to search on is a substring of the value in the list. For example, if the user enters "Ab" in the Name field, the first product starting with "ab" would be returned, even though "ab" may not be the entire name of the product.
    Help:
      1. Search by name for a product:
        Enter all or part of a name in the Name field, and click on the [Done] button. This will return you to the Product List window with the first matching product at the top of the screen.
      2. Search by product ID:
        Enter all or part of the product ID in the Product ID field, and click on the [Done] button. This will return you to the Product List window with the first matching product at the top of the screen.

Filter Product List:

This window is opened by clicking on the Filter button in the Product List window. The purpose of this window is to allow users to restrict the products shown in the Product List window to those products which match certain types or prices.

    Title: Filter Product List



    Text in window: "Search for products with the following attributes:"
    Button: [Help]
      Function: User clicks on this button to access the on-line help facility.
      Bad input: none
    Button: [Done]
      Function: User clicks on this button to execute the filter with the given parameters (in the Type and Price fields). The Filter window will disappear, returning the user to the Product List window. The items in the list will now be only those items matching the criteria specified in the Filter window. The items will be in the same order as they were before the filtering, with only those unmatching items removed.
      Errors: Bad input in the Price field will be detected at this point. If bad input is detected, the Filter window will remain open with the bad input highlighted, and an error message will be displayed. For example, if the user enters "aaa" in the price field, an error message will appear saying "Invalid price. Please try again, with a number in price form: (ie "0.00")". The user will then be given the oportunity to change the field to a valid number. If no matches are found, the Product List window will reappear, with no products listed.
    Button: [Cancel]
      Function: Clear data in entry fields and return to Product List window without any changes to the position in the list.
      Bad input: none
    Entry field: Type
      Function: User selects the types of products that will not appear in the filtered list by clicking on the type in the list on the left, and then clicking on the right arrow button to move that item to the Filter list.
      Type of input: selections from a list
      Default values: select all
      Bad input: none
    Entry field: Price
      Function: The user enters upper and lower bounds for prices of products returned in the filtered list. If the field is left blank, then there is no restriction on the upper and/or lower bound.
      Type of input: numeric characters
      Default values: blank
      Bad input: input not formatted like a dollar value, eg. 19.99.9, 1.454, 1d, or lower bound is higher than the upper bound.
    Assumptions:
      1. Consecutive filtering operations will only affect the currently visible product list. For example, if a user filters out all products costing more than $25, and then filters out all products costing less than $20, the resulting list would contain only products costing between $20 and $25. In order to view a list of all products, the user can select "View All" from a menu in the Product List window.
    Help:
      1. Filter by price:
        To view products fitting into a specific price range, enter the lower bound and upper bound in the two fields labelled Price. To specify only a minimum price, leave the upper bound field blank, and to specify only a maximum price, leave the lower bound field blank. Click on the [Done] button to return to the Product List window with only the appropriate products listed.
      2. Filter by type:
        To remove products of a particular type from the product list, select the product type in the left box and click on the right arrow button to move that type to the Filter box. Any product of a type listed in the Filter box will be removed from the Product List window. Click on [Done] to return to the Product List window.
      3. Filter by type and price:
        Filters can be simultaneously by both type and price. Enter the parameters for price and type, and then click on [Done].
      4. Undoing filters
        To undo a filtering operation which has not yet been performed, click on [Cancel] to return to the Product List window with no changes made. To undo previous searches and view the entire product list, click on [Done] with no changes to the default values.


Route List Window

Route List Window


The Route List Window calculates and displays a list of places that the salesperson should visit, either to deliver orders or because the customer is expected to place a new order soon. From this screen, the user can choose which entries in the route list they wish to keep in the printed list. From the print window the user will be able print out information about the route list for that day in a variety of forms.

Entering the Window

Before opening the window, the program checks the date of the list in the Route List table to see if it is current (i.e. it was created earlier on the same day). If it is, then the list is displayed in the window (the format is described below). If the existing list is not current then the new route list is computed and displayed, and the database is updated to reflect the new date for the route list.

How the route list is computed:

    1) Delete old entries from the Route List table.
    2) Query the Order table for undelivered orders.
    3) Query the Order table for today's prospective customers (this is based on the expected next-order date - if it is five days or less after the current date, the customer is included on the list).
    4) Combine this information and put the resulting records in the Route List table.
    5) Update the stored date giving the last time the route list was computed.
    6) Produce the routing by sorting the information in the Route List table using the fixed order given by the sequence numbers of the sectors.

Screen Format

The screen format is broken down into two parts. These are the buttons and the display area.



Last updated 2 Apr 96
by Ryan McKay, Web Page coordinator for Supplier Group #1.