The Item structure contains count values, one of which is unused.
Provide better APIs to ask questions about which items are in a location. We already have all the database functionality, and many existing types that can answer these questions, but the API isn't really there.
sealed interface LocationMatch
record LocationExact(Location location)
record LocationAndDescendants(Location location)
record LocationAny()
sealed interface StockOccurrence
record StockOccurrenceSet(Location location, ItemSummary item, long count)
record StockOccurrenceSerial(Location location, ItemSummary item, String serial)
enum StockOccurrenceKind { SET, SERIAL }
anyOccurrence :: Set<StockOccurrenceKind>
anyOccurrence = Set(SET, SERIAL)
stockInLocationsCount : LocationMatch -> ItemMatch -> Set<StockOccurrenceKind> -> Long
stockInLocations : LocationMatch -> ItemMatch -> Set<StockOccurrenceKind> -> List<Page<StockOccurrence>>
Item repositing would be moved to stock repositing.