Colour and size custom fields on invoices

We would like:

Configurable custom fields at line
item level for invoices and purchases.

One field having a selectable drop
down list (colours) the other an integer entered by the user.

Custom fields do not affect price. Price
is tied to product code

To explain: we buy in an item in 6.5m
lengths, it is then coloured in one of eleven colours. It can then be sold in
any length up to 6.5m as required by the customer. Each cut length leaves an
offcut which may then be cut to a different size again, and so on with a
varying amount of waste at the end of the process. We do not inventory the
incoming product or measure the off-cut. Because
of other factors involved we do not sell the product by the mm. It is priced in
a matrix of length increments. The increment is included in the product code.

Eg
item A-200 represents a 2000mm length, the next item in the matrix is A-225
(a 2250mm length). If a customer requires 2100mm he is supplied exactly 2100mm which
is invoiced as a line item using the A-225 code so that a certain amount of
waste is recovered.

We wish to be able to record
against the line item at invoice or sales order time a colour from a drop down
list (“Label“ custom field) and an actual supplied length.(integer custom
field)

We then want to be able to construct
a report showing total units of A-200 invoiced and total mm actually supplied,
all subtotalled by colour. We can then properly monitor our pricing to assess
waste recovery.