I think your first idea, copy from OptionShop to Shop, would be good.
I'd do a loop that copies one field, then moves to the next field. The number of field shouldn't matter then.
Why dont you create a script and show the users a dialog and what to bring the next record. Then you can take different amount of fields depending on Users choice in your script
Can you give an example of how you might loop that script to copy data?
Not sure how that solves the problem.
They might have standard cost for an oil change for one type of car vs another.
They would like to enter that data once (in my example in to the OptionShop table), then whenever they have a customer that is ordering that service, they want to select the service and have all the relevant data come in.
You only refer to fields. If this is all in one record, I'd recommend that you consider adding a related table of line items to use to list the items purchased in a portal. You can then set up a table of each of these common purchase sets and use Import Records to pull them into the line items table followed by replace field contents to link them to the current record on "Shop". But I am guessing quite a bit as to what you have set up and how you plan to use your solution.
I have a table that has many records that is for a car repair "Shop".
So if you come in to get an oil change (as an example), they would like to click a button that creates all the cost items for that service.
They may have 20 or 30 of these, and I am working with multiple dealers, so each has their own customized service and cost/detail (fields) associated with that service.