All this solution only solve one half of the problem, which is input. But there's also the other half which is marking them as you use the items. Yet another part which also needs to be considered is the separate input for the expiration tracking. The latter may be solvable if you approximate lengths for each product in a database, and you assume that the product you bought is starts at 0.
But yeah, even if you can simplify the first part as your post describes, there's still a lot more work to maintain the data beyond that.
But yeah, even if you can simplify the first part as your post describes, there's still a lot more work to maintain the data beyond that.