Technical writing/Making a bad requirement good/FredRequirementExercise

Invoices:

I-010 Clients must print invoices at the beginning of each month

I-020 Invoices contain records for the clients previous month's activity

I-030 The system must allow bulk printing

Parameters:

P-010 The parameters for selecting an invoice include:
 * Session for Bill Result (SFBR)
 * Individual subscribers
 * Personal account list
 * Reprint previously printed invoices
 * Date range

As an input parameter is a SFBR (session for bill result). Sometimes Customer Alpha needs to print invoices only for particular subscribers.

Invoices to be printed are chosen by a list of Personal accounts.

Sometimes it is necessary to reprint all invoices for a particular period of time (i.e. last year etc.).

One customer can have several contracts; each contract can have several personal accounts. So to print invoices of one customer it is necessary to use list of personal accounts.

If customer closes contract (usually other day then at date of billing session), then a hot-bill will be created and the regular bill created as well.

At the billing session close there runs a check-up for any hot-bills. For the personal account with a hot-bill there will be created a new shorter billing period for the regular bill, excluding the period of the hot-bill.

At the end of each month Client Alpha needs to print all hot-bills in one bulk procedure.

To fully satisfy these needs, it is necessary to create three new methods, which will extend the actual system.

These new methods will be called on DataBase level via DataBase link. Because it is impossible to transmit sys_refcursor via DataBase link, “types” should be used.