Technical writing/Making a bad requirement good/JanaPetrExercise

Invoices:

I-010: Customers must print invoices at the beggining of each month for the previous month

I-020: The system must enable bulk invoice printing for:
 * Invoices
 * Hot-bills

I-030: The system prints an invoice or a hot-bill for one date/time range

Parameters:

P-040: The system prints invoices according:
 * Session for bill result (SFBR)
 * Personal accounts
 * Period of time
 * Contracts:
 * All
 * Range of contracts:
 * Date/time range
 * Personal accounts

P-050: The system prints hot-bills according:
 * Session for bill result (SFBR)
 * Personal accounts
 * Period of time
 * Contracts

At the beginning of each month all clients (Customer Alpha, Customer Omega) print invoices for previous month. Customer Alpha uses bulk printing. 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 needed 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.