You can also do some fairly broad categorisation by assigning different items to different sales nominal codes. Although this method is not really suitable if you’re trying to report on many different product lines.
Projects also offer a nice way to offset sales income with expenses although as @Parker1090 mentions, the reporting cannot be set for individual items in an invoice, only the invoice as a whole. Project adjustments are planned but we’re quite busy on a number of other big projects right now.