The idea that I think both @Scott_Sauyet and I have is that these details should not be “IN” the grocery shopping (transaction) tiddler.
Each line item (detail within a transaction) should be a tiddler. You can do various things to make those tiddlers less visible if you like (put them in system namespace, starting with $:/
so they don’t clutter your sidebar, for example). You can even generate and access them from within the 2024-04-19-grocery-purchase transaction tiddler. But if you want these line items to have any “dimension” at all, you shouldn’t be trying to fit those details into a gerrymandered complex field title. Each line item ought to have its own tiddler, with fields for whatever you care about (quantity, price, size, brand, tickler-date-to-repurchase, whatever!).
By making a tiddler for each line item — even if you only interact with these tiddlers through a “portal” within the grocery trip tiddler — you enable yourself to handle their details with grace and flexibility. Fields are the right place for details that have a predictable role, and that you want to be able to compare, calculate with, and display (or hide) at a granular level.
One simple approach would be to have your “1 chocolate marble cake, 700gm” tiddler get a name that is just a system prefix followed by timestamp, because you won’t need to interact much with the tiddler itself. Description, quantity, size, and whatever else you care about go into fields.
When you generate the line-item tiddler (ideally with a button that automates the right setup), make sure it gets tagged with the shopping-trip transaction tiddler to which it belongs. (Or put that transaction connection in some other dedicated field, if you prefer to keep your tag array cleaner.)
WITHIN your shopping-transaction tiddler, you then include (ideally with a view template or cascade condition) a table that provides an overview of what was purchased (maybe a Shiraz dynamic table, if you like benefitting from wheels that other people have invented and refined well).
The table just pulls up whatever fields you care about, from all the line-item tiddlers within today’s batch. Want to add a new level of detail later (brand? flag-for-return? star-rating?)? Might you decide later to stop having to track some of those details? No worries, if they’re just fields!
Is that enough to get you started?