I finished the code for my sample Sheets app, a Pizza Shop.
It turned out to be more than I bargained for, in scope.
Here's the source, and some screen shots ...
APizzaSheet.aia (37.7 KB)
Initial order entry requires a name, and logs the time.
A List Picker lets you pick from the Menu, without duplication.
An Item level Add button completes the Add operation.
Order Item Data is kept in a separate sheet, tied to the corresponding Order in the OrderData sheet by Order RowID, the row number.
Using the row number as a foreign key from the item level key forces us into a zero-delete scheme, where the deletion is done by a Manager at end of day or week. To limit calls to Google Sheets, the deletion is done by columns (a fixed number of calls ~15) instead of by rows, and the headings of the two emptied out tables are replaced afterwards.
A parallel set of ListViews provides access to Order Items, at the Order level and at the Unfilled category level:
The top level menu of the app has an option for a counterman to see all the items he has yet to fill. Selecting an item brings up the rest of the order that contains that item.
A Management branch of the top level menu offers a sales summary query and periodic cleanup of the data.
(I did not bother cleaning up the Sales Summary data.)
I relied on Google Sheets SQL to do my grouping and summarization.
It would have been nice to use my headers for the SQL instead of the column letters, but I could not get that to work.