Variants and a stock ledger
Size, colour and the like, up to three options; every combination has its own SKU, price and stock. Every movement — sale, cancellation, stocktake, receipt — goes in the ledger, and a typed stock figure is recorded as a stocktake difference.