DPSproject  Requirements Specifications 2000-2001

Phase 1.0 as represented by original code

The following is the first phase increment for the project. This extends the attributes for an order and an invoice. If you are not sure about the requirements or have other questions, ask the system owner (Customer Grossman) for clarification or additional information.

Your assignment is to:


This phase is minimally represented by the skeleton Java code you were given.

An order consists of the following information:
order ID  -  unique identifier for the order  (system generated)
customer ID - unique identifier for the customer (system generated)
order date - date order is entered
requested ship date - (optionally) specified by the customer at order entry, modified by system
cancel date - (optionally) specified by the customer at order entry, modified by system
bill to address - bill-to-name (optional), street, city, state, zip
ship to address - ship-to-name (optional), street, city, state, zip
billing terms - currently 3 options: NET 10 days, NET 30 days (default), EOM 10 days
order line(s):

item ID - unique identifier for the item
item description
item quantity
item price


Date formats should be mm/dd/yyyy

An invoice contains all the data on the order except for requested ship date and cancel date, plus the following:
system-controlled invoice ID
extended price - quantity * price
invoice date - date the order was shipped
payment due date - the invoice date plus the terms days, e.g. 10 or 30
invoice total - sum of extended prices

Note: Assume for this phase that the order is shipped on the requested ship date.

Business Rules:


 

Phase 1.1 to be completed separately by teams as indicated below:

    Teams 1 and 3 using XP pair programming at same site
    Teams 2 and 4 using XP pair programming remotely

    Assigned 10/07/2000            Due 10/28/2000

Your assignment is to:


The following requirements specification provides a Customer maintenance function to permit the addition and editing of Customers in the order processing system.

Customers

The Customer contains the following attributes:

The CustomerID is a unique identifier for a customer. It is taken from a system controlled sequentially numbered sequence.
The BillToAddress must be specified. If the ShipToAddress is not specified it defaults to the BillToAddress.
If the Bill-to-name or Ship-to-name is omitted use the Customername.
There is a DefaultBillingTerms. If  BillingTerms is not specified for a customer, use DefaultBillingTerms. Assume the default is NET 30 for now.

All transactions are to be edited and appropriate error messages output. The editing constraints are that entries are present if required to be.

The maintenance functions to be supported are:


The suggested GUI:
 


 
 
 

Phases 2.1 - 2.4 to be completed separately by teams as indicated below:

        Assigned : 11/17/2000            Due: TO BE NEGOTIATED WITH CUSTOMER

Your assignment is to:
Receive stories from the Customer
PLAN!!!
    Estimate the stories
    Order the stories
    Get agreement from Customer
Design
    Update the class diagram - use CRC cards if necessary for new or modified classes
    Specify interfaces
    Publish the refactored design on the web
    Get approval from other affected teams and the BIG BOSS
Prepare for programming
    Assign XP roles
    Determine Pair Programming strategy (remote or face-to-face)
    Create test plan (assertions for junit)
Write junit test code
Write project code
 

Phase 2.1  Team 1

Modify Product so that there is an effective date for a price.
Modify the system so that the correct price from the Product is used according to effective date.

When a price is entered for a Product it must have an effective date. There can be up to two price-effective-date pairs for a Product. The effective date cannot be earlier than the entry date (today's date).
 

Phase 2.2  Team 2

Order processing need some modifications.

When the order item quantity is greater than the available inventory, the balance should be canceled.

When an order is entered, the price may be entered on the order. If a price is not entered on an order, use the price from the Product. The price to use is the one whose effective date is earlier than the order date and is the latest effective date earlier than the order date. For example, if the order date is 11/20/2000 and the two price-effective date pairs are 34.56, 10/1/2000 and 43.21, 12/1/2000 then use the 34.56 price. If the order date was 12/15/2000 then the 43.21 price should be used.
 

Phase 2.3  Team 3

Create GUI for Inventory maintenance

The required data for Inventory maintenance are the Product and the on-hand quantity available for sale. The Inventory record is created when a Product is created. THIS IS NOT A TASK OF THIS ASSIGNMENT. The GUI must accept a valid Product ID and a numeric integral quantity greater than or equal to 0. The quantity will overwrite the on-hand quantity in the Inventory record.

Note that the inventory records are a concept distinct from product records, and they serve a different purpose.
 

Phase 2.4  Team 4

Modify Inventory manager to use the Inventory record to return available to ship

When an order is to be shipped there must be enough on-hand inventory. The current version of the system assumes that there is always enough on-hand inventory available. Now there are have inventory records for each product that maintain how much is on hand. When told how much is to be shipped, the Inventory manager should return the amount that is available  (0 to the requested amount). This amount is to be shipped and must be deducted from available inventory.

When a new Product is created, an Inventory record must be created with zero on-hand quantity.

Inventory records must be created for existing Products. These should have zero quantity initially.


Current functionality as of 1/27/2001

customer entry
product entry
inventory adjustment (absolute)
order entry
ship (invoice) order upon entry - no persistent open-order database
ship what is available, cancel balance, deduct from on-hand
no maintenance (editing) of anything except inventory on-hand quantity


New functionality

Phases 6.1 - 6.4 to be completed separately by teams as indicated below:

        Assigned : 1/27/2001            Due: TO BE NEGOTIATED WITH CUSTOMER

Your assignment is to:
Receive stories from the Customer
PLAN!!!
    Estimate the stories
    Order the stories
    Get agreement from Customer
Design
    Update the class diagram - use CRC cards if necessary for new or modified classes
    Specify interfaces
    Publish the refactored design on the web
    Get approval from other affected teams and the BIG BOSS
Prepare for programming
    Assign XP roles
    Determine Pair Programming strategy (remote or face-to-face)
    Create test plan (assertions for junit) or just assertions that must be tested manually.
Write junit test code
Write project code
 

Phase 6.1  Team 1

Create an transaction processing menu (GUI) for accessing the system.

The menu should permit access to

customer entry
product entry
inventory adjustment
order entry
The entry screen should permit a "current date" to be entered. If this field is empty, use the current system date. Remember all dates are pure date, i.e., at 12 AM so there is no time (hrs., min. and sec.) This is the date that all transactions will use as the current date. All date processing already in the system must be modified to use this date.
 

Phase 6.2  Team 2

Create an open orders file
Create an open orders report (GUI?) and add function to the order processing menu (Phase 3.1)

All fields in the accepted order should be saved in the open orders file.
 

Phase 6.3  Team 3

Create a supplier stub to accept purchase orders

Receive PO from the Order Processing System (Inventory Manager??)
A purchase order will have

purchase order ID
purchasing customer ID (this is the order processing system as the customer not the customer on the sales order)
supplier ID (numeric ??)
supplier item ID (use sales order item ID)
quantity ordered
requested receipt date
Save the Purchase Orders in a file. The record will have all the fields in the PO transaction as well as a quantity shipped to be filled in at shipment.
 
 

Phase 6.4  Team 4
 

Create purchase order

When a sales order is entered, a Purchase Order should be created for each item on the sales order.

A purchase order will have

purchase order ID
purchasing customer ID (this is the order processing system as the customer not the customer on the sales order)
supplier ID (numeric ??)
supplier item ID (use sales order item ID)
quantity ordered
requested receipt date
The requested receipt date is set to the requested ship date on the sales order minus 1 day. For example, if the requested ship date on the sales order is 1/26/2001, the requested receipt date on the PO is 1/25/2001. WATCH OUT: if the requested ship date on the sales order is the first day of a month, the requested receipt date on the PO is that last day of the prior month. Don't forget leap years and if the requested ship date is the first day of a new year, the requested receipt date on the PO is Dec. 31 of the prior year.
 


Phases 7.1 - 7.4 to be completed separately by teams as indicated below:

        Assigned : 2/27/2001            Due: TO BE NEGOTIATED WITH CUSTOMER
 
 

Phase 7.1  Team 1
Create driver to run the PO Receivings and sales order shipping from the last processing date to the new current date entered on transaction menu

The system maintains the last processing date. When the transaction entry menu executes it contains a new current date (entered or system generated). Before any other transactions are processed all supplier receivings and sales order shipments are processed in date order.

For process date = (last process date + 1)  to new current date
  receive from supplier all PO's requested receipt date =  process date
  ship all sales orders with requested ship date = process date

Save last process date as the new current date.
 

Phase 7.2  Team 2
Receive shipment from supplier and update inventory on hand quantity

Receive the receiving transaction and update the inventory on-hand quantity.
 

Phase 7.3  Team 3
Modify supplier "stub" to ship purchase orders

The supplier will return a receiving transaction containing

purchase order ID
purchasing customer ID (this is the order processing system as the customer not the customer on the sales order)
supplier ID
supplier item ID
quantity shipped
delivery date
The quantity shipped will be a distributed in the following manner:
 0 10% of the time
half the ordered quantity 40% of the time
all the ordered quantity 50% of the time
To do the distribution, compute a random number between 1 and 10. If the value is 1 the quantity shipped is 0. If the value is 2 -5, the quantity shipped is 50% of the ordered quantity. If value is 6-10, ship the entire quantity. The balance of the purchase order should be canceled.

Mark the PO as shipped and enter the quantity shipped in the PO record.
 
 

Phase 7.4  Team 4
Ship (invoice)  sales order due to be shipped on current date and update on hand inventory quantity

Modify existing system to create the invoice when the ship sales order transaction is received. The ship (invoice) transaction will contain the date to use as the invoice date.
 
 

Additional tasks to be assigned as teams complete their assigned tasks