The only point I WILL make at this juncture, is this:
Then you don't need a thirty-line table at all...but a numeric variable NumberOfToolSetsRented somewhere, that fluctuates between zero and thirty.
Um... get thee behind me? This is, IMO, a far WORSE solution, since you are now hard-coding minute details of the transaction INTO A FREAKING VARIABLE NAME. What was that about scaling up? I give it...six months before such a horrible hack would get taken back out of the code. Make an invoice object with a Qty property, maybe, but NumberOfToolSetsRented is going too far.