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:
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:
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:
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
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 entryThe 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.
product entry
inventory adjustment
order entry
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 IDSave 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.
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
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 IDThe 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.
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
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 IDThe quantity shipped will be a distributed in the following manner:
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
0 10% of the timeTo 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.
half the ordered quantity 40% of the time
all the ordered quantity 50% of the time
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